Sorted based on the number of comments given to others' PRs, but also showing comments on own PRs and other comments given.
[This page was last updated on Nov 07 2020]
@qwoprocks
(406 comments)1 (commented on others PR)
I'm not sure if >ins>
is the correct tag to use here? (And the closing tag should be >/ins>
right) From what I gathered online >ins>
is to underline some text in html to indicate it is an insertion, but there's not >del>
tag here, so I think it might be more appropriate to use either the >u>
tag for underlining or []()
syntax if its supposed to be a link
2 (commented on others PR)
I think we should retain the step of copying our jar file over to the folder the user wants to use as the home folder, as we'll need to do saving in a data folder as well
3 (commented on others PR)
There's inconsistency between this and the description of the help command below. Also, I think the help contents will be opened in a window and not a page?
4 (commented on others PR)
Refer to comment above
5 (commented on others PR)
Maybe we should change PHONE to PHONE_NUMBER, following the original format, for clarity
6 (commented on others PR)
Shows commonly used commands for TBM.
7 (commented on others PR)
* Role: In charge of deliverables and deadlines
8 (commented on others PR)
Following the format for client delete INDEX
, maybe add a short one line statement to explain what this command does?
9 (commented on others PR)
Same as prev comment, and there's also an extra newline here that I think would be better to remove
10 (commented on others PR)
The indexing is off here
11 (commented on others PR)
Indexing off here too
12 (commented on others PR)
* 1a. The list of clients is empty.
13 (commented on others PR)
Might want to change this to match the original "Finds clients whose names contain any of the given keywords.", and change n/NAME
to KEYWORD [MORE_KEYWORDS]
as the format section below mentions keywords
14 (commented on others PR)
* 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 and country are 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 Russia` will return `Hans Gruber`, `Bo Yang`, `Alice Katya`
15 (commented on others PR)
### Listing all clients: `list`
Shows a list of all clients in the address book.
16 (commented on others PR)
Finds clients whose names contain any of the given keywords, or whose country of residence contains any of the given keywords.
17 (commented on others PR)
I think we should just stick to either the abbreviation TBM or the full name in the headers, not both
18 (commented on others PR)
either that or perhaps change both back to the simple "User Guide" and "Developer Guide". I don't really see a need to have TBM in the title, as the whole website is already about TBM, plus we have introductions and our home page.
19 (commented on others PR)
Just to add on, I don't think the >ins> tag should be used here, as markup defines it as inserting something? e.g. here. >u> seems more appropriate if the intention is to underline the text.
20 (commented on others PR)
LGTM
21 (commented on others PR)
this.countryName = new Locale("", countryCode).getDisplayCountry();
I think its more intuitive to call this specific method
22 (commented on others PR)
private final String COUNTRY_NAME;
private final String COUNTRY_CODE;
private final ArrayList<Note> COUNTRY_NOTES;
From the convention guide: Constant names must be all uppercase using underscore to separate words. I'm not sure if countryNotes should be marked final
actually, since we are going to modify it in the addCountryNote
function.
Also, I feel that the notes should be stored in something like a LinkedHashSet, since we don't really want to add in duplicate notes, and its easier to check if its a HashSet.
23 (commented on others PR)
I feel like we shouldn't initialize countryNotes until it is actually needed. E.g. Only when the user actually adds a country note, or there are notes for this country in the save file. If not its unnecessary overhead, especially if there are many countries.
Not sure how the rest think @tankangliang @rtshkmr @LeeEnHao
24 (commented on others PR)
Constant names must be all uppercase using underscore to separate words.
Is there a need for this Map? From what I see, I think we can just keep the ISOCountry String array, then check if the entered String is inside, before initializing a new Locale with that String. This way, we won't have to keep so many country objects, since most of the countries likely won't be used.
25 (commented on others PR)
Constant names must be all uppercase using underscore to separate words.
26 (commented on others PR)
Constant names must be all uppercase using underscore to separate words.
27 (commented on others PR)
Ah ok nvm I think can just stick with this for now. I was thinking of something else to prevent the unnecessary creation of objects, but this HashMap is still necessary for it, my bad.
Btw can change the HashMap to Map, so that we standardize
28 (commented on others PR)
Hmmmm seems like by constant
they mean static final only. Static only or final only aren't counted as constants, even though one of the examples in the website has an example of final only variables being set to all caps + underscores.
No need to change bah
29 (commented on others PR)
Would be better to standardize with the other commands, for example the ClientFindCommand
.
30 (commented on others PR)
Btw, ClientFindCommand
doesnt have requireNonNull(predicate)
, I think can just add it in there too
31 (commented on others PR)
There needs to be a javadoc comment here. (All public classes should have javadoc according to the textbook)
32 (commented on others PR)
javadoc comment
33 (commented on others PR)
requireNonNull
34 (commented on others PR)
Might want to standardize with other equals methods. Basically these 3 parts: short circuit if same object
, instanceof handles nulls
, and state check
. Can look at ClientEditCommand for an example
35 (commented on others PR)
Maybe can add extracting out the messages into a static final string into the TODO: better messages
, in case we forget
36 (commented on others PR)
javadoc comment
37 (commented on others PR)
javadoc comment
38 (commented on others PR)
Might want to add a TODO here
39 (commented on others PR)
This whitespace is little bit weird lol, but might just be my personal preference
40 (commented on others PR)
here too
41 (commented on others PR)
Might want to change the predicate name to ClientCountryMatchesInputCountryPredicate for clarity?
42 (commented on others PR)
might wanna change this equals to match the 3 step thing
43 (commented on others PR)
Probably should calculate and return the hashcode using noteContents, since I think Note is already being used hashed objects
44 (commented on others PR)
Would suggest changing this to isValidCountryCode, for clarity
45 (commented on others PR)
Hmmm I was thinking that this CountryManager class holds all Country objects, while every other class should be holding references to these objects instead of any new Country() object. That way, the class themselves should be able to check if the Country has any notes, and this method would not be needed.
46 (commented on others PR)
Can help to update the parser names for the delete and find command?
47 (commented on others PR)
Should probably add in a hashCode() function just in case
48 (commented on others PR)
Actually for this toString, should we be returning countryName instead? Maybe can add a comment to address why we're returning countryCode.
49 (commented on others PR)
The whitespace is off
50 (commented on others PR)
Add a comment for standardization
51 (commented on others PR)
// multiple countries - last country accepted
52 (commented on others PR)
not sure about that, but later that guy forget lmao
53 (commented on others PR)
I think we should just do it now man. From java docs: Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
54 (commented on others PR)
Yeah, but usually the purpose of the toString is to return a more "human readable" format of the object, so maybe countryName would be a better choice for the return value.
55 (commented on others PR)
LOL ok then just fix it in that issue bah
56 (commented on others PR)
Would be slightly clearer if you changed the variables names to SMALLEST_NEGATIVE_OFFSET and LARGEST_POSITIVE_OFFSET imo
57 (commented on others PR)
Not sure why this sys print is here
58 (commented on others PR)
Add new tests for timezone pls
59 (commented on others PR)
We should catch NumberFormatException here, in case people enter a number that is longer than what an int can hold
60 (commented on others PR)
Extra new lines, and I think the javadoc can be added already right
61 (commented on others PR)
Would be better if MESSAGE_USAGE is moved upwards for organization purpose, so that public static final
is above private static final
62 (commented on others PR)
Also, its hard to read when the lines are separated so much with the random comment also, would suggest this:
(must be a positive integer should also be moved to the description, not inside the parameters)
Rmb to import PREFIX_NOTE
+ "Parameters: INDEX " + PREFIX_NOTE + "NOTE_STRING\n"
+ "Example: " + COMMAND_WORD + " 1 " + "client note content";
63 (commented on others PR)
I think everything has to go through model, as it is being used for UI I think
64 (commented on others PR)
This variable doesn't seem to be used, since you already removed the redundant code
65 (commented on others PR)
agree with rayson
66 (commented on others PR)
Would be good to remove the line break for readability
67 (commented on others PR)
Would be good to move this down, after the if statement
68 (commented on others PR)
Probably would be good to add a javadoc comment for this method as well
69 (commented on others PR)
There is a need to implement the hashCode function, since note is being used in a hashSet.
Could you also change the equals method to match the 3 step thing? (1. short circuit if same object. 2. instanceof handles nulls 3. state check)
70 (commented on others PR)
There's like extra newlines here and above as well
71 (commented on others PR)
Extra newline
72 (commented on others PR)
I would suggest that this is changed to a LinkedHashSet, as we will want the order of the notes to remain the same as the order they were added. HashSet does not guarantee order
I believe the country notes are also using LinkedHashSet
Also, I think it would be better if the clientNotes was initialized only if the client has notes, probably can add a TODO here to optimize this.
73 (commented on others PR)
I think this variable still isn't being used
Other than that, LGTM
74 (commented on others PR)
public String getInputCountryStringRepresentation() {
Better to have descriptive function names without abbreviations imo
75 (commented on others PR)
Probably can be on the same line for clarity
76 (commented on others PR)
Would be better to move this above MESSAGE_DUPLICATE_COUNTRY_NOTE so that the public static final variables are tgt.
77 (commented on others PR)
For this, it would be more concise to just use the overloaded constructor of ArrayList ArrayList(Collection>? extends E> c)
to make the copy of the filtered client list
Either that or just initialClientList.addAll()
78 (commented on others PR)
Would it be better to use an assertEquals
here?
79 (commented on others PR)
This can be moved out of the loop I think
80 (commented on others PR)
The assertTrues and assertFalses here can probably be changed to assertEquals and assertNotEquals for better clarity
81 (commented on others PR)
The assertTrues and assertFalses here can probably be changed to assertEquals and assertNotEquals for better clarity
82 (commented on others PR)
Ah ok I missed that
83 (commented on others PR)
I think it would be better if clientParser accepts a Client instead of a generic Object, then do the casting here. This way, we wont have to do the casting + assertion inside clientParser.
84 (commented on others PR)
Should these have more descriptive names?
Also, should include param/return tags in javadoc for this method
85 (commented on others PR)
If this is a temporary method, should add in a TODO somewhere here to remove after its not needed. This method looks very un-OOP-like lolol
Should include params and return tags also in this javadoc
86 (commented on others PR)
This method needs more explanation using comments/better descriptive names. For example, what is start to end order? Why is there the Math.min with the magic literal 14?
Would suggest extracting out the 14 as a private final static var
Also, I think it should be String... args
and not String ...args
? At least that's the format google java format uses
87 (commented on others PR)
Sys.print shld be removed. Also, better explanation should be given in the comments/javadocs, and the variable names should be more descriptive. For example, what happens in the bigger picture if there is no null field that can be set?
88 (commented on others PR)
public class WidgetModelManagerTest {
Also, extra newlines above this can be removed
89 (commented on others PR)
Naming of test functions should follow the format
90 (commented on others PR)
Naming of test functions should follow the format
91 (commented on others PR)
test functions should follow the format: featureUnderTest_testScenario_expectedBehavior()
e.g. sortList_emptyList_exceptionThrown() getMember_memberNotFount_nullReturned
92 (commented on others PR)
test functions should follow the format: featureUnderTest_testScenario_expectedBehavior()
e.g. sortList_emptyList_exceptionThrown() getMember_memberNotFount_nullReturned
93 (commented on others PR)
Also, probably should make all the tests public void to standardize
94 (commented on others PR)
I feel like optional isn't needed in this file? It would be clearer if you do divs[X] == null ? "" : divs[X]
95 (commented on others PR)
Is this sysprint leftover from debugging? Other than this, LGTM
96 (commented on others PR)
This should be an assert / exception instead, since our countryNotesMap already contains all possible countries, and if there is a country not contained in our map, it should not have been created in the first place
97 (commented on others PR)
This should be an assert / exception instead, since our countryNotesMap already contains all possible countries, and if there is a country not contained in our map, it should not have been created in the first place
98 (commented on others PR)
* SUGGESTION_TYPE must be one of the following: `frequency`, `available` or `contract`
99 (commented on others PR)
maybe change to command word suggest
instead? Make it seem more like normal english
100 (commented on others PR)
should extract these strings as static final vars
101 (commented on others PR)
Should add a TODO here to do something in the execution
102 (commented on others PR)
I think it's fine to leave it as a class for now, since if we change it to an enum it might be hard to integrate. Maybe can just KIV as a TODO.
103 (commented on others PR)
This needs to be updated to the actual message constraints for note. Commands like "client note add 1 nt/" causes this to appear in the response box, which is a bug.
Would suggest a simple "Note should not be blank"
104 (commented on others PR)
why are these protected
? I couldn't find any other classes in the same package using them
105 (commented on others PR)
Should return an unmodifiable set instead.
106 (commented on others PR)
Since the equality checking was updated to include hasSameTags, the hashCode should be updated to ensure the tags are hashed as well, to maintain the contract between the equals and hashCode method.
107 (commented on others PR)
Should return unmodifiable objects. Also, getCountryNote
doesn't seem to be used, will it be used in a later commit?
108 (commented on others PR)
This doesn't seem to be called in the program, will it be added in a later commit?
109 (commented on others PR)
I think it would be better if we did a new ClientBuilder(ALICE).build();
. The ALICE client itself should not be modified as it may affect other parts of the testing unexpectedly.
110 (commented on others PR)
void initMapFromClients_addClientWithTaggedNotes_success() {
This method doesn't seem to return a boolean, so success
should be used instead. Or you could change it to doesNotThrowException
. The other 2 methods below also need their method names updated, returnsTrue
should be <expected outcome>
.
111 (commented on others PR)
Will need to add more tests, but can do in a separate issue probably.
112 (commented on others PR)
Not sure why only this variable is static? Could probably make all of them just final
.
113 (commented on others PR)
Should probably test the other methods and constructor as well, but can be done later in a separate PR as its not that important for now.
114 (commented on others PR)
Same comment as in TagNoteMapTest.java
115 (commented on others PR)
Is this needed lol
116 (commented on others PR)
Same issue for this, refer to TagNoteMapTest.java
for the comments on test method naming. For stuff that throws exception, the format should be ..._throwsXXXException()
.
117 (commented on others PR)
Is this needed?
118 (commented on others PR)
Should not have a newline here
119 (commented on others PR)
Should probably change this to tagSet.
120 (commented on others PR)
should probably requireAllNonNull here.
Also, is there a need for this method to be public? It seems to be only used here
121 (commented on others PR)
This doesn't seem to be used, is it in a later commit?
Also, should requireAllNonNull here
122 (commented on others PR)
Should do this todo, if not the method name becomes confusing.
123 (commented on others PR)
* @param countryNotes The set of countries, each containing their notes and associated tags.
124 (commented on others PR)
* @param clients The list of clients, each containing their notes and associated tags.
125 (commented on others PR)
* Initialises the TagNoteMap from a list of clients.
126 (commented on others PR)
* Initialises the TagNoteMap from a list of countries.
127 (commented on others PR)
Should untagged
tags be added to the note?
128 (commented on others PR)
agree with rayson, also maybe you can have a static final tag object already created in the Tag class, then your ParserUtil can just find Tag.UNTAGGED
129 (commented on others PR)
+1
130 (commented on others PR)
Change this to a todo pls, if not we'll forget to remove it
131 (commented on others PR)
remnants of debugging?
132 (commented on others PR)
Done
133 (commented on others PR)
Done
134 (commented on others PR)
Done
135 (commented on others PR)
Removed the other duplicate call
136 (commented on others PR)
Would suggest adding a requireNonNull / assert != null here just in case. Also, what happens in execute if list.size() == 0?
137 (commented on others PR)
Actually, looking at this, I would suggest implementing a compound predicate instead of having a list. So maybe something like Predicate>Client> combinedSuggestionTypePredicate = (client) -> suggestionTypeList.stream().map(suggestionType -> suggestionType.getSuggestionPredicate()).reduce(true, (x, y) -> x.test(client) && y.test(client));
^I didn't test this, but I think it should be correct
138 (commented on others PR)
Should have an equals and hashcode method, so as to standardize with other predicates, and also enforce the contract between equals and hashcode. Since this class doesn't have any vars, we can just return a constant int for hashcode, and have equals return true as long as other class is instanceof this one
139 (commented on others PR)
Maybe can just put the assert false and return null in the default block? I think it would make it cleaner
140 (commented on others PR)
Is this method needed? Is it possible to change other parts of the code so we use the withTimezone(String timezone)
method instead?
141 (commented on others PR)
shld add new line before this to standardize
142 (commented on others PR)
Too many new lines here
143 (commented on others PR)
Can add one more assert for just "client" without the space? Just in case.
Same for client note test below
144 (commented on others PR)
extra new line here
145 (commented on others PR)
Can rename this to clientCommandType? and the country one to countryCommandType?
146 (commented on others PR)
rename this to clientNoteCommandType?
147 (commented on others PR)
Small issue, but the number of equals on both sides aren't balanced
148 (commented on others PR)
what is this supposed to log? I can't really tell from the code itself, maybe make it explicit with a comment?
149 (commented on others PR)
why got copyright one lmao
also, should add a todo to change this
150 (commented on others PR)
Each note should display on a separate line, if not long/many notes will be hard to read
151 (commented on others PR)
If this path is not supposed to be reached, should just throw an exception here, logging it as info doesn't really make sense. You could probably log the stacktrace though
152 (commented on others PR)
I like the variables at the top, makes it easy to see, should probably standardize for the whole CSS (can do in a separate issue)
For the scrollbar I think we shouldn't hide it actually, and I feel that the border-radius are a bit too much, maybe can reduce, plus one of the boxes (the one that shows the command messages) isn't rounded, while the rest are
153 (commented on others PR)
For all the changes in this file, should probably standardize to no space before />
, since thats the format of all the fxml files
154 (commented on others PR)
Also, this help icon should be added to the top context menu (can do in a later issue)
155 (commented on others PR)
??? why is there this assertNotEquals here lolol
156 (commented on others PR)
are hamcrest and assertj used? Also, do we need to define JUnit as testCompile? (since we already defined it in our testImplementation/testRuntimeOnly)If we need to, should probably use the jUnitVersion variable instead of a string
157 (commented on others PR)
fx:id here is empty?
158 (commented on others PR)
The indentation here is a bit confusing, I think this and StackPane above should be indented 2 more spaces?
159 (commented on others PR)
I think the indentation and line breaks in this file are off. Can consider taking out the <children\ cwf="C:\repos\nus-cs2103\dashboards-base\contents\cs2103\tp-comments-panels.mbdf"> tag and leaving it as
>StackPane>
<Label...>
>StackPane>
so that clutter is reduced. </children>
160 (commented on others PR)
this comment seems to be half-written lol
161 (commented on others PR)
This variable doesn't seemed to be used
162 (commented on others PR)
I think a clearer and cleaner implementation of this would be .collect(Collectors.joining()).replace("[", "").replace("]", "");
instead of the reduce
163 (commented on others PR)
"standardise" should be "standardised"
164 (commented on others PR)
Where is this view
variable used ah
Cuz right now its just being set to WidgetModelManager but on the next line you return a new WidgetModelManager?
165 (commented on others PR)
Can change this to offset or offsetValue?
166 (commented on others PR)
why was this newline added lmao
167 (commented on others PR)
extra newline
168 (commented on others PR)
Should requireNonNull for country
169 (commented on others PR)
Actually, do we need this ? extends Note
? Would using List>Note> be better?
170 (commented on others PR)
probably can remove this newline
171 (commented on others PR)
* A high-level class responsible for mapping ISO3166 countries to their respective country notes.
172 (commented on others PR)
Actually I would suggest we move isValidCountryCode
method to Country class, then this class will be solely in charge of the relationship between Country and CountryNote (SRP), and the classname can be changed to CountryNoteManager I guess
173 (commented on others PR)
should we put an assert false
here?
174 (commented on others PR)
Should requireNonNull countryNote
175 (commented on others PR)
Should add simple javadoc for getTags()
176 (commented on others PR)
Small issue, this should be changed to getCountryNotes
177 (commented on others PR)
Random "The" here
178 (commented on others PR)
this sentence is half-complete, I think can just remove the "between"
179 (commented on others PR)
This png file doesn't seem to have been generated, not too sure why, can you try editing this a bit and pushing again?
180 (commented on others PR)
extra newline
181 (commented on others PR)
should have a [else]
182 (commented on others PR)
Need to update javadoc for this method to match the method behavior
183 (commented on others PR)
This variable isn't being used
184 (commented on others PR)
When will this be null? Should it just throw an exception when null if its not supposed to be null?
185 (commented on others PR)
Should the equals and hashCode methods be updated for this class?
186 (commented on others PR)
extra newline
187 (commented on others PR)
extra new line
188 (commented on others PR)
Can probably add one more test for the empty constructor then check if Instant.now() is > 1s away from the constructed LastModifiedInstant.
189 (commented on others PR)
ok shld add a comment then, just to explain why its different from the rest
190 (commented on others PR)
Suggestion: have a public static NULL_COUNTRY object = new Country();, and just use Country.NULL_COUNTRY to access it.
This is what I did for my ContractExpiryDate, so you're not creating new objects all the time, and imo it makes it clearer to the reader.
191 (commented on others PR)
When will this be the case? Should it be country == Country.getNullCountry()?
192 (commented on others PR)
This needs more tests, but can be done in a separate PR
193 (commented on others PR)
Maybe put the comment as a message
assert !(isClient && isCountryNote) : "isClient and isCountryNote cannot be both true";
194 (commented on others PR)
should require non null for country
195 (commented on others PR)
extra newlines
196 (commented on others PR)
Should probably change these tests to use the assertParseSuccess
and assertParseFail
static methods
197 (commented on others PR)
same comment as deletecommandparsertest
198 (commented on others PR)
* Gets the list of country notes in TBM as an unmodifiable observable list.
199 (commented on others PR)
* @return The unmodifiable observable list of country notes in TBM.
200 (commented on others PR)
Should this be country.equals(Country.getNullCountry())?
201 (commented on others PR)
These 2 functions don't seem to be used anymore
202 (commented on others PR)
these functions dont seem to be used
203 (commented on others PR)
Should this be paused for longer? I don't really notice it when I'm running the tests
204 (commented on others PR)
Should add a TODO to remove this test at the end if we find that it's useless
205 (commented on others PR)
Should probably remove this comment lol
206 (commented on others PR)
assertEquals(expectedId + ". " + expectedCard.getNoteContents() + " [" + expectedCard.getCountry() + "]",
207 (commented on others PR)
**Add country note** | `country note add c/COUNTRY_CODE nt/NOTE_STRING` <br> e.g., `country note add c/SG nt/has one of the lowest coporate taxes in the world`
208 (commented on others PR)
Think this can be changed to assertParseSuccess
209 (commented on others PR)
public void parseCountryCommands_addCountryNote_success() throws Exception {
210 (commented on others PR)
ah right my bad
211 (commented on others PR)
missing semicolon here
212 (commented on others PR)
-BACKGROUND: #393939; /*DARK GREY*/
-PANE_BACKGROUND: #000000; /*BLACK*/
-PRIMARY_COLOUR: #FF3333; /*RED*/
-PRIMARY_TEXT: white; /*WHITE*/
-ACCENT: transparent; /*NO ACCENT*/
-TERTIARY: #010012; /*DARK NAVY*/
213 (commented on others PR)
probably no need for this, since we're mutating the client directly
214 (commented on others PR)
spacing here should be 8 spaces i think
215 (commented on others PR)
Not too sure why these were reformatted, should probably set ur auto-formatter to reformat only when chars > 120 in a line, same for everything below. Also, I think the second line should be 8 spaces instead of 4, when doing a linebreak
216 (commented on others PR)
probably should name this modelClient instead of freshClient
217 (commented on others PR)
Should probably change this javadoc to match those of other toModelType()
functions like JsonAdaptedClient etc.
218 (commented on others PR)
Not sure why the formatting in this file changed so much also, would suggest to change ur autoformatter settings to match the project's code style, or not use the autoformatter, if not unrelated lines will keep changing in your commits
219 (commented on others PR)
formatting issues with this file, and for the testing of the JsonCreator, you can refer to JsonAdaptedClientTest.java, also it only appears to be not used because a third party library (jackson), and not our own code, is calling it, just like how the FXML notation variables don't seemed to be used
220 (commented on others PR)
these should be on the same line
221 (commented on others PR)
these should be on the same line
222 (commented on others PR)
no space between [
and {
223 (commented on others PR)
actually for client notes, is it possible to not store the countryCode in the first place? Seems a bit wasteful and unneeded. JsonCreator and toModelType() can probably handle the lack of the countryCode programatically. @raysonkoh any comments about this?
224 (commented on others PR)
@raysonkoh I think if we change it, we should change before the end of v1.3, since we have our bug-finding practice coming up and people can help catch the bugs if any. If we change after v1.3, we might introduce some bugs that no one finds until the final bug-finding test.
225 (commented on others PR)
the formatting is still abit off, it should be [ {
instead of [>br>{
and }, {
instead of },>br>{
226 (commented on others PR)
^
227 (commented on others PR)
extra new lines, also some formatting issues with this file, where lines >120 chars are being broken up for no reason, leading to changes in random lines.
228 (commented on others PR)
These 2 lines are >120 chars, they can be on the same line. Also, breaking it up at the first . makes it inconsistent with the rest of the code base, and harder to read.
229 (commented on others PR)
formatting, breaking a line up after =
makes it inconsistent with the rest of the code base
230 (commented on others PR)
can this be put on the same line
231 (commented on others PR)
same line?
232 (commented on others PR)
same line?
233 (commented on others PR)
probably can reformat here abit
234 (commented on others PR)
reformat
235 (commented on others PR)
reformat
236 (commented on others PR)
change back the indentation pls, supposed to be 8 spaces after the primary line, not 16
237 (commented on others PR)
lmao good catch
238 (commented on others PR)
wrong naming/enum? (available vs contract)
239 (commented on others PR)
small nitpick but can add the comments + the different class -> returns false thing
240 (commented on others PR)
extra newline
241 (commented on others PR)
assertThrows(ParseException.class, () -> parser.parse(" c/MY nt/ t/a"));
assertThrows(ParseException.class, () -> parser.parse(" nt/ c/MY t/a"));
Better isolation for testing no notes
242 (commented on others PR)
assertThrows(ParseException.class, () -> parser.parse(" c/RUS t/a nt/random string"));
assertThrows(ParseException.class, () -> parser.parse(" c/R t/a nt/random string"));
Same reason as below, also, should have a noCountryHasNote test method
243 (commented on others PR)
Should this be in a separate test function?
244 (commented on others PR)
tagNoteMap not being updated after setting the tags?
245 (commented on others PR)
@raysonkoh I think we can probably remove the model.updateTagNoteMapWithNote() and instead place it inside the function model.addCountryNote, since addClientNote is doing that as well. Then we can remove model.updateTagNoteMapWithNote() from the execute() function of both client note add and country note add, and make the method private in model
246 (commented on others PR)
there's 2 updateTagNoteMapWithNote here
247 (commented on others PR)
Can follow the format of the rest of the file and remove the parsesSuccessfully
248 (commented on others PR)
same as above, remove parseSuccessfully
249 (commented on others PR)
missing whitespace
250 (commented on others PR)
missing whitespace
251 (commented on others PR)
missing public
252 (commented on others PR)
should change to the behavior that the original client edit commands had
253 (commented on others PR)
missing newline
254 (commented on others PR)
extra newline
255 (commented on others PR)
an empty parseException would work, since this whole block is already inside a try catch, can add a comment to clarify
256 (commented on others PR)
No need to use this arePrefixesPresent function if we only have one prefix to check. Also should be either note string or tag prefix present
257 (commented on others PR)
what does pe
here do?
258 (commented on others PR)
should "nope" be removed?
259 (commented on others PR)
extra newline
260 (commented on others PR)
extra space added
261 (commented on others PR)
extra newline
262 (commented on others PR)
extra newline
263 (commented on others PR)
need newline here
264 (commented on others PR)
need newline above
265 (commented on others PR)
I think we should change it to -> lack of t/ results in the tags staying the same, but doing t/ replaces the tags, instead of adding a new tag. Similar to how client edit worked last time when we had tags.
Also, should there be an option to edit the country using c/
?
266 (commented on others PR)
should add notes about how the INDEX is obtained from the last view country notes list panel
267 (commented on others PR)
need more tests for this, but can be done in a separate PR
268 (commented on others PR)
Should this be deleted?
269 (commented on others PR)
Need some comments here, quite hard to understand what this code is doing.
Imo I think the constructor CountryNote(CountryNote note)
and the method setCountry
is not needed, instead we can just have a CountryNote constructor with content, country and tags, and then port the countryNoteToEdit fields over as needed.
Feels like that'll make the code much clearer.
Also, I think .remove for sets won't throw any exception even if that item isn't inside the set, so its safe to remove the contains check
270 (commented on others PR)
Can use the constructor i mentioned in CountryNoteEditCommand for simplification of this line
271 (commented on others PR)
I think indexOf can throw unchecked exception, so it would be better to do an assert contains before this line, and remove the assert after this line.
272 (commented on others PR)
Can probably use assertParseSuccess here
273 (commented on others PR)
Can probably use assertParseFailure here
274 (commented on others PR)
refer to comment in CountryNoteEditCommand
275 (commented on others PR)
refer to comment in CountryNoteEditCommand
276 (commented on others PR)
extra ;
assert hasCountryNote(oldCountryNote) : "old country note must exist in internal list";
277 (commented on others PR)
would be better / more in line with other tests to change all these Strings to static final and their names to all caps+underscore
278 (commented on others PR)
* `country note edit 1 nt/new government policy to support local development in cloud security t/contract` Edits the first country note in the last-viewed country notes panel to have the content "new government policy to support local development in cloud security" and a new tag "contract" in addition to the previous tags.
279 (commented on others PR)
should move final variables to below static final ones
280 (commented on others PR)
extra newline
281 (commented on others PR)
Can we change this to widgetViewBox.init()
?
282 (commented on others PR)
private void assertViewBoxDisplay(WidgetViewBox widgetViewBox , Client expectedClient) {
283 (commented on others PR)
should add public
in front of these two methods
284 (commented on others PR)
private class InteractionTerminal {
285 (commented on others PR)
I think this + CountryNoteCard class is not being used, safe to delete?
286 (commented on others PR)
I think this class + the fxml is not being used, safe to delete?
287 (commented on others PR)
extra newline
288 (commented on others PR)
* Returns the client to be displayed in the widget view box.
289 (commented on others PR)
* Sets the client to be displayed in the widget view box.
290 (commented on others PR)
probably can remove the @param
since there's no description, and adding a description would be redundant
291 (commented on others PR)
probably can remove this @param
292 (commented on others PR)
probably can just remove this @return
293 (commented on others PR)
* Static factory for use in GUI testing.
Actually, not sure if there's a need for this static factory since we can replace this with new WidgetViewBox(FXCollections.emptyObservableList())
in our test functions
294 (commented on others PR)
* Updates the current client of the widget view box to the given client.
295 (commented on others PR)
* @param client The new client to display.
296 (commented on others PR)
should this be here?
297 (commented on others PR)
don't think the stream() here is needed
298 (commented on others PR)
extra newline
299 (commented on others PR)
no need for contains, since set.remove won't throw any errors/exception even if the tag is not inside
300 (commented on others PR)
Can remove TypicalClients.
Also, no need for new ArrayList
since Arrays.asList already returns a list
301 (commented on others PR)
should only have one newline
302 (commented on others PR)
can't we already remove it? Since its not being used anywhere in the whole codebase
303 (commented on others PR)
what does the pe do?
304 (commented on others PR)
private Model model;
Already done in setUp
305 (commented on others PR)
If this is needed to be called everytime we create a modelManager, shouldn't we just put it inside the constructor?
306 (commented on others PR)
same comment as above
307 (commented on others PR)
same comment as above
308 (commented on others PR)
same comment as above
309 (commented on others PR)
shouldn't setClient method in modelManager also update the tagNoteMap? Not sure where its being done currently.
310 (commented on others PR)
return Arrays.asList(alice, benson, carl, daniel, elle, fiona, george);
No need for extra brackets
311 (commented on others PR)
is there anything we can do in tagnotemap that would allow us to replace a client instead of doing re-init?
312 (commented on others PR)
Given below are instructions to test the app manually. Additionally, testers can look through our [Testing Guide](Testing.md) to get started on automated testing.
313 (commented on others PR)
the file Ui_old seems to have been renamed to Ui in this PR
314 (commented on others PR)
I think the standardization for the md files is to not have line breaks unless the actual line is 2 lines, since word wrap can already do this kind of line wrapping for you
315 (commented on others PR)
same for these lines, and many other lines in the file
316 (commented on others PR)
there's a lot of random new lines in this file, would be better to remove them
317 (commented on others PR)
I think the ./
should be removed, so that it matches other urls
318 (commented on others PR)
Theres an extra space between first and time, and also between you're and trying
319 (commented on others PR)
Should this be Country Notes instead of country?
320 (commented on others PR)
Not sure if the triple * is intentional? But it seems to give the same result as **_, (italics + bold) which I think is clearer, since triple * and double * look too similar
321 (commented on others PR)
extra space
322 (commented on others PR)
about a particular client*
323 (commented on others PR)
* **Client List Panel** will always allow you to view your clients' information at a go. It's scrollable so that you
324 (commented on others PR)
I don't think spawn is the right word to use here. Also, we shouldn't put generic widget view box
in our user guide. Something like display panel would be more appropriate
325 (commented on others PR)
relevant commands are sent. Initially it will show you your local time to the precise second, as well as your current location.
326 (commented on others PR)
extra spaces at 3 locations
327 (commented on others PR)
I think we're standardizing using ** for strong and _ for italics. Btw, don't break the html tags
328 (commented on others PR)
assert !clientNotes.contains(clientNote);
For standardization
329 (commented on others PR)
Would suggest changing this method name to getClientNotesAsUnmodifiableList()
330 (commented on others PR)
Needs a new line before this comment. Also, I'm not too sure what this comment means?
331 (commented on others PR)
Can just change this to an assertThrows
332 (commented on others PR)
same as prev comment
333 (commented on others PR)
assertEquals("1", commandHistory.getPrevious()));
334 (commented on others PR)
should probably do another UP and check if getInput == viewCommand1 then DOWN again and check if getInput == viewCommand2
335 (commented on others PR)
Should add more tests that do invalid commands then check if the history is correct, and also test the behavior with no history, and the behavior when there's no previous history, and lastly the behavior when there's no next history.
336 (commented on others PR)
Empty else block shouldn't be used
337 (commented on others PR)
Can we get the command box to clear the very first time there's no next element? (So like it shouldn't clear if I'm just typing and accidentally press down, but if i'm going through history and press down after the most recently used command it should clear) I think that's more consistent with CLI behavior.
338 (commented on others PR)
is the null check needed? When will it be commandTextField.getText() be null?
339 (commented on others PR)
my suggested change was only 4 spaces, my bad. It was my intention to align all the assertEquals rather than just add 4 spaces lmao.
340 (commented on others PR)
This isn't being used?
341 (commented on others PR)
is there a need for 2 x clearTemp()? Or is one enough
342 (commented on others PR)
would be clearer as a else if (hasRudimentary()) + throwing outside of the if/elseif block
343 (commented on others PR)
I'm not sure what the rudimentary is for? If its to store an incomplete command maybe can the naming to incompleteCommand instead of rudimentary
344 (commented on others PR)
incomplete sentence + unneeded line break here
345 (commented on others PR)
is there a need to use a static init? I think currently can just call constructor without args and create the empty arraylist inside the constructor
346 (commented on others PR)
related to comment in commandbox.java, I think can just this.history = new ArrayList>String>() inside the constructor, instead of having the args
347 (commented on others PR)
renamed to jsonAdaptedCountryNote
348 (commented on others PR)
my bad, added it back
349 (commented on others PR)
Should probably change this to return Arrays.asList and the return type to List>CountryNote>
350 (commented on others PR)
Is it possible to change OS-X to macOS for both UG and DG? I think it'll be better
351 (commented on others PR)
Views the list of country notes that are associated with the country corresponding to the country code supplied.
352 (commented on others PR)
Adds a note that will be associated with the country corresponding to the country code supplied.
353 (commented on others PR)
Should we make this bold? Just in case. Also i realised we can delete country notes even when we haven't viewed the list panel displaying country notes lol, like directly from startup
354 (commented on others PR)
bold this?
355 (commented on others PR)
Due to ambiguity, editing of a country note when the country notes panel is not being displayed is not allowed, and an error message will be shown if this is attempted.
356 (commented on others PR)
Due to ambiguity, deleting of a country note when the country notes panel is not being displayed is not allowed, and an error message will be shown if this is attempted.
357 (commented on others PR)
* **Display Panel** shall render *Client Cards* or *Country Cards* when relevant commands are sent. The default view shows you your local time to the precise second, as well as your current location.
358 (commented on others PR)
Should this be left inside? Since it's supposed to be a snippet. Or maybe change the desc to "Here's a sample showing what this editable text file will look like:"
359 (commented on others PR)
Should all the figures be wrapped in >p align="center"> ? Also, maybe make them italicised
360 (commented on others PR)
This else block should belong to the other if statement (if (clientObservableList.size() == clientListSize && !c.wasPermutated())), and not the inner one. If not when you remove the client you're currently viewing it won't go back to default view
361 (commented on others PR)
I think this should be 'content' instead of Note.class.getSimpleName(), if not the message will read: Note's Note field is missing
362 (commented on others PR)
Should lowercase the getSimpleName so the displayed message will look less weird
363 (commented on others PR)
extra newlines
364 (commented on others PR)
"Phone numbers should have at least 3 digits and at most 15 digits, please refer to our UserGuide for"
365 (commented on others PR)
>i> tag broken
366 (commented on others PR)
>i> tag broken
367 (commented on others PR)
extra space before br
368 (commented on others PR)
**PHONE_NUMBER** | `p/` | Phone numbers should have at least 3 digits and at most 15 digits. <br> Please refer to [Appendix B](#appendix-b-international-standards-followed) for a comprehensive description. <br> e.g. `p/81867752` or `p/+65 81867752`
369 (commented on others PR)
extra newline
370 (commented on others PR)
extra newline
371 (commented on others PR)
grammatical error: "may follow this international"
372 (commented on others PR)
<strong><i>{End of Appendix A, please return to the <a href="#table-of-contents">Table of Contents</a>}</i></strong>
373 (commented on others PR)
Think we should change this back to the wikipedia one, since the official search tool is an alternative
374 (commented on others PR)
random line here that is out of place
375 (commented on others PR)
Comments not updated
376 (commented on others PR)
Should this be 12 digits instead, since it is without country code
377 (commented on others PR)
Maybe add some examples like so: "Note that parameter prefixes such as t/
or n/
are special keywords..."
378 (commented on others PR)
Better to use an assertDoesNotThrow() here
379 (commented on others PR)
* @param filePath {@code Path} where the {@code UserPrefs} shall be stored as JSON.
380 (commented on others PR)
Block comments should follow this format:
381 (commented on others PR)
I think can leave out the "within the Logic
component", since the diagram also involves the model component. Also, not sure why the model part was cut to become less detailed?
382 (commented on others PR)
Does Country actually have a dependency on CountryCodeVerifier? It seems like its only referencing it in an assert.
383 (commented on others PR)
Is it possible to have an else
after this if
so that the diagram looks better? Like the right arrow coming from the first diamond should have an [else]
384 (commented on others PR)
I think using a merge node to merge all arrows before pointing to end will be good, not sure if it's a limitation of PlantUML that there are double arrows.
385 (commented on others PR)
Not sure actually, but on second thought to be safe it's better to leave it in bah
386 (commented on others PR)
Ok sure
387 (commented on others PR)
* Gets the list of client notes associated with this client as an unmodifiable list.
388 (commented on others PR)
* @return An unmodifiable list of client notes associated with this client.
389 (commented on others PR)
* Gets the observable list of client notes associated with this client.
390 (commented on others PR)
* @return The observable list of client notes associated with this client.
391 (commented on others PR)
* Replaces the contents of this list with the contents from the given {@code replacement}.
392 (commented on others PR)
* A representation of a Country that is identified by a 2-letter ISO3166 country-code.
393 (commented on others PR)
Not sure why this message was broken up into two lines
394 (commented on others PR)
If its not too much work, I think it would be better to revert to the previous format of multiple test functions actually, since most of our test files use the multiple function method, and that's what the coding standards seem to recommend also.
395 (commented on others PR)
see prev comment
396 (commented on others PR)
* @param note The particular {@code Note} to get associated tags for.
397 (commented on others PR)
* @param tag The particular {@code Tag} to get associated notes for.
398 (commented on others PR)
the link leads to a table with UTC timezones instead
399 (commented on others PR)
I think we should standardize (forgot which other file was it) and just remove the static, and add a comment above saying this is some special static init block
400 (commented on others PR)
Is there a need to convert to arraylist? Cannot just iterate through the set?
401 (commented on others PR)
Should probably add a comment stating what this does.
402 (commented on others PR)
same comment as in UG about the link. Is there any better links?
403 (commented on others PR)
Is this some special case? Should add a comment if that's the case
404 (commented on others PR)
long currentHour = (totalHours + hoursOffset) % 24;
405 (commented on others PR)
Should add a few more negative test cases like "GMT" and "GMT+" and "GMT-", and maybe "gmt+08:00", and "GMT+8" and "GMT+08", and "GMT+8:00", and "GMT+08:0"
406 (commented on others PR)
extra newline
407 (commented on own PR)
Yeah its cuz the parsing of a date string always needs to have exception thrown
408 (commented on own PR)
I'm not sure if and how the LocalDate parser does its parsing though, so I would prefer to be safer by mandating the regex check. For example, it might parse 20/19/020 as a correct date and not throw any errors. Apparently using the ResolverStyle.STRICT is supposed to prevent this kind of mis-parsing, but I think the regex would be more defensive coding-like
409 (commented on own PR)
Done
410 (commented on own PR)
My bad, fixed it
411 (commented on own PR)
technically it only updates the filteredclientlist, but the change is "propagated" to the sortedfilteredclientlist, so I'm not sure which would be clearer. I'm thinking since it operates on the filteredclientlist only, the name should be left as is.
412 (commented on own PR)
Done, abstracted into a private static method in the same class
413 (commented on own PR)
Updated
414 (commented on own PR)
done
415 (commented on own PR)
done
416 (commented on own PR)
done
417 (commented on own PR)
done
418 (commented on own PR)
done
419 (commented on own PR)
done
420 (commented on own PR)
imo I don't think there's a point in extracting it out as an empty string is kinda like a null value, and we don't extract out null values.
421 (commented on own PR)
This one is being used to display country notes if we're looking at one country only, so I just left it as countryNoteListView
422 (commented on own PR)
done
423 (commented on own PR)
removed
424 (commented on own PR)
have forced to it order based on note contetns
425 (commented on own PR)
I think the tags are hard to compare (the overhead/extra code will be quite bad and messy), and its unlikely that all country code and note content will be equal but tags different, so I'll just leave it as this for now.
426 (commented on own PR)
All the other command classes don't have the hashcode function, so I deleted this one to standardize
427 (commented on own PR)
Yup, this check is needed since the very first time the WidgetViewBox is initialized, the textClock is null, and we call this function
428 (commented on own PR)
done
429 (commented on own PR)
done
430 (commented on own PR)
ok sure changed
431 (commented on own PR)
done
432 (commented on own PR)
done
433 (commented on own PR)
Bugfix for when country note view
is called followed by client list
, which doesn't reset the widget display viewbox back to default, even though it should.
434 (commented on own PR)
done
435 (commented on own PR)
I think the reason its called isExit is because the commandresult itself is an exit command. Aka there is only one such command that causes the app to exit. Also, the "Returns true if CommandResult will cause the application to exit" would be less accurate because the commandresult doesn't cause the application to exit, it just carries the message that the application should exit to the mainwindow class, which then implements the exit
436 (commented on own PR)
It should be in the plural because we can have multiple suggestion types being passed in in the form of an ordered set
437 (commented on own PR)
good catch, ill change the rest of the parsers as well
438 (other comment)
LGTM
439 (other comment)
LGTM
440 (other comment)
LGTM
441 (other comment)
LGTM
442 (other comment)
LGTM
443 (other comment)
Fixed by #121 #142 #144
444 (other comment)
Fixed by #120
445 (other comment)
Duplicate of #92
446 (other comment)
Duplicate of #90
447 (other comment)
Removed from plans
448 (other comment)
Quite a few TODOs and stray comments. I think a follow-up issue can be created to cleanup the todos and stray comments.
Just wondering, what is the main purpose of having
TagNoteMap
class? Is it so that it would be easier to query for notes based on a given set of Tags? Because it seems like additional work to "sync" tags with notes and it might be quite error-prone if the syncing is not done right. Any thoughts @qwoprocks ?
@raysonkoh actually the implementation @rtshkmr did was a bit off from what I had in mind, the tagnotemap is actually supposed to be the one being passed down from logic manager to the parser to create the tags, so there would no need to do the syncing stuff. @rtshkmr isit alright if i just push to this PR and implement that?
449 (other comment)
1. Cannot uniquely identify `clients` by their name at the moment.
Possible fix: store the client as a string containing ">client name> >client email>", as we can use isSameClient method of Client to match the clients and notes.
450 (other comment)
Is the testing for
ContractExpiryField
class supposed to be done in another PR?
Ah right I forgot lmao I'll add it in now
451 (other comment)
Duplicate of #162
452 (other comment)
Looks good. There's still a slight aesthetic issue where the list cell is not contained within the list view rounded container, but this is pretty trivial.
good catch, I'll add it as an issue
453 (other comment)
Realized that it probably wouldn't make a difference, and might flood the javafx thread with pending runnables.
454 (other comment)
Manually tested
country note add
andcountry note delete
, seems to be working as expected. So just to check, a country note will first be sorted by country code, then insertion order right?
@raysonkoh yup correct
455 (other comment)
Not going to do this for v1.4, may consider as further extension.
456 (other comment)
Fixed by #317
457 (other comment)
Moved to v1.5 because this might introduce bugs and our current implementation is good enough for now
458 (other comment)
Redo-ing the implementation
@dextertanyj
(289 comments)1 (commented on others PR)
I think we can remove this test case.
2 (commented on others PR)
// Keywords match phone and email, but does not match name
3 (commented on others PR)
Should remove INVALID_ADDRESS
and VALID_ADDRESS
from constant declarations above as well.
4 (commented on others PR)
Is there a particular reason as to why this test case was removed? Perhaps we can use a different invalid value instead of removing the entire test case.
5 (commented on others PR)
Should probably remove the above
@FXML
private Label address;
as well.
6 (commented on others PR)
platform for tutors to handle all of their administrative matters.
7 (commented on others PR)
- Tutor's Pet displays your upcoming lessons so that you will never forget about them again.
8 (commented on others PR)
Not sure if this would sound more in line with the other points since the word 'your' was used in both the other.
- Tutor's Pet allows you to mark your students' attendance and participation for each lesson.
9 (commented on others PR)
Nice catch!
10 (commented on others PR)
public static final String MESSAGE_SUCCESS = "Listed all students.";
11 (commented on others PR)
Perhaps we can update the Tag examples to something that's more student-tutor relationship like. Maybe something like how the student is performing in class.
12 (commented on others PR)
This line shouldn't change.
13 (commented on others PR)
Similar here, would be good to update the example tags.
14 (commented on others PR)
Would be good to update this test constant as well.
15 (commented on others PR)
Command word should be in kebab case.
16 (commented on others PR)
Command word should be in kebab case. Perhaps can change the title to "Listing all students within a class".
17 (commented on others PR)
We should retain the generated table of contents instead of using simple bullet points.
18 (commented on others PR)
I think the second add
is redundant.
19 (commented on others PR)
Ellipsis should remain outside of the square brackets since users need to repeat the prefix as well.
20 (commented on others PR)
I don't think we are supporting the separation of CLASS_NAME
from MODULE_CODE
?
21 (commented on others PR)
Need to remove the address
field in this section as well and update the tag
prefix.
22 (commented on others PR)
Need to update tag
prefix here as well.
23 (commented on others PR)
I don't think name, telegram handle and email are optional fields.
24 (commented on others PR)
We need to rethink the command syntax for this operation. The parsing of arguments will be troublesome in this format.
For now maybe we can leave this feature out of the UG.
25 (commented on others PR)
Kind of weird I'm a Project Advisor
in the project I'm working on. Maybe Lead Developer
would make more sense, but I'll change that in my own AboutUs update later.
26 (commented on others PR)
* **`add`**`n/John Doe t/@johndoe e/johnd@example.com tag/student` : Adds a student named `John Doe` to the application.
27 (commented on others PR)
The second example should include more than one tag
to show the possible multiplicities.
e.g. `[tag/TAG]…` can be used as ` ` (i.e. 0 times), `tag/student`, `tag/Average tag/TA Candidate` etc.
28 (commented on others PR)
Format: `add n/NAME t/TELEGRAM_HANDLE e/EMAIL [tag/TAG]…`
29 (commented on others PR)
Format: `edit INDEX [n/NAME] [t/TELEGRAM_HANDLE] [e/EMAIL] [tag/TAG]…`
30 (commented on others PR)
Not sure if this is the best implementation since the /by
prefix will have no values associated with it when parsed by the ArgumentTokenizer
* `list-students c/CS2103T Tutorial T10`
31 (commented on others PR)
**Add Student** | `add n/NAME t/TELEGRAM_HANDLE e/EMAIL [tag/TAG]…` <br> e.g., `add n/John Doe t/@johndoe e/johnd@example.com tag/student`
32 (commented on others PR)
**Edit Student** | `edit INDEX [n/NAME] [t/TELEGRAM_HANDLE] [e/EMAIL] [tag/TAG]…`<br> e.g.,`edit 2 n/James Lee e/jameslee@example.com`
33 (commented on others PR)
**List Students in a Class** | `list-students c/CLASS_NAME`<br> e.g., `list-students c/CS2103T Tutorial T10`
34 (commented on others PR)
| `* * *` | Tutor with many students | Store my students' contact info/emails | Contact them easily |
35 (commented on others PR)
Links an existing student to an existing class in the application.
36 (commented on others PR)
* `list` followed by `link s/1 c/2` links the 1st student in the application to the 2nd class in the application.
* `find Betsy` followed by `link s/1 c/2` links the 1st student in the results of the `find` command to the 2nd class in the application.
37 (commented on others PR)
#### Linking a student to a class: `link`
38 (commented on others PR)
Should we update the rest of the use cases to use full stops as well?
39 (commented on others PR)
Hmm, I think summary should remain after the detailed explanation, since it serves so summarise the above mentioned information.
40 (commented on others PR)
In
and A
shouldn't be capitalised in the title.
41 (commented on others PR)
I think we should retain the present participle form of the verb? The CS2101 set of slides for "Writing User Guide" also seems to favour retaining the present participle form of verbs, although it does not seem explicitly mentioned.
42 (commented on others PR)
* 3a. No students found.
43 (commented on others PR)
Would be good to mention that it is a message, otherwise might be confusing how to show an absence of something.
44 (commented on others PR)
Should we keep it consistent and use delete
instead of clear
?
45 (commented on others PR)
Technically Tutor's Pet can return more than one student found, so maybe it would be good to mention that it shows all matching students.
46 (commented on others PR)
Applies to finding classes as well.
47 (commented on others PR)
## Command overview
48 (commented on others PR)
#### Clearing all students : `clear-student`
49 (commented on others PR)
#### Clearing all classes : `clear-class`
50 (commented on others PR)
| UC13 | Link a student to a class |
| UC14 | Unlink a student from a class |
51 (commented on others PR)
**Use case: UC14 - Unlink a student from a class**
52 (commented on others PR)
**Use case: UC13 - Link a student to a class**
53 (commented on others PR)
| UC12 | Clear all classes |
| UC13 | Link a student to a class. |
| UC14 | Unlink a student from a class |
54 (commented on others PR)
assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB,
55 (commented on others PR)
assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB,
56 (commented on others PR)
assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB,
57 (commented on others PR)
public static final String MESSAGE_SUCCESS = "All students in Tutor's Pet have been cleared!";
58 (commented on others PR)
Perhaps we can rename this to getAddStudentCommand(Student student)
59 (commented on others PR)
public void parseCommand_editStudent() throws Exception {
60 (commented on others PR)
public void parseCommand_deleteStudent() throws Exception {
61 (commented on others PR)
public void parseCommand_addStudent() throws Exception {
62 (commented on others PR)
public void parseCommand_clearStudent() throws Exception {
63 (commented on others PR)
public void parseCommand_findStudent() throws Exception {
64 (commented on others PR)
public void parse_validArgs_returnsFindStudentCommand() {
65 (commented on others PR)
public void parse_validArgs_returnsDeleteStudentCommand() {
66 (commented on others PR)
I don't think we should allow the explicit setting or getting of UUID
in EditStudentDescriptor
since it would then no longer be editing the same student.
67 (commented on others PR)
The editedUuid
should always be that of the studentToEdit
.
68 (commented on others PR)
I think it would be good to set a default UUID
for each student in the tests and not rely on randomly generated data. This way it would be more predictable and testable.
69 (commented on others PR)
I don't think there is a need for EditStudentDescriptor
to have a uuid
field.
70 (commented on others PR)
requireAllNonNull(uuid, name, phone, email, tags);
71 (commented on others PR)
It would be good to edit the constructors in the TypicalStudents
file as well to ensure the test constants are truly identical.
72 (commented on others PR)
73 (commented on others PR)
private static ModuleClass createEditedModuleClass(ModuleClass moduleClassToEdit,
EditModuleClassDescriptor editModuleClassDescriptor) {
74 (commented on others PR)
* Parses input arguments and create a new EditModuleClassCommand object.
75 (commented on others PR)
* Parses {@code userInput} into a {@code StudentNameContainsKeywordsPredicate}.
76 (commented on others PR)
There's quite a bit of overlap here, would be good to deduplicate into:
public static final Index INDEX_FIRST_ITEM= Index.fromOneBased(1);
public static final Index INDEX_SECOND_ITEM = Index.fromOneBased(2);
public static final Index INDEX_THIRD_ITEM = Index.fromOneBased(3);
77 (commented on others PR)
* A utility class for ModuleClass.
78 (commented on others PR)
Seeing this template always makes me feel like they have already foreshadowed that we should do undo/redo features.
* Contains integration tests (interaction with the Model) and unit tests for
79 (commented on others PR)
* A UI component that displays information of a {@code ModuleClass}.
80 (commented on others PR)
Since we seem to be standardising to capitalise UI.
// Independent UI parts residing in this UI container
81 (commented on others PR)
It should be A UI
because in both user interface
and UI
the word/abbreviation is pronounced as though it starts with the consonant y
.
82 (commented on others PR)
* A UI component that displays information of a {@code Student}.
83 (commented on others PR)
-fx-background-color: transparent, #274156, transparent, #274156;
84 (commented on others PR)
I think it would be best to define the return type as Label since we do in fact return a Label.
85 (commented on others PR)
* Converts this Jackson-friendly adapted class object into the model's {@code ModuleClass} object.
86 (commented on others PR)
* Converts a given {@code UUID} into this class for Jackson use.
87 (commented on others PR)
* Converts this Jackson-friendly adapted UUID object into the model's {@code UUID} object.
88 (commented on others PR)
* @throws IllegalValueException if adapted UUID is null.
89 (commented on others PR)
I think it would be a good idea to introduce some checks for invalid UUIDs since the user can go into the json file to edit entries manually.
90 (commented on others PR)
I would agree with @junlong4321 on this, it would be good to isolate any possible failure to just students
.
While in invalidClassTutorsPet.json
, students would be useful in the future when we implement validation for students who are registered in classes.
91 (commented on others PR)
I agree with @ruixuantan. It would be safer since users can head into the json save file and modify its contents manually.
92 (commented on others PR)
I think if we are fine with breaking the abstraction barrier, in some sense we already have since we are dealing with UUID objects instead of strings, then it is okay to change all references to studentUuids instead, including in the model.
93 (commented on others PR)
Naming here might be a bit confusing since uuid is a object type itself.
private final String uuidString;
94 (commented on others PR)
* Constructs a {@code JsonAdaptedModuleClass} with the given class details.
95 (commented on others PR)
* Converts a given {@code ModuleClass} into a {@code JsonAdaptedModuleClass} for Jackson use.
96 (commented on others PR)
* @throws IllegalValueException if there were any data constraints violated in the adapted class.
97 (commented on others PR)
* Creates a {@code ModuleClassBuilder} with the default {@code Name} and empty {@code studentUuids} list.
98 (commented on others PR)
public static final UUID ALICE_UUID = ALICE.getUuid();
public static final UUID BENSON_UUID = BENSON.getUuid();
99 (commented on others PR)
Can these two methods be made private?
100 (commented on others PR)
I would advise against adding the class names as Tags
since it might confuse our first time users into thinking that linking students to classes would automatically add the classes as Tags
.
101 (commented on others PR)
Perhaps it would be a better idea to declare the students and classes as static members and then have the two methods return a list of the static members.
Also, I think the two getter methods can be made private.
102 (commented on others PR)
// different keyword -> returns false
103 (commented on others PR)
*
* @throws ParseException if the user input does not conform the expected format.
104 (commented on others PR)
NIT: It might be a good idea to leave a class or two for manual adding when testing.
105 (commented on others PR)
nit
FindModuleClassCommand expectedFindModuleClassCommand =
new FindModuleClassCommand(new NameContainsKeywordsPredicate<>(Arrays.asList("CS1101S", "Tutorial")));
// no leading and trailing whitespaces
assertParseSuccess(parser, "CS1101S Tutorial", expectedFindModuleClassCommand);
106 (commented on others PR)
* Additionally, removes all {@code Student UUID}s in each {@code ModuleClass}.
107 (commented on others PR)
/**
* Removes all {@code Student}s from the student manager.
* Also removes all {@code Student UUID}s from each {@code ModuleClass}.
*/
108 (commented on others PR)
Perhaps it might be a good idea to have the same name for both methods (in Model
and in TutorsPet
)?
109 (commented on others PR)
Perhaps {@code Student UUID}s
would be more accurate since {@code studentUuids}
refers to the list itself rather than its contents.
/**
* Removes all {@code Student UUID}s from every {@code ModuleClass} in the class list.
*/
110 (commented on others PR)
Is there any particular reason why we choose ClearModuleClassCommand
as the different type as opposed to some other primitive type like an integer
?
111 (commented on others PR)
model.deleteAllModuleClasses();
112 (commented on others PR)
private static final int NUMBER_OF_COLOURS = COLOURS.length;
113 (commented on others PR)
Should we be using the American spelling of Colour
instead?
114 (commented on others PR)
I think we should retain the name listOfTags
or tagList
instead? Although the field was declared as static final
, it is not exactly a constant in essence since the contents of the list can change.
I think it would be wise to follow the following categorisation of constants as given by the excerpt below from the Google Style Guide.
115 (commented on others PR)
requireNonNull(toCheck);
return internalList.stream().anyMatch(toCheck::hasSameUuid);
116 (commented on others PR)
requireNonNull(student);
return students.containsUuid(student);
117 (commented on others PR)
Instead of reading students
once again, perhaps we may want to use the existing information stored within tutorsPet
instead?
We can also document this precondition in the JavaDoc to state that the tutorsPet
passed in should have its students loaded prior.
118 (commented on others PR)
Just wondering, is this "feature" extended to the native UUID
stored in each JsonAdaptedStudent
as well?
119 (commented on others PR)
* If Tutor's Pet encounters duplicate {@code Student UUID}s in a class, it will not load
* duplicate {@code UUID}s into the model. Hence, Tutor's Pet should still boot up successfully.
120 (commented on others PR)
* Ensures that Tutor's Pet will not be able to boot up given an incomplete {@code UUID}.
121 (commented on others PR)
* Ensures that Tutor's Pet will not be able to boot up although Java tries
* to pad missing {@code UUID} digits in broken {@code UUID}s with zeros.
122 (commented on others PR)
* Prevents Tutor's Pet from booting up if two or more {@code Student}s are found with the same {@code UUID}.
123 (commented on others PR)
"Invalid student(s) found in class(es).";
124 (commented on others PR)
In view of the change, I would recommend changing the test case to remove a student that was not previously part of any class. This way, we would only be changing the student list and would be a better representation of the test case.
125 (commented on others PR)
I'm slightly intrigued as to why 50
?
126 (commented on others PR)
Will we be supporting hyperlinks as venues given the current situation?
127 (commented on others PR)
Perhaps it might better for these methods to take in LocalTime
objects instead to remove any chances that a parse error is thrown.
128 (commented on others PR)
Perhaps it would be good to test the equals
method as well?
Same for the NumberOfOccurrences class.
129 (commented on others PR)
Perhaps something along the lines of Add an attendance record of a student
would be better? Similarly for the rest below?
130 (commented on others PR)
Tutor’s Pet is a desktop application that helps Computer Science teaching assistants reduce the amount of time they spend on administrative tasks.
Or alternatively, perhaps this sentence can be written in a more user centric manner?
131 (commented on others PR)
Perhaps it would be easier to support 24 hour time format (0800
, 1000
etc.) first before thinking if we want to support other time formats?
132 (commented on others PR)
command
may not be the best word to use here since they do not see all commands executed, i.e. they only see commands that can be undone/redone. I suggest an alternative here, although I think it definitely can be further improved.
### View action history : `view-history`
View a list of actions that can be undone or redone.
133 (commented on others PR)
The week seems to be missing from the description, same for the subsequent attendance record commands.
134 (commented on others PR)
Agreed
135 (commented on others PR)
The phrasing of this sentence is rather weird, especially the add students into those classes
part. I have an alternative below, but open to better phrasing as well.
'''suggestion
It allows teaching assistants to keep track of the students in their classes, and record their attendance and participation scores.'''
136 (commented on others PR)
* `edit-attendance c/1 l/1 s/1 w/1 p/10` Edits the 1st week's participation score of the 1st student of the 1st lesson of the 1st class to 10 points.
137 (commented on others PR)
| **View Action History** | `view-history` |
138 (commented on others PR)
I don't think week 0 is officially supported.
* The `WEEK` **must be a positive whole number** 1, 2, 3, …
139 (commented on others PR)
* The `WEEK` **must be a positive whole number** 1, 2, 3, …
140 (commented on others PR)
* The `WEEK` must be a positive whole number** 1, 2, 3, …
* The participation score **must be a non-negative whole number** 0, 1, 2, …
141 (commented on others PR)
* User has to specify at least 1 field (DAY/START_TIME/END_TIME/VENUE) to be changed.
142 (commented on others PR)
Just noticed this, but perhaps this should be use case ends
since it has been deemed that the lesson already exists?
Use case ends.
Seems like this was inherited from previous versions.
143 (commented on others PR)
1. User requests to delete a specific attendance record.
144 (commented on others PR)
Since the command expects multiple correct indexes, would it be more appropriate to phrase it as One or more of the given indexes are invalid.
?
145 (commented on others PR)
That's true, I think we can keep the current version.
146 (commented on others PR)
I think it would be best for these to be left to be handled by the logic part of the house for consistency with the rest of the model components. It would be sufficient to provide getter methods and a suitable constructor.
147 (commented on others PR)
Similarly, these methods should be reserved for the commands in logic to handle to better decouple the model from the controller/logic.
148 (commented on others PR)
Instead of introducing this method within the model, perhaps it would be better for the methods that require a zero based number to use the currently available Index
object and retrieve a getOneBased()
value instead?
That is, the method that does the comparison should be the one performing the conversion from a zero based index to a one based index for comparison with the Week
value.
149 (commented on others PR)
Perhaps we should take in Index
instead of int
for week associated values (at least for this class since it sort of acts like an index to a list) so that there is less room for mistakes of getting the base wrong in the future?
Or since the Week
class seems to be unused, perhaps the Week
class can be used to store a valid (i.e. within 1 and 52 when counted from base 1)Index
object. And the Week
object can be used as the definitive way to check for validity and retrieve AttendanceRecord
objects from the appropriate week/index.
150 (commented on others PR)
* Inserts a new {@code UUID} and {@code Attendance} into the {@code AttendanceRecord} we are building.
151 (commented on others PR)
This class seems unused, but perhaps we can convert it to store an Index
while performing validation on the Index
value.
This way, we can ensure that there will be no ambiguity when parsing, transferring or retrieving values based on weeks.
152 (commented on others PR)
* Returns true if the given week is an integer between {@link NumberOfOccurrences.LOWER_BOUND}
* and {@link NumberOfOccurrences.UPPER_BOUND}.
153 (commented on others PR)
* Guarantees: immutable.
154 (commented on others PR)
* Returns the {@code Attendance} of the given {@code Student UUID}.
155 (commented on others PR)
* Guarantees: immutable.
156 (commented on others PR)
This shouldn't be necessary anymore right?
157 (commented on others PR)
* Returns the {@code Attendance} of a {@code Student} in a particular {@code Week}.
158 (commented on others PR)
* Returns the {@code AttendanceRecord} of a particular {@code Week}.
159 (commented on others PR)
The changes might cascade into the other tests as well.
public static final int VALID_WEEK_VALUE_5 = 5;
public static final int VALID_PARTICIPATION_SCORE_33 = 33;
public static final int VALID_PARTICIPATION_SCORE_51 = 51;
public static final int VALID_PARTICIPATION_SCORE_80 = 80;
160 (commented on others PR)
// invalid score
assertFalse(Attendance.isValidParticipationScore(Attendance.LOWER_BOUND - 1));
assertFalse(Attendance.isValidParticipationScore(Attendance.UPPER_BOUND + 1));
assertFalse(Attendance.isValidParticipationScore(-1));
// valid score
assertTrue(Attendance.isValidParticipationScore(Attendance.LOWER_BOUND));
assertTrue(Attendance.isValidParticipationScore(Attendance.UPPER_BOUND));
assertTrue(Attendance.isValidParticipationScore(10));
161 (commented on others PR)
Index invalidWeek = Index.fromOneBased(Week.UPPER_BOUND + 1);
162 (commented on others PR)
if (!lesson.equals(lessonToDelete)) {
163 (commented on others PR)
public static final Prefix PREFIX_START_TIME = new Prefix("st/");
164 (commented on others PR)
Perhaps this might allow more versatility for this method? Or alternatively it could be mentioned in the method description that it will always assume a class index of one.
public static String getAddLessonCommand(Index moduleClassIndex, Lesson lesson) {
return AddLessonCommand.COMMAND_WORD + " "
+ PREFIX_CLASS_INDEX + moduleClassIndex.getOneBased() + " "
+ getLessonDetails(lesson);
}
165 (commented on others PR)
Not too sure about this, but "Days" sound slightly better? Or perhaps can consider using "The day...", but it might not sit too well with the other constraint messages.
public static final String MESSAGE_CONSTRAINTS = "Days must be typed out fully in capital letters.\n"
166 (commented on others PR)
* The {@code String} must be capitalized and be spelt exactly as each enum value.
*
* @throws InvalidDayException if the {@code String} does not match any of the enum values.
167 (commented on others PR)
Perhaps we can simplify this method to:
private boolean hasDuplicateLessons(List<Lesson> lessons, Lesson lessonToCheck) {
return lessons.stream().anyMatch(lessonToCheck::isSameLesson);
}
168 (commented on others PR)
* Converts the contained {@code List<JsonAdaptedUuid> studentUuids} to a {@code List<UUID>}.
169 (commented on others PR)
* Converts the contained {@code List<JsonAdaptedLesson> lessons} to a {@code List<Lesson>}.
170 (commented on others PR)
List<UUID> studentUuids = getUuidList();
final Set<UUID> studentUuidSet = new HashSet<>(studentUuids);
171 (commented on others PR)
return new ModuleClass(modelName, studentUuidSet, lessonList);
172 (commented on others PR)
Could we split this into a separate test case since we are testing for a failure here?
173 (commented on others PR)
Would be good to update the JavaDocs with the appropriate details.
174 (commented on others PR)
Could we test for a null
lesson as well? Perhaps in another file nullLessonTutorsPet.json
and this file can be renamed nullStudentUuidsTutorsPet.json
.
175 (commented on others PR)
Could we test both versions of JsonAdaptedLesson
creation? That is have another test case that creates the JsonAdaptedLesson
solely using the individual details of the Lesson
rather than the object itself.
176 (commented on others PR)
Nice thanks!
177 (commented on others PR)
We need to perform some checks to ensure that the student is a member of the moduleClass
as well.
178 (commented on others PR)
This seems to appear quite a few times around the code base, could this be placed into another class, perhaps the ParserUtil
, or any other suitable class and the rest can reference this public method instead.
179 (commented on others PR)
Could we include a test for a null Week
as well?
180 (commented on others PR)
It seems like the expected vs actual fields are swapped? It might be good to also declare the parser version as the command
and the AddAttendanceCommand
version as expectedCommand
?
181 (commented on others PR)
Perhaps we should have a test for the case where the student is not a member of the class?
182 (commented on others PR)
I think typically there are spaces both before and after the :
in enhanced for loops?
183 (commented on others PR)
public static final String MESSAGE_MISSING_STUDENT_ATTENDANCE = "Student's attendance does not exist";
184 (commented on others PR)
Nice check
185 (commented on others PR)
Just noticed this, but could have probably used .getOneBased() > lastShownStudentList.size()
to drop the equality sign. Not important though.
186 (commented on others PR)
For some of the tests here, it might be good to add simple assert
statements to make sure that certain assumptions about the model
are true. For example the studentNotInClass
, execute_success
, noStudentAttendance
tests rely on the fact that the TypicalTutorsPet
provided meet certain criteria.
187 (commented on others PR)
Should we check if the attendance we want to delete exists in the first place?
It might be a good idea to display an error message instead of showing a success message if the attendance did not exist.
188 (commented on others PR)
In AddAttendanceCommand
, parseWeek
seems to throw the Week
constraint message instead of the usage message when it fails. Perhaps we should keep it consistent.
189 (commented on others PR)
I think this appeared in AddAttendanceCommandTest
previously. Instead of duplicating it, perhaps we can make it public
in the other class for others to use. It can also be moved to another more suitable location, especially as it seems like these helper methods are becoming more common.
190 (commented on others PR)
+ "Note: All indexes must be positive integers.\n"
191 (commented on others PR)
[Redacted: non-issue]
192 (commented on others PR)
+ PREFIX_WEEK + "WEEK_NUMBER (must be a positive integer)\n"
193 (commented on others PR)
I think it would be good to state the main purpose of the method first before providing additional details.
* Adds {@code attendanceToAdd} to {@code targetLesson}.
* All existing {@code Attendance}s in {@code targetLesson} are copied to the new {@code Lesson}.
194 (commented on others PR)
* @throws CommandException if an {@code Attendance} already exists for the {@code targetStudent} in the {@code targetWeek}.
195 (commented on others PR)
* @throws CommandException if the {@code Attendance} of the {@code targetStudent} in the {@code targetWeek} does not exist.
196 (commented on others PR)
* Removes the {@code Attendance} of the {@code targetStudent} in the {@code targetWeek} from the {@code targetLesson}.
* All other existing {@code Attendance}s in {@code targetLesson} are copied to the new {@code Lesson}.
197 (commented on others PR)
Perhaps we should first check that the student is a member of this class before proceeding further?
198 (commented on others PR)
Nice job extracting these methods to a separate class.
Since they are public methods now, perhaps we should have unit tests for them? It can come in a separate PR subsequently though.
199 (commented on others PR)
// delete week 1 attendance record
Map<UUID, Attendance> record = lesson.getAttendanceRecordList()
.getAttendanceRecord(targetWeek).getAttendanceRecord();
Map<UUID, Attendance> updatedRecord = new HashMap<>(record);
200 (commented on others PR)
Lesson modifiedLesson = new LessonBuilder(lesson)
201 (commented on others PR)
// delete non-existent week 5 attendance record
Map<UUID, Attendance> record = lesson.getAttendanceRecordList()
.getAttendanceRecord(targetWeek).getAttendanceRecord();
Map<UUID, Attendance> updatedRecord = new HashMap<>(record);
202 (commented on others PR)
Lesson modifiedLesson = new LessonBuilder(lesson)
203 (commented on others PR)
* Adds {@code lessonToAdd} to {@code moduleClassToAddTo}.
* All existing {@code Lesson}s in {@code moduleClassToAddTo} are copied to the new {@code ModuleClass}.
Perhaps we should also change moduleClassToAddTo
to targetModuleClass
for consistency?
204 (commented on others PR)
* Replaces the {@code lessonToEdit} with {@code editedLesson} in {@code targetModuleClass}.
* All other existing {@code Lesson}s in {@code targetModuleClass} are copied to the new {@code ModuleClass}.
205 (commented on others PR)
* Removes the {@code lessonToDelete} from the {@code targetModuleClass}.
* All other existing {@code Lesson}s in the {@code targetModuleClass} are copied to the new {@code ModuleClass}.
206 (commented on others PR)
Can I check how does this defer in purpose from createModifiedModuleClassWithEditedLesson
?
207 (commented on others PR)
208 (commented on others PR)
Perhaps we can follow the existing statements and use a single statement that all indexes must be positive integers.
209 (commented on others PR)
boolean isStudentIndexPresent = argMultimap.getValue(PREFIX_STUDENT_INDEX).isPresent();
boolean isWeekPresent = argMultimap.getValue(PREFIX_WEEK).isPresent();
if (!isModuleClassIndexPresent || !isLessonIndexPresent || !isStudentIndexPresent || !isWeekPresent) {
210 (commented on others PR)
boolean isModuleClassIndexPresent = argMultimap.getValue(PREFIX_CLASS_INDEX).isPresent();
boolean isLessonIndexPresent = argMultimap.getValue(PREFIX_LESSON_INDEX).isPresent();
boolean isStudentIndexPresent = argMultimap.getValue(PREFIX_STUDENT_INDEX).isPresent();
boolean isWeekPresent = argMultimap.getValue(PREFIX_WEEK).isPresent();
if (!isModuleClassIndexPresent || !isLessonIndexPresent || !isStudentIndexPresent || !isWeekPresent) {
211 (commented on others PR)
@junlong4321 Actually, for such a case where the Boolean variables are only used in the guard clause, shouldn't they be part of the block for the guard clause?
212 (commented on others PR)
There seems to be one more occurrence at line 37 in this file.
213 (commented on others PR)
Should this and the following points be relocated to the Using Tutor's Pet
section?
214 (commented on others PR)
Should this be Classes
and Students
instead since the application uses those words instead?
215 (commented on others PR)
students in Tutor's Pet, make use of the **`list-student`** command.
216 (commented on others PR)
Gives you an overall summary of a student's attendance and participation scores.
217 (commented on others PR)
Perhaps a more user-centric phrasing can be used here?
218 (commented on others PR)
![Delete lesson after](images/ugimages/DeleteLessonAfter.png)
219 (commented on others PR)
A `UUID` is a unique 128-bit number to identify a unique `Student` within Tutor’s Pet.
220 (commented on others PR)
`Student` `UUID` will help to ensure referential integrity of `Student` data across different models when
`Student` data is modified by the user.
221 (commented on others PR)
Maybe you could mention that another con is the very low, but still present, risk of a collision when generating random UUID
s.
222 (commented on others PR)
* Cons: The `Email` field is editable while the unique identifier of each `Student` should not be editable to prevent the need to cascade a change in the identifier of the `Student`.
223 (commented on others PR)
I think we should include style.puml
across all our diagrams to ensure consistency?
224 (commented on others PR)
Based on the textbook, there seems to be a colon before the class name even for calls to static methods.
participant "<<Class>>\n:ModuleClassUtil" as ModuleClassUtil LOGIC_COLOR
participant ":ModuleClass" as ModuleClass LOGIC_COLOR
participant "<<Class>>\n:LessonUtil" as LessonUtil LOGIC_COLOR
participant ":Lesson" as Lesson LOGIC_COLOR
participant "<<Class>>\n:AttendanceRecordListUtil" as AttendanceRecordListUtil LOGIC_COLOR
225 (commented on others PR)
Perhaps this line isn't necessary since the association has been represented as a field already? I'm not too sure on how maps should be represented as well. We should probably check with Prof Damith for clarification.
226 (commented on others PR)
It contains the `Attendance`s of all `Students` who have attended the particular lesson.
Or perhaps we can rephrase the sentence since the above does not get rendered as nicely?
227 (commented on others PR)
Hmm I'm not sure if we should have the colon here?
228 (commented on others PR)
If you would like to add a lesson to a class, you can make use of this command.
229 (commented on others PR)
* You receive news that you will be teaching `CS2103T Tutorial` on `Tuesday 10:00-11:00` at `COM2 #02-02` from week 1 to 13. Hence,
230 (commented on others PR)
* You have one less lesson to teach now.
231 (commented on others PR)
If you would like to delete a specific student's attendance from a lesson, you can make use of this command.
232 (commented on others PR)
* Alice's attendance for week 1 has been deleted.
233 (commented on others PR)
* You would like to delete Alice's attendance for the Thursday 10.00am to 11.00am lesson of CS2103T Tutorial in Week 1.
Hence, you type in the command `delete-attendance c\1 l\1 s\1 w\1` and press <kbd>Enter</kbd>.
234 (commented on others PR)
I think every command should be part of a sub category of features?
#### Display Statistics : `stats`
235 (commented on others PR)
Would it be possible to move private methods to the bottom of the class so that it can be grouped with the rest of the private methods?
/**
* Returns an {@code AttendanceRecord} where the {@code Attendance} of the {@code studentToRemove} has been removed.
* If the {@code studentToRemove} does not exist in the {@code attendanceRecord}, the {@code attendanceRecord} is returned unchanged.
*/
private static AttendanceRecord removeStudentFromAttendanceRecord(
236 (commented on others PR)
/**
* Returns an {@code AttendanceRecordList} where the {@code Attendance}s of the {@code studentToRemove} have been removed.
*/
237 (commented on others PR)
I think this line can be simplified?
tp.addModuleClass(moduleClass);
238 (commented on others PR)
Same as above,
tp.addModuleClass(moduleClass);
239 (commented on others PR)
Perhaps we could shift the responsibility of removing the student from module class to the command instead. Since there is currently no existing dependency from model to logic, it might be best to keep it that way to remove this cyclic dependency between the packages?
One suggestion would be for the delete and clear student commands,we can retrieve the ReadOnlyTutorsPet from the model and perform the mapping function there, and then set the new TutorsPet back into the model.
@ruixuantan do you have any suggestions on how this cyclic dependency can be resolved?
240 (commented on others PR)
/**
* Returns a {@code Lesson} where the {@code Attendance}s of the {@code studentToRemove} has been removed.
*/
241 (commented on others PR)
* Returns an {@code AttendanceRecordList} where the {@code Attendance}s of all {@code Student}s have been removed.
242 (commented on others PR)
* Removes the {@code studentToRemove} and all associated {@code Attendance}s from the {@code targetModuleClass}.
243 (commented on others PR)
* If the {@code studentToRemove} does not exist in the {@code attendanceRecord}, the {@code attendanceRecord}
* remains unchanged.
244 (commented on others PR)
public void removeStudent(Student student) {
245 (commented on others PR)
public void removeAllStudents() {
246 (commented on others PR)
I think I spotted a typo in the other Card
s as well, could you help to change them as well?
* Creates a {@code LessonCard} with the given {@code lesson} and index to display.
247 (commented on others PR)
Perhaps applyStylesheet()
or something along those lines would be better since we are not toggling between states?
Same for the 3 methods below, maybe apply
would be a better word?
248 (commented on others PR)
If you would like to see a list of all classes in your Tutor's Pet, make use of this command.
249 (commented on others PR)
I think typo already suggests that its an error?
However, you made a typo and gave him 35 instead.
Alternatively maybe we can drop the typo word?
However, you accidentally gave him a score of 35 instead.
250 (commented on others PR)
I don't think multiplicities are required in this diagram since it does not really add any value?
251 (commented on others PR)
I don't think these components are in a package?
252 (commented on others PR)
Is there an alternative that you missed out?
253 (commented on others PR)
#### Design Considerations
254 (commented on others PR)
Should we put the status as the last column instead?
255 (commented on others PR)
I think Name
and Tag
do not reside in the Student
package?
256 (commented on others PR)
Is there a particular reason why this differs from the Student diagram?
Also, I think it is not part of the ModuleClass
package?
257 (commented on others PR)
Perhaps it would make more sense to ensure that they do not map to each other's value than that they map to a specific value?
258 (commented on others PR)
* `DisplayStatisticsCommand#execute()`: Performs a validity check and returns a specific student's statistics if all
259 (commented on others PR)
* `AddAttendanceCommand#execute()`: Perform a validity check and adds a student's attendance for a particular week's lesson if
260 (commented on others PR)
### Deleting a lesson
1. Deleting a lesson
261 (commented on others PR)
Not sure if this section should be labeled Clearing classes in Tutor's Pet
? Or if we plan to have all the clear
and reset
features in this section then I think its fine to retain the section name.
262 (commented on others PR)
Should this be separated into two sections?
Otherwise its a little weird why finding student is not planned to be part of the list...
If the intention is to have find student as part of this section as well, perhaps you can put it in the header and have a placeholder somewhere later in the body.
263 (commented on others PR)
Should editing come before the display functions?
264 (commented on others PR)
Perhaps it would be good to link with abstraction as the link may not be very obvious.
265 (commented on others PR)
I think for sequence diagrams it might be better to leave the arguments in since the original example from AB-3 had them.
266 (commented on others PR)
Should this be mentioned in edit lesson as well?
267 (commented on others PR)
I don't think the (PPP)
part is necessary?
268 (commented on others PR)
It might be weird to have both bullet points and numbering together?
269 (commented on others PR)
Is this supposed to be after?
![Edit class after](images/ugimages/EditClassAfter.png)
![Edit class before](images/ugimages/EditClassBefore.png)
270 (commented on others PR)
This step is a little long, perhaps we can put the You type...
into a separate step on its own? Maybe something like this?
1. Your module coordinator decides to allocate another class to you and you want to be able to distinguish between
the two classes. Hence you decide to edit the `CS2103T Tutorial` class to `CS2103T Tutorial T10`.
1. Type the command `edit-class 1 n\CS2103T Tutorial T10` and press <kbd>Enter</kbd>.
271 (commented on others PR)
Are there any terms we plan on putting in the glossary?
272 (commented on others PR)
Perhaps in
would make it more obvious if it is inclusive or not.
For example, if a semester has 13 weeks and your lessons begin in week 3 and end in week 13,
273 (commented on others PR)
Nice, I like this method of resolving the check issue. @junlong4321 perhaps you can use this for the edit-student
issue as well.
@ypinhsuan Would it be possible to overload the method instead of taking null for the second argument when it is an add operation?
274 (commented on others PR)
We can't use lastShownList
because it does not contain all students in Tutor's Pet. The model has to handle this check.
275 (commented on others PR)
| **List all students and classes** | `list` | |
276 (commented on others PR)
1. You type the command `edit-lesson c\1 l\1 d\Tuesday` and press <kbd>Enter</kbd>.
277 (commented on others PR)
1. You type `find-student roy` and press <kbd>Enter</kbd>.
278 (commented on others PR)
1. You type `edit-student 3 e\charlotteolive@example.com` and press <kbd>Enter</kbd>.
279 (commented on others PR)
I think most of existing instructions do not include a fullstop here?
280 (commented on others PR)
1. Finding a student
281 (commented on others PR)
1. Editing a student
282 (commented on others PR)
1. Deleting a student while all students are being shown
283 (commented on others PR)
1. Adding a student
284 (commented on others PR)
(where `x` is larger than the size of class list)<br>
285 (commented on others PR)
Agree with the annotations, but I think it is okay to dedicate a separate PR for that also.
286 (commented on others PR)
Not sure if we should be including the reference to LumiNUS, perhaps it should be included in the glossary then?
1. It is the end of the semester and you wish to key in your students' attendance into LumiNUS. You enter the
287 (commented on others PR)
1. The change resulting from the command's execution is saved using the `commit(...)` method for the `undo`/`redo` feature.
288 (commented on others PR)
1. A new instance of an `AddAttendanceCommand` object would be created by the `AddAttendanceCommandParser` and returned
289 (commented on others PR)
It's better to play safe and include it since we did also include Telegram
in the glossary.
290 (commented on own PR)
TIL, didn't know that.
Quite interesting explanation here also: English StackExchange
291 (commented on own PR)
The JavaDoc was adapted from an equivalent JavaDoc in UniqueStudentList
.
I would be more inclined to retain both in their current expressions.
292 (commented on own PR)
This JavaDoc was directly adapted from a corresponding JavaDoc in the existing UniqueStudentList
class as well. As such, I would be more inclined to retain the current expression since it is consistent with existing code.
The backing list
refers to the internalList
while unmodifiable means that any attempted modifications on the list would result in an UnsupportedOperationException
being thrown.
293 (commented on own PR)
// workaround as storage functionality for ModuleClasses has not been implemented
294 (commented on own PR)
// workaround as storage functionality for ModuleClasses has not been implemented
295 (commented on own PR)
Agree with @junlong4321 for consistency.
296 (commented on own PR)
This JavaDoc was directly adapted from a corresponding JavaDoc in the existing UniqueStudentList class, so I would be more inclined to retain the current expression since it is consistent with existing code.
297 (commented on own PR)
298 (commented on own PR)
As these informal list points are not complete sentences and are fragments, I would be more inclined to leave the full stop out?
299 (commented on own PR)
Oops, that slipped through my manual search and replace.
300 (commented on own PR)
I think for this case, it would be okay to not include an empty line above the comment since it is the first line in the method body. It will also be more in line with existing code.
301 (commented on own PR)
Good idea, added in!
302 (commented on own PR)
Resolved instead by changing to lowercase throughout, more in line with comments found above.
303 (commented on own PR)
Because of the need to include the CURRENT_INDICATOR
for a particular entry, which is rather specific to ViewHistoryCommand
, the method in StringUtil
would be oddly specialised for a method in the commons
package.
Instead, I think I would abstract out the creation of the message to a helper function that resides within the ViewHistoryCommand
class.
304 (commented on own PR)
I've included this spacing to separate code used to set up the environment (above) from the code that is being tested (below).
305 (commented on own PR)
I've included this spacing to separate code used to set up the environment (above) from the code that is being tested (below).
306 (commented on own PR)
The cache is used in the following scenario:
The user has some previous commands already saved in the history.
The user partially types a command string, but decides to refer to a previous command.
The user recalls the previous command for reference but wants to return to the partially typed command.
The user can retrieve his partially typed command string from the cache.
I've also included some logging functionality at the info and fine levels.
307 (commented on own PR)
Hmm I wanted to differentiate this constructor from the previous as this constructor is typically not meant to be used to create new lessons, but rather act as a "copy" constructor with modifications. Would it be better to leave it as is, add the word "new", or "Creates a copy of a lesson with the specified parameters."?
308 (commented on own PR)
I did consider the direct de/serialisation of key-value pairs using the Jackson, however I was rather hesitant to use it as I was unsure how it would play with the current implementation of JsonUtil
. Similarly, the StudentAttendance
implementation was used to avoid the need to complicate the deserialisation of key-value pairs.
I do agree with you that the direct serialisation would be more intuitive and provide a one to one mapping with the actual classes in the model.
309 (commented on own PR)
I'll be inserting another diagram over there (around line 280) to explain the case when the current value is cached in a subsequent PR. So I think I'll leave the summary at the end for now.
310 (commented on own PR)
I've linked it to the implementation section instead.
@ruixuantan Would it be possible for you to invert the direction of the diagram of the Attendance
model? It's kinda weird since its the only class diagram where the hierarchy is going from bottom up.
311 (commented on own PR)
I did consider changing the bullet points to numbered steps, however I decided against it since its the mock PE tomorrow and its unlikely that everyone will be able to standardise it by then.
312 (commented on own PR)
I took a look at some of the examples that Diana gave, and it seems that Title Case is used for all headings except those that are related to commands. As such for our user guide, I've standardised it to use Title Case for all heading levels 3 and above, while Sentence case is used for all heading levels 4 and below.
313 (other comment)
Can you rebase and then should be good to go.
314 (other comment)
Not sure if we need to get approval before we merge this in since we are trying to use a new module?
315 (other comment)
This seems to be missing the saving of UUIDs to local storage, is that planned for a separate PR?
316 (other comment)
Closed with #61.
317 (other comment)
Closed with #62.
318 (other comment)
Resolved in #68.
319 (other comment)
Closed with #55.
320 (other comment)
Closed with #55.
321 (other comment)
Closed with #55.
322 (other comment)
Closed with #55.
323 (other comment)
@ruixuantan could I also get your opinion on the test cases written for the new features?
324 (other comment)
Closed in #131
325 (other comment)
@ruixuantan This PR only adds unit tests for LessonUtil
since they were updated. I'll leave #158 open until unit tests have been added for ModuleClassUtil
.
326 (other comment)
Non-issue since users can use stats to see if a week has an attendance record and use find attendance to view the specifics.
327 (other comment)
Probably won't fix due to time constraint.
For future reference, LumiNUS uses the term Class Groups.
328 (other comment)
Issue remains unresolved.
Example: Add and edit commands tend to be similar and can be condensed further.
329 (other comment)
Not a bug, intended behaviour. Student David Li
is not part of CS2103T Tutorial
in sample data while Alex Yeoh
is.
Error message clearly states so.
330 (other comment)
Not a bug, intended behaviour. Lessons should not be overnight anyways.
Might want to include this constraint in the documentation?
331 (other comment)
Bug inherited from AB-3.
Perhaps will not fix or put in place regex limitation?
332 (other comment)
Duplicate of #232
333 (other comment)
Duplicate of #232
334 (other comment)
Duplicate of #232
335 (other comment)
Duplicate of #232
336 (other comment)
Duplicate of #233
Not a bug, intended behaviour.
Perhaps list-student with class parameter should filter the class list as well.
337 (other comment)
Duplicate of #238
338 (other comment)
Inherited from AB-3.
339 (other comment)
Duplicate of #226
340 (other comment)
Somewhat a duplicate of #226.
Will be fixed with that.
341 (other comment)
Bug inherited from AB-3.
Likely won't fix since we cannot throw multiple exceptions.
342 (other comment)
Will be fixed with #226.
This likely won't be fixed on its own since there will no longer be any ambiguity.
343 (other comment)
Duplicate of #232
344 (other comment)
Not a bug, intended behaviour.
Perhaps we can change week to occurrence for less confusion?
345 (other comment)
Not a bug... It's sample data for a reason...
346 (other comment)
Unable to reproduce.
347 (other comment)
Will not include Student and Utility as no description/alternative explanation that adds value could be found.
@aqcd
(189 comments)1 (commented on others PR)
Do change the USERGUIDE_URL in HelpWindow.java as well!
2 (commented on others PR)
Switch to use logger
3 (commented on others PR)
Switch to use logger, same for other 2 instances below
4 (commented on others PR)
Switch to use logger
5 (commented on others PR)
Remove
6 (commented on others PR)
"Clears the item list"?
7 (commented on others PR)
Would it be better to default quantity to 0 and description/location to none if user doesn't key them in? Currently they act as compulsory fields.
8 (commented on others PR)
Javadocs
9 (commented on others PR)
Javadocs
10 (commented on others PR)
Javadocs
11 (commented on others PR)
Javadocs
12 (commented on others PR)
Extra lines
13 (commented on others PR)
change address-book
14 (commented on others PR)
Javadocs
15 (commented on others PR)
change comment title
16 (commented on others PR)
change comment title
17 (commented on others PR)
person -> item
18 (commented on others PR)
Should these be locationIds and recipeIds?
19 (commented on others PR)
Should these method names be getLocationIds and getRecipeIds?
20 (commented on others PR)
use this format instead, replace with the fields we have
21 (commented on others PR)
plural forms
22 (commented on others PR)
plural forms
23 (commented on others PR)
extra lines
24 (commented on others PR)
address book -> item list?
25 (commented on others PR)
Javadocs
26 (commented on others PR)
Javadocs
27 (commented on others PR)
Make this comment appropriate pls 😃
28 (commented on others PR)
Javadocs
29 (commented on others PR)
Javadocs
30 (commented on others PR)
Javadocs
31 (commented on others PR)
Javadocs
32 (commented on others PR)
the right side has less equal signs 😦
33 (commented on others PR)
change address book to item list or something similar
34 (commented on others PR)
same for this segment
35 (commented on others PR)
change logger message
36 (commented on others PR)
itemToAdd might be better
37 (commented on others PR)
extra lines
38 (commented on others PR)
item -> item and location
39 (commented on others PR)
item -> item and location
40 (commented on others PR)
person -> item
41 (commented on others PR)
extra lines
42 (commented on others PR)
ItemList->RecipeList
43 (commented on others PR)
item list file path
44 (commented on others PR)
of recipes
45 (commented on others PR)
recipe list file path
46 (commented on others PR)
will fail checkstyle
47 (commented on others PR)
item -> recipe
48 (commented on others PR)
checkstyle
49 (commented on others PR)
can consider shorter prefix
50 (commented on others PR)
for clarity can change to "Recipe ID is out of range"
51 (commented on others PR)
should this be {@code Item}?
52 (commented on others PR)
catch specific exception
53 (commented on others PR)
add comment above this line specifying that this is for the delr command
54 (commented on others PR)
conform -> conform to
55 (commented on others PR)
extra lines
56 (commented on others PR)
this constructor might be misleading, would it be better to modify the existing one?
for instance
if (!isDeleted) {
idCounter++;
}
in the existing constructor might make it usable as an equivalent to this one
57 (commented on others PR)
remove or change to logger statement
58 (commented on others PR)
Name typo (?), img not updated
59 (commented on others PR)
[stephentan]
60 (commented on others PR)
change names in [ ]s to be consistent styling
img not updated
61 (commented on others PR)
img not updated
62 (commented on others PR)
address book -> item/recipe
63 (commented on others PR)
these steps as well
64 (commented on others PR)
persons -> items/recipes
65 (commented on others PR)
actual pictures pls 😃
66 (commented on others PR)
should this be 3a and 4a?
67 (commented on others PR)
recipe
68 (commented on others PR)
standardise with README, use InvInator.jar or change README to inventoryinator.jar
69 (commented on others PR)
add line back
70 (commented on others PR)
add line back
71 (commented on others PR)
add line back
72 (commented on others PR)
add line back
73 (commented on others PR)
add line back
74 (commented on others PR)
via the issue tracker of this repository, with link to it
75 (commented on others PR)
keep names consistent - full name or given name
76 (commented on others PR)
rephrase to "what is going on under the hood"
77 (commented on others PR)
should this be "deli stone" for the moment?
78 (commented on others PR)
delr -n >name> -i >index>?
79 (commented on others PR)
should locations be included as well?
80 (commented on others PR)
del -> deli
81 (commented on others PR)
same for this line
82 (commented on others PR)
delete -> deli/delr
83 (commented on others PR)
mark as TODO for easier search
84 (commented on others PR)
optionally provide a short intro on how we structured our personas (explain that our app will help transition the before scenario to the after scenario, etc.)
85 (commented on others PR)
include option to use
java -jar InvInator.java
86 (commented on others PR)
contacts -> items
87 (commented on others PR)
mark as TODO
88 (commented on others PR)
mark as TODO
89 (commented on others PR)
should we change to deli and delr for now?
90 (commented on others PR)
should we split del -> deli + delr?
91 (commented on others PR)
should we split del -> deli + delr here?
92 (commented on others PR)
i think we should specify that they need to overwrite multiple files, since our storage for each class is in separate files
93 (commented on others PR)
change titles for each of these files
94 (commented on others PR)
Should this use the NOT_FOUND message instead? User does not need to know our implementation
95 (commented on others PR)
itemList.removeIf(x -> !x.getName().equals(productName) || x.isDeleted());
in line 43 looks like it already ensures the item won't be deleted
96 (commented on others PR)
Suggest to change phrasing to something like
"soft deletes recipes that contain deleted item as product or ingredient"
97 (commented on others PR)
DeleteRecipeCommand -> DeleteItemCommand
98 (commented on others PR)
use proper punctuation please
99 (commented on others PR)
use proper punctuation please
100 (commented on others PR)
and all recipes associated with the item
101 (commented on others PR)
please space the methods in this file
102 (commented on others PR)
spacing
103 (commented on others PR)
spacing
104 (commented on others PR)
spacing
105 (commented on others PR)
remove this line
106 (commented on others PR)
@code item
107 (commented on others PR)
spacing
108 (commented on others PR)
proper punctuation please
109 (commented on others PR)
spacing
110 (commented on others PR)
spacing
111 (commented on others PR)
spacing
112 (commented on others PR)
spacing
113 (commented on others PR)
spacing
114 (commented on others PR)
spacing
115 (commented on others PR)
use block comment
116 (commented on others PR)
fix spacing in this file
117 (commented on others PR)
fix spacing in this file
118 (commented on others PR)
fix spacing in this file
119 (commented on others PR)
spacing
120 (commented on others PR)
space out these tests
121 (commented on others PR)
re-add spaces in this file
122 (commented on others PR)
fix spacing
123 (commented on others PR)
fix spacing
124 (commented on others PR)
spacing
125 (commented on others PR)
spacing
126 (commented on others PR)
spacing
127 (commented on others PR)
more clear explanation needed
128 (commented on others PR)
spacing
129 (commented on others PR)
spacing
130 (commented on others PR)
should these be containsMultipleWordsIgnoreCase?
131 (commented on others PR)
remove line
132 (commented on others PR)
remove line
133 (commented on others PR)
is it possible to test results of command? eg. if no such item exists, or check that the item being shown is indeed the right item
134 (commented on others PR)
import from the file with existing modelstub
135 (commented on others PR)
deceptive naming
try to remove if not too necessary, is an unusual class to have
136 (commented on others PR)
use isEmpty
137 (commented on others PR)
Might be better to not have "will you like to add some?" if there's no direct button to do so
138 (commented on others PR)
use isEmpty
139 (commented on others PR)
should this file be added?
140 (commented on others PR)
Just "No items match the search string." should suffice here
141 (commented on others PR)
One or more... will suffice
142 (commented on others PR)
perhaps just "None" is better?
143 (commented on others PR)
change these tests to using wrong prefix
can remove the old tests once replaced
144 (commented on others PR)
remove, same for the rest of the printlns in this file
145 (commented on others PR)
change other list
as well
146 (commented on others PR)
should this be unhidden? same for recipe variant as well
147 (commented on others PR)
should recipes be reset as well? or is it automatically reset since all items are removed
148 (commented on others PR)
is now supported as addq, should update this?
149 (commented on others PR)
will this ever be supported?
150 (commented on others PR)
same for this
151 (commented on others PR)
space equally as the above lines
152 (commented on others PR)
spacing after ,
153 (commented on others PR)
remove extra line
154 (commented on others PR)
add test to edit tags
155 (commented on others PR)
add test for this
156 (commented on others PR)
standardise to without the "inator", same for rest of instances
157 (commented on others PR)
change to more informative error message, at least the itemId of the item that caused the error (even if it never hits) - but keep documentation
158 (commented on others PR)
might want to use stringbuilder here and the subsuquent +=s
159 (commented on others PR)
don't do this, it creates coupling btwn the variables - use a method that returns Integer.parseInt(...)
160 (commented on others PR)
document why it is ignored, or add logger (same for other similar instances)
161 (commented on others PR)
why this change?
162 (commented on others PR)
standardise to all words inside ** ** to have 1st letter in caps, eg. Add tag to item
-> Add Tag to Item
163 (commented on others PR)
either -> any
164 (commented on others PR)
either -> any
165 (commented on others PR)
add ... after string2
like in findt
166 (commented on others PR)
add {digit}
like in findt
167 (commented on others PR)
remove space after /
168 (commented on others PR)
quantity
-> tag
169 (commented on others PR)
change this to something relevant
170 (commented on others PR)
might be better to put commas? same for find
171 (commented on others PR)
this message doesn't look right, also don't see it being used
172 (commented on others PR)
is -> was
173 (commented on others PR)
wrong class
174 (commented on others PR)
add line spacing before this line
175 (commented on others PR)
why including overlaps? add documentation
176 (commented on others PR)
space this out with lines before & after
177 (commented on others PR)
change javadocs
178 (commented on others PR)
change javadocs
179 (commented on others PR)
but don't duplicate tags also get handled? some documentation contradiction here
180 (commented on others PR)
change javadocs
181 (commented on others PR)
wrong type of command...
182 (commented on others PR)
add more spaces
183 (commented on others PR)
from below code it looks like this will only show iff the user input is exactly the current tags. should it also show if it's a subset?
184 (commented on others PR)
add message
185 (commented on others PR)
concerning, any reason why?
186 (commented on others PR)
try reverting this particular chunk and see if you can still run?
187 (commented on others PR)
modes, which are: display...
188 (commented on others PR)
this needs a clearer explanation
189 (commented on others PR)
a, b
190 (commented on own PR)
Replaced by the ItemParserUtil and RecipeParserUtil
191 (commented on own PR)
Will be added when future tests require it, currently the item list is needed to reset the item's recipelist so some tests don't contaminate it and affect future tests.
192 (commented on own PR)
The constructor takes Set in at the moment, might look into this in future
193 (other comment)
Done in https://github.com/AY2021S1-CS2103T-F13-1/tp/pull/17
194 (other comment)
Done in https://github.com/AY2021S1-CS2103T-F13-1/tp/pull/16
195 (other comment)
Issue #30 opened as per review.
196 (other comment)
resolved by #31
197 (other comment)
Pushed to future PRs:
LocationList current defaults to Optional.empty, to be fixed and tested.
RecipeParserUtilTest incomplete, does not test for ingredient-related parsing.
198 (other comment)
Can now be closed, so closing the tutorial PRs.
199 (other comment)
Can now be closed, so closing the tutorial PRs.
200 (other comment)
Can now be closed, so closing the tutorial PRs.
201 (other comment)
Can now be closed, so closing the tutorial PRs.
202 (other comment)
Opened #73 regarding above comment
203 (other comment)
needs update of developerguide.md as well
204 (other comment)
seems too difficult to implement reliably in reasonable time complexity
205 (other comment)
Intended behaviour due to regex behaviour.
206 (other comment)
Agree with the suggestion, but complexity is too high for our scope and timeframe 😦
207 (other comment)
Cannot replicate, will KIV
208 (other comment)
Has been resolved.
209 (other comment)
Moved to issues #148, #149, #150, #151, #152
210 (other comment)
UG section done, DG section remains
211 (other comment)
closed as per recommendation by prof
212 (other comment)
No more functional code for v1.4.
@ChooJiaXin
(183 comments)1 (commented on others PR)
New feature added does not correspond to the feature you were assigned. Possible typo?
2 (commented on others PR)
Examples provided not changed to match the changed feature.
3 (commented on others PR)
User command should be just "list" instead of "list 2" to fit the explanation fo the command. Possible typo?
4 (commented on others PR)
Maybe changing it to "displays all your assignments and lessons for the next 2 weeks" would be more succinct?
5 (commented on others PR)
How about "displays all your lessons and assignments for the next 2 weeks (including the current week)"?
6 (commented on others PR)
Looks good!
7 (commented on others PR)
@printinghelloworld sounds good 😃
8 (commented on others PR)
Looks good 😃 A minor nitpick is that you may want to consider removing point number 3 ("ASM retrieves lesson data from NUSMods API") as according to the textbook, use cases only describe the externally visible behavior, not internal details, of a system.
9 (commented on others PR)
Similar to the above comment, maybe it would be better to change the phrasing to describe how the ASM displays the lessons from the newly imported timetable
10 (commented on others PR)
Maybe including the time the assignment is due in the deadline would be better?
E.g: n/Lab report 3 d/23/04/2020 1230 mod/CS2100
11 (commented on others PR)
Since we have some optional fields as well, maybe it would be clearer to the user if we changed the description given in AB3 to match our project?
12 (commented on others PR)
I was suggesting to keep the Tip section and change the description to "You can use the remind tag to set reminders for the assignment you want to add instead of using the remind command after adding the assignment" or something along those lines.
13 (commented on others PR)
Currently, module code can accept the same string format address in AB3. Perhaps consider changing it the VALIDATION_REGEX to match the format of module codes as well?
14 (commented on others PR)
Testing of new ModuleCode field may be more accurate if the input was changed to match the module code format.
15 (commented on others PR)
INVALID_ADDRESS_DESC should be INVALID_MODULE_CODE_DESC for consistency 😃
16 (commented on others PR)
Similar to the above comment, VALID_ADDRESS_AMY should be VALID_MODULE_CODE_AMY.
17 (commented on others PR)
Similar to VALID_ADDRESS_AMY comment.
18 (commented on others PR)
Name of method still refers to address instead of moduleCode. Possible typo?
19 (commented on others PR)
Could consider changing the test cases to test for valid module codes 😃
20 (commented on others PR)
According to the 2103T textbook, the suggested guideline for code quality is to break-line after the bracket instead of in the middle of an instantiation.
E.g:
JsonAdaptedPerson person = new JsonAdaptedPerson(
VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS);
21 (commented on others PR)
The comment describing the test still refers to address field instead of module code field.
22 (commented on others PR)
Similar to other comments, the comment describing the test still contains address.
23 (commented on others PR)
Comments still refer to address. But it is just a minor nitpick 😃
24 (commented on others PR)
Similar to other comments 😃
25 (commented on others PR)
This line can be removed 😃
26 (commented on others PR)
Comment still refers to address instead of module code
27 (commented on others PR)
Maybe could do more testing to ensure that the regex works as it's supposed to? You can consider testing for modules codes with no alphabets at the start ("1010S"), modules with no numbers ("GER"), modules that begin with more than 3 alphabets ("ABCD1000") etc
28 (commented on others PR)
Comment still refers to address field.
29 (commented on others PR)
Similar to other comments relating to address comments 😃
30 (commented on others PR)
Similar to other comments relating to address comments 😃
31 (commented on others PR)
Similar to other comments relating to address comments 😃
32 (commented on others PR)
Similar to other comments relating to address comments 😃
33 (commented on others PR)
The comment describing the email test is not deleted.
34 (commented on others PR)
The comment for this test still contains 'email'
35 (commented on others PR)
yup
36 (commented on others PR)
This test case seems to still have references to email.
37 (commented on others PR)
Comment still references email.
38 (commented on others PR)
Comments for this field use 'persons' instead of 'assignments'. Be sure to check the comments as well 😃
39 (commented on others PR)
Similar to the other comment, the comments for the field use 'persons' instead of 'assignments'
40 (commented on others PR)
Similar to the other comment, the comments for the method use 'persons' instead of 'assignments'. Same for the equals method below this method 😃
41 (commented on others PR)
Similar to the other comments, the comments use 'persons' instead of 'assignments'
42 (commented on others PR)
Similar to the other comment, the comments for the method and the string parameter at line 9 use 'persons' instead of 'assignments'.
43 (commented on others PR)
Similar to the other comments, the comments use 'persons' instead of 'assignments'.
44 (commented on others PR)
Similar to the other comments, the comments use 'persons' instead of 'assignments'
45 (commented on others PR)
Nice test cases 😃 You may want to consider leaving a space between some parts of the code to make it more readable (e.g leaving a space between lines 79 and 80 and leaving another space between lines 81 and 82)
46 (commented on others PR)
Similar to the previous comment on improving readability 😃
47 (commented on others PR)
Similar to the other comments, the comments use 'persons' instead of 'assignments'
48 (commented on others PR)
According to the CS2103T textbook, the convention for the indentation for wrapped lines should be 8 spaces.
Following the CS2103T convention, you may want to consider changing the indentation to match the one in red 😃
49 (commented on others PR)
You may want to consider leaving a blank line between some lines to improve readability and code quality (E.g leaving a space between lines 82-83 and lines 84-84). You can refer to the screenshot of the CS2103T coding conventions below 😃
50 (commented on others PR)
Similar to the comment above on readability 😃 You may want to consider applying the same thing to the other test cases in this class
51 (commented on others PR)
JavaDocs should be @moduleCode instead of @address 😃
52 (commented on others PR)
JavaDocs should be @ModuleCode instead of @Address
53 (commented on others PR)
Since assignment starts with a vowel, it should be "an assignment" instead of "a assignment" 😃 The same typo can be found throughout the project. You can consider using the "find in path" feature in IntelliJ to help you find them (Edit -> Find -> Find in Path)
54 (commented on others PR)
This test case should be removed 😃
55 (commented on others PR)
May want to consider adding a link back to the main point which is that ProductiveNUS is supposed to help NUS Computing students resolve the problem so that it is clear what the aim is 😃
I also think it may be better to use more passive language? So instead of 'You often...' it may be better to use 'You may often...'. What do you think?
56 (commented on others PR)
Looks good! A suggestion could be to bold/box certain words to make the aim more obvious.
57 (commented on others PR)
The test cases look good! Minor nitpick, the comments next to the valid test cases do not match what is being tested. Also, if the lesson names do not accept numerals in the name, you may want to consider changing the validation regex to only accept alphabets 😃
58 (commented on others PR)
Nice test case 😃
59 (commented on others PR)
okie
60 (commented on others PR)
Naming the deadline field time may be more appropriate for the Lesson class as it doesn't really make sense for a Lesson to have a deadline.
61 (commented on others PR)
Personally, I feel that using 'schedule' is a little vague. Maybe you could consider changing it to 'schedule manager' or 'schedule book'? What do you think?
62 (commented on others PR)
Message for duplicate assignment still refers to address book.
63 (commented on others PR)
According to the CS2103T code convention, boolean variables should be named to sound like booleans (e.g isRemindTypo/containsTypo instead of remindTypo).
64 (commented on others PR)
I think can just use the hashcode method you created in Lesson.java as given the way you implemented it seems similar to how AB3 implemented it for Person, I think lessons.hashCode() should be fine.
65 (commented on others PR)
According to the CS2103T coding standards/conventions, we should try to avoid deeply nested methods. Maybe you could consider removing the else block and extracting the "happy path" to prevent the method from becoming too deeply nested. Another suggestion is adding an empty line in between lines of code to improve readability. You could consider applying the SLAP framework as well 😃
66 (commented on others PR)
I'm not very sure what "Lists the tasks within the next index number of weeks" means. Maybe consider changing the explanation to what is stated in the User Guide?
67 (commented on others PR)
Nice! You could consider abstracting out the implementation as a private method as the execute(Model model) method is a little long now and according to the CS2103T conventions on code quality, we should try to avoid too long methods 😃
68 (commented on others PR)
According to the CS2103T textbook, under code quality, we should strive to extract the "happy path" out. You could consider changing the code to extract the "happy path" 😄
e.g:
if (!isNotListAll) {
return new ListCommand(Index,fromZeroBased(0));
}
try {
....
}
69 (commented on others PR)
According to the CS2103T coding conventions, we should delete code that we do not need 😃 Are you planning to use the commented out code at a later date?
70 (commented on others PR)
JavaDocs still refer to assignments instead of lessons
71 (commented on others PR)
Similar to the comment above regarding the JavaDocs 😃
72 (commented on others PR)
Similar to the comment above regarding the JavaDocs
73 (commented on others PR)
String still refers to Assignment instead of task 😃
74 (commented on others PR)
JavaDocs still refer to assignment instead of Task
75 (commented on others PR)
Similar to the above comment regarding the JavaDocs.
76 (commented on others PR)
Similar to the above comment regarding the JavaDocs.
77 (commented on others PR)
JavaDocs still refer to assignments instead of tasks
78 (commented on others PR)
JavaDocs still refer to Assignment instead of Lesson
79 (commented on others PR)
Similar to the comment above regarding JavaDocs
80 (commented on others PR)
JavaDocs still refer to Assignment instead of Task
81 (commented on others PR)
Similar to the above comment regarding JavaDocs
82 (commented on others PR)
Similar to the above comment regarding JavaDocs
83 (commented on others PR)
Similar to the above comment regarding JavaDocs
84 (commented on others PR)
Good job 😃 You may want to consider abstracting lines 125 to 135 into another method as this method is quite deeply nested. Remember to SLAP hard 😄
85 (commented on others PR)
👍
86 (commented on others PR)
Good job 😃 You may want to consider extracting this part into another method as the CS2103T textbook suggests that we should SLAP our code to improve code quality.
87 (commented on others PR)
JavaDocs for ScheduleCommand refers to RemindCommand instead of ScheduleCommand.
88 (commented on others PR)
Good job 😃 A suggestion you may want to consider is to name the boolean variable "can" to something more descriptive and meaningful, as currently "can" doesn't really describe what the boolean is checking for. If you do change the name of the variable, remember to adhere to the CS2103T conventions and ensure that it sounds like a boolean value (i.e isPossibleTime, canSchedule etc)
89 (commented on others PR)
According to CS2103T conventions, boolean methods and variablels should be named to sound like a boolean (i.e haveOverlap, isOverlappingTime etc)
90 (commented on others PR)
JavaDocs refer to AddCommand instead of ScheduleCommand.
91 (commented on others PR)
Is this constructor used for testing?
92 (commented on others PR)
If this constructor is used for testing, it may be better to create a ScheduleStub class in the test package for testing 😃 But this is a minor issue that can be done when you do UnitTesting.
93 (commented on others PR)
The JavaDocs for the constructor should be phrased as "Constructs a ...". But this is a minor detail that can be fixed in v1.4 so don't worry about it for now bah 😃
94 (commented on others PR)
oh okie okie
95 (commented on others PR)
What's this System.out.println used for? Just curious 😄
96 (commented on others PR)
JavaDocs conventions for CS2103T is for JavaDocs to phrase JavaDocs in such a way: "Constructs...", "Retrieves....", as opposed to "Construct..." or "Retrieve..."
97 (commented on others PR)
Since the undo command currently only works with every command except for find and list, you may want to consider adding that information into the message usage and message undo fail so that the user will know exactly why it fails 😃
98 (commented on others PR)
According to the CS2103T code quality conventions, it recommends that we extract the "happy path".
99 (commented on others PR)
Maybe stating the priorities would be clearer for the user to understand?
For example, "Sets, HIGH, MEDIUM or LOW priority for the assignment identified by the index number...."
100 (commented on others PR)
JavaDocs still refers to the remind command for @param
101 (commented on others PR)
Assignment variable still refers to remind command instead of priority command
102 (commented on others PR)
False priority is a little misleading as it makes it sound as if the user used the wrong input format for the Priority command instead of setting no priority to the assignment. You may want to consider changing the phrasing of the JavaDocs for the constructor such that it better reflects what the constructor does 😃
103 (commented on others PR)
Slight nitpick but since you gave the date format before the time format, you could consider using "... finding of assignments by date and time separately", instead of "... finding of assignments by time and date separately". But it is fine if you leave it as it is too 😃
104 (commented on others PR)
You could consider changing the word prefixes, as it may not be very clear to the user exactly what we are referring to when we say prefixes. Maybe something like "Multiple assignment fields detected. Finding is done one field at a time." then provide examples of what a field is?
105 (commented on others PR)
The fetching of keywords for each field appears to have some overlaps. You could consider abstracting the implementation and creating a method called getKeywords(String prefix) to improve the code quality 😃
106 (commented on others PR)
Should be "Tests that an Assignment..." instead of "Tests that a Assignment...". Possible typo?
107 (commented on others PR)
Similar to the above comment on the grammatical error.
108 (commented on others PR)
Likewise 😃
109 (commented on others PR)
According to the CS2103T coding conventions, boolean methods and boolean variables should be named to sound like a boolean. However, it appears that this method is overriding a method from Predicate, so it should be fine 😃
110 (commented on others PR)
Nice test cases 😃 A suggestion is inserting white spaces between each test case to improve readability. You may want to consider testing for incorrect date and time as well (i.e 31-02-2020 or 2500) to ensure that the parser works as intended 😃
111 (commented on others PR)
Similar comment regarding the insertion of white spaces 😃
112 (commented on others PR)
You may want to consider testing for the other fields as well to ensure that they are working as they are supposed to but this is a minor nitpick 😃
113 (commented on others PR)
Similar comment regarding the insertion of white spaces 😃
114 (commented on others PR)
You may consider adding in comments to tell the reader exactly what you are testing for (e.g invalid deadline, invalid date, valid time or invalid module code). Though this is just a minor nitpick 😃
115 (commented on others PR)
Nice use of white spaces 😃
Though you may want to consider using the white spaces to not just improve readability but to group code with similar logic together (i.e grouping all the nameKeywords, deadlineKeywords... List>String> variables together and only inserting the white spaces in between priorityKeywords and findByNames. Likewise for the FindCommand variables and the assertEquals methods).
116 (commented on others PR)
The description and format does not fit the unprioritize command 😃
117 (commented on others PR)
The phrasing sounds a little weird to me, though it could just be me XD The "to import" at the end of the sentence appears a bit redundant as well since at the start of the sentence, you already mentioned that the information will be imported.
Maybe "The user can import information about their lessons into ProductiveNUS using their NUSMods timetable URL" would be more concise?
118 (commented on others PR)
Looks good 😃
119 (commented on others PR)
Maybe using "Unmarks the 3rd assignment as done" would be more appropriate since undone is not exactly proper English XD But I think the way it is now is fine too.
120 (commented on others PR)
Likewise for here 😃
121 (commented on others PR)
Oh when I googled it, Google said unmark is proper English but okie XD
122 (commented on others PR)
I agree with Andrea 😃
123 (commented on others PR)
JavaDocs refer to reminders instead of the suggested schedule 😃
124 (commented on others PR)
JavaDocs still refer to prioritize command
125 (commented on others PR)
Should be "Creates and returns an Assignment..." instead of "Creates and returns a Assignment.."
126 (commented on others PR)
JavaDocs still refer to RemindCommand
127 (commented on others PR)
JavaDocs refer to Remind instead of Done
128 (commented on others PR)
Commends refer to reminders instead of marking assignments as done
129 (commented on others PR)
Likewise for this comment 😃
130 (commented on others PR)
Oops must have forgotten to delete the empty return tag when I created this method. You can just delete the @return tag since the other methods don't seem to have the @return tag 😃
131 (commented on others PR)
Is there a reason these methods are static methods? They seem to only be used in the DeleteCommand class, so I don't think they have to be static.
132 (commented on others PR)
Does this currently only test for a single index?
133 (commented on others PR)
Maybe adding comments to explain what these are would be good as I am currently a bit lost as to why INDEX_FIRST_ASSIGNMENT was added twice 😃
134 (commented on others PR)
The phrasing for line 142 sounds a little strange. Maybe "... quickly view assignments that are due soon." would be better?
135 (commented on others PR)
Hmm, then maybe removing the (with deadlines nearing) would be better in terms of phrasing 😃
136 (commented on others PR)
For this table, I don't think the "type of keyword" column is very meaningful as the syntax column already mentions the type of keyword in all caps. Also, personally, I feel that the "syntax with example" column is a little cluttered. Maybe separating that column into 2 columns would be better? (one syntax column and one examples column)
137 (commented on others PR)
Format line should be placed right after the "Finding assignments" subheader to preserve consistency 😃
138 (commented on others PR)
Currently, the parameters section and the table appear to have some slight overlap. You may consider either incorporating the parameters section into the "Remarks" column in the table, or edit the parameters section such that it is distinct from the table.
139 (commented on others PR)
What if the user inputs remind without a priority?
140 (commented on others PR)
Is it because Priority is an optional field? Does remind have the same problem as well or is it just Priority?
141 (commented on others PR)
In our User Guide, MORE INDEXES has an underscore (e.g MORE_INDEXES) so you may want to consider changing the description to match the User Guide 😃
142 (commented on others PR)
Good catch! I shall go amend it later 😃
143 (commented on others PR)
Likewise for here 😃
144 (commented on others PR)
I think the previous subheader "Importing your timetable" would be more user-centric 😃
145 (commented on others PR)
You may want to consider telling the reader exactly where the task list is by providing a diagram of the GUI and highlighting Upcoming tasks
or you can just mention that the task list is displayed under Upcoming tasks
in the description 😃
146 (commented on others PR)
It may be good to phrase it as "your
task list" instead of "the
task list" to make it sound more user-centric, though this is just a minor nitpick.
147 (commented on others PR)
The diagram looks good! There seems to be a problem with the formatting of the Figure caption though (Refer to screenshot below)
148 (commented on others PR)
It may be good to mention where the user can find their added assignments 😃
149 (commented on others PR)
Looks good 😃 However, as the rest of us put the descriptions of the examples outside of the Example:
section, it may be good to write the examples as their own paragraphs (and add some diagrams if needed) for consistency. Then under Examples:
section, you may either write some examples commands (without the description) or just remove the section if you believe it is not necessary.
Also, another note is that @hyngkng has changed the priority prefix from priority/
to p/
150 (commented on others PR)
Maybe phrasing it as You can keep track of your uncompleted assignments...
would be better since undone
isn't really grammatically correct in this scenario XD
151 (commented on others PR)
Maybe phrasing it as "You can mark your assignments you have marked as done as undone...." would be better? Since currently it sounds like undone assignments can be marked with a specialised undone tag instead of allowing the user to mark done assignments as undone.
152 (commented on others PR)
Should be "You can unmark done assignment
s..." instead of "You can delete
...." 😃
153 (commented on others PR)
It may be good to include how to open the command interpreter for Mac and Linux OS as well 😃
154 (commented on others PR)
Yup. Umm not sure tbh.
You can either ask @andreatanky or next to "assignment list" just put "(highlighted in red)" or whatever colour you want to highlight it then add the diagram below 😃
155 (commented on others PR)
There are 2 done 2 3
the markup 😃
156 (commented on others PR)
You may want to consider mentioning the user benefit of this command (e.g "if you are new to ProductiveNUS and would like to view a summary of the command" or "if you want to see a quick overview of all available commands")
157 (commented on others PR)
Minor nitpick but maybe phrasing it as "You can use this command to exit the program" would be more consistent with the rest of the UG in terms of the style of writing 😃
158 (commented on others PR)
Do we not? XD
You can just rephrase the sentence then bah. The ones I provided are just suggestions 😃
159 (commented on others PR)
I agree with @printinghelloworld . Perhaps mentioning how the user will not be required to manually plan a time to do the assignment would be good 😃
160 (commented on others PR)
Noicee
161 (commented on others PR)
Remember to change the prefix from dobefore/
to before/
😃
162 (commented on others PR)
Is there a reason isSameAssignment causes the add command to be buggy but the equals method doesn't? Just curious XD
163 (commented on others PR)
May be good to include test cases where the index lies outside of the stated range (e.g 51)
164 (commented on others PR)
Noicee. You may want to consider adding comments for the boolean argumentRange
to tell the reader what the valid range is 😃
165 (commented on others PR)
Looks good! However, the other commands implemented the error message by using Messages.MESSAGE_INVALID_COMMAND_FORMAT ("Invalid command format!") and MESSAGE_USAGE ("Format: clear").
But this is just a minor nitpick so you can ignore this for now XD
I can go edit it to match the other classes once this PR has been merged 😃
166 (commented on others PR)
According to the CS2103T coding conventions, all constants must be in UpperCase and use underscore to separate words.
Since nusModsProtocolAndHost
is a final variable, it is a constant and should hence be named NUSMODS_PROTOCOL_AND_HOST
.
167 (commented on others PR)
Maybe instead of using the standard invalid command format message, telling the user that the URL is invalid may be a more meaningful error message 😃
168 (commented on others PR)
You may want to consider mentioning the user benefit of the edit command as well 😃
169 (commented on others PR)
There seems to be something wrong with the formatting of the table 😦
170 (commented on others PR)
Nice addition 😃 You may want to further expand on the user benefit as well as Dr Wee mentioned that we should answer the "so that" question.
A suggestion would be "...so that you can easily amend any mistakes you made when adding assignments".
171 (commented on others PR)
The description looks good! However, there seems to be something wrong with the formatting 😦 I have attached a screenshot of the FAQ is displayed in the UG on GitHub.
172 (commented on others PR)
The formatting here appears to have a minor error as well.
173 (commented on others PR)
Looks good! You may want to consider adding white spaces between the figure caption and the steps to improve readibility 👍
174 (commented on others PR)
Has @minhhhnguyen2000 been informed of the change in prefixes for the schedule command?
175 (commented on others PR)
Maybe it would be good to rename the final static variable to TIME_DATE_TIME_FORMAT
as well as I believe the Lesson class also makes use of the same variable to format the start and end times
176 (commented on others PR)
The JavaDocs of the Time class should be changed to match the new name.
Maybe something like:
"Represents the time found in a task in ProductiveNUS
Guarantees: immutable; is valid as decalred in
It would be ideal if isValidDeadline is changed to isValidTime as well, though if only the assignment class uses isValidDeadline, then it may be fine to leave the name as it is.
177 (commented on others PR)
If I am not mistaken, the time constructor is used for both assignments and lessons. Hence, it may be more apt to rename the parameter of the constructor as well 😃
178 (commented on others PR)
Likewise for here
179 (commented on others PR)
JavaDocs should be changed to match the new class name 😃
180 (commented on others PR)
Follow up to my previous comment on the naming of isValidDeadline, since isValidDeadline is used in to check the format for Lesson as well, it would be good to rename the method to isValidTime
181 (commented on others PR)
Not really related to your part, but it may be good to use the final static variable TIME_DATE_AND_TIME_FORMAT
here as well 😄
182 (commented on others PR)
Likewise for here
183 (commented on others PR)
Likewise for here. You can redirect this issue to @minhhhnguyen2000 if you wish XD
184 (commented on own PR)
address name should change to module code after merging the PR that changed the address field to module code
185 (commented on own PR)
Sounds good!
186 (commented on own PR)
Amended 😃
187 (commented on own PR)
Since we are probably going to be adding an edit feature in the future we can just leave it in first or add it to v1.2 since the implementation is all done for us already 😄
188 (commented on own PR)
What do you mean?
189 (commented on own PR)
At first, I made it a non-abstract class, but then IntelliJ made noise because it extends abstract class Command so i either had to override the execute method in NegataCommand or make NegateCommand abstract. Since I personally felt that overriding the execute method in NegateCommand was a little redundant since the UnremindCommand, UnscheduleCommand and UndoneCommand will override the execute method again, I decided to make the NegateCommand class abstract.
I can change it back to a normal class if you want to though, I shall just override the abstract execute method in NegateCommand if you want to change it to a normal class 😃
190 (commented on own PR)
Oh yup. Must have missed it out. I shall go change it now
191 (commented on own PR)
Amended!
192 (commented on own PR)
Amended!
193 (commented on own PR)
Amended!
194 (commented on own PR)
it's supposed to be 📋 Notes about the command format, I forgot to change the icon back to the clipboard. Shall go amend it later 😃
195 (commented on own PR)
amended!
196 (other comment)
LGTM.
197 (other comment)
Will description 'Tags your assignment with a reminder which adds it to 'Your reminders' section' be clearer?
Noted! I have edited the phrasing. Is the edited version clearer?
198 (other comment)
I have changed some of these user stories to make it more specific. eg. 'work'
Perhaps refer to DG to see which is better?
Updated accordingly 😄
199 (other comment)
Looks good! Just a small suggestion, maybe we can standardise the use of capital letters under 'I can' and 'so that I can'. we can either capitalise the first word or not capitalise the first word for both scenarios 😃
Sounds good! Which do you suggest is better? I'm fine with either way 😃
200 (other comment)
Looks good! Just a small suggestion, maybe we can standardise the use of capital letters under 'I can' and 'so that I can'. we can either capitalise the first word or not capitalise the first word for both scenarios 😃
Sounds good! Which do you suggest is better? I'm fine with either way 😃
I think for now we can not capitalise for both scenarios !
Amended 😃
201 (other comment)
LGTM! I was at first worried about nested loops but figured there isn't a much better way anyways
I refactored the code so that the nesting isn't that bad and made the code neater 😃
@silvernitro
(150 comments)1 (commented on others PR)
Actually does the user need to list all modules first before adding a new one ah?
2 (commented on others PR)
Maybe an empty list shouldn't affect the addition of a new module? If not a user can never add his first mod since the list will be empty then LOL
3 (commented on others PR)
* Duplicates are not allowed (by .isSameModule comparison)
4 (commented on others PR)
Should we update the default pathname to gradpad.json
or something along those lines?
5 (commented on others PR)
I think we can update the javadocs for these changed methods 😁
6 (commented on others PR)
* Adds a new {@code Module} to the {@code GradPad} that we are building.
7 (commented on others PR)
This test fails cos 2 Modules shouldn't be equal if they have different module codes. Perhaps we can remove the module code change
Module editedAlice = new ModuleBuilder(ALICE).withTags(VALID_TAG_CORE)
8 (commented on others PR)
I think we need to update TypicalModules.ALICE cos the tests can't build since ALICE is an invalid module. It'll probably be good to rename it too LOL cos alice is still a person's name
9 (commented on others PR)
Maybe we can rename the dummy path since we're no longer building addressbook 😁 Same goes for the change on line 46 below
userPrefs.setGradPadFilePath(Paths.get("gradpad/file/path"));
10 (commented on others PR)
Same as prev comment
11 (commented on others PR)
Maybe we can remove the regex split? It doesn't do anything since module codes never have spaces in them. Maybe we can just create an array with the module code in it as a single string:
String[] keywords = { CS2103T.getModuleCode().moduleCode };
12 (commented on others PR)
This is exactly the same as the CS2103T
in the prev line HAHAHA so it'll always return true LOL
In this test, we are seeing if modules with the same module code and MCs, but different tags, will be considered the "same" by GradPad, so maybe we can just change the tag:
Module editedModule = new ModuleBuilder(CS2103T).withTags(VALID_TAG_NON_CORE)
13 (commented on others PR)
Nit: I think we need to update the javadocs for this method
14 (commented on others PR)
Let's change these example tags HAHA altho I wish modules could give me friends and money...
15 (commented on others PR)
public static final String MESSAGE_DUPLICATE_MODULE = "This module already exists in the grad pad";
16 (commented on others PR)
Perhaps we can rename the variable editModuleDescriptor
here and also the references in the few lines below it.
EditModuleDescriptor editModuleDescriptor = new EditModuleDescriptor();
17 (commented on others PR)
public static final String MESSAGE_DUPLICATE_MODULE = "This module already exists in the grad pad.";
18 (commented on others PR)
/**
* Stores the details to edit the module with. Each non-empty field value will replace the
* corresponding field value of the module.
*/
19 (commented on others PR)
/**
* Creates and returns a {@code Module} with the details of {@code moduleToEdit}
* edited with {@code editModuleDescriptor}.
*/
20 (commented on others PR)
I think we need to update the javadocs here 😁
21 (commented on others PR)
* Deletes a Module identified using its displayed index from the grad pad.
22 (commented on others PR)
Perhaps we can use camelCase for the property names? JSON properties are basically hashmap keys; so just like how we wouldn't use multiple words (with spaces) in a key or variable name (altho JS/JSON allows), maybe we can use moduleCode
or module_code
instead?
23 (commented on others PR)
* Constructs a {@code JsonSerializablegradPad} with the given modules.
24 (commented on others PR)
Not a suggestion/request for change, but I was just wondering why the original code does this redundant check here when it could just call gradPad's setModules
fxn, which already uses UniqueModuleList
to ensure all modules are unique.
I just put this comment here first in case we want to improve code quality next time.
List<Modules> gradPadModules = modules.stream().map(JsonAdaptedModule::toModelType).collect(Collectors.toList());
try {
gradpad.setModules(gradPadModules);
} catch (DuplicateModuleException ex) {
throw new IllegalValueException(MESSAGE_DUPLICATE_MODULE);
}
25 (commented on others PR)
I think we need to rename the file also 😁
26 (commented on others PR)
I think this test assertion is the same as the one a few lines above 😁
Since it's supposed to include other valid values, perhaps we can do:
userInput = targetIndex.getOneBased() + CODE_DESC_CS2103T + INVALID_CREDITS_DESC + CREDITS_DESC_CS3216;
descriptor = new EditModuleDescriptorBuilder().withModuleCode(VALID_CODE_CS2103T).withModularCredits(VALID_CREDITS_CS3216).build();
27 (commented on others PR)
Nit: the test is perfectly fine but maybe we can replace the dummy keywords with module names
28 (commented on others PR)
The lastModule
is already CS3216 right HAHA so we don't need to "edit" it with the same code and credits again
Module editedModule = moduleInList
.withTags(VALID_TAG_CORE).build();
29 (commented on others PR)
😁 I think the re-naming of the variable was missed out
30 (commented on others PR)
* A utility class to help with building EditModuleDescriptor objects.
31 (commented on others PR)
* Parses the {@code tags} into a {@code Set<Tag>} and set it to the {@code EditModuleDescriptor}
32 (commented on others PR)
nit: typo
33 (commented on others PR)
This module is valid HAHA
It's why the test for invalid module in JsonSerializableGradPadTest
isn't passing
34 (commented on others PR)
Nit: grammar 😆
ease your module planning process. A module searching platform is also included in GradPad, providing easy
35 (commented on others PR)
class to create a corresponding `AddCommand`.
36 (commented on others PR)
I think the method call wasn't specified; is it supposed to be AddCommandParser.parse()
?
37 (commented on others PR)
We need to change deletePerson(1)
in line 51 😁
38 (commented on others PR)
deactivate GradPadParser
39 (commented on others PR)
typo? hehe
40 (commented on others PR)
Maybe we can rename the return variable as a
or smth? I only named it e
in my diagram cos it stands for EditCommand
😁
41 (commented on others PR)
Format: `add c/ {module code} cr/ {modular credits}`
42 (commented on others PR)
What does the timestamp in the status bar refer to ah?
43 (commented on others PR)
Grammar nit: Not really sure how to tweak it but "successful find" sounds a bit weeeird? 😁
Maybe one way could be "...in GradPad to successfully show the found module."?
44 (commented on others PR)
Yeah okay that sounds good 👍
45 (commented on others PR)
Let's update the javadocs too 😁
46 (commented on others PR)
Should we add "matches part of any word in ModuleCode" too? Since now we support it
47 (commented on others PR)
Do you think we should remove "multiple words" ah? I feel like it might be an irrelevant equivalence class now that we use a .contains()
check
Removing it will also match the new test cases below since we're removing the old tests involving multiple words
48 (commented on others PR)
Is there a typo for help modules
? LOL actually can't tell cos this is still a correct invalid command HAHA
49 (commented on others PR)
3. GradPad displays the deleted module onto the `Command Line Display`
50 (commented on others PR)
**Use case: UC05 Edit a Module in `Current Modules`**
51 (commented on others PR)
I think we also need an extension to cover the case when invalid fields are given e.g. credit/5
instead of cr/5
52 (commented on others PR)
Actually it's not just the required module list righttt cos that's only like ~10 mods out of all 150 CS mods that they can search for
1. User requests to search for a module in the CS curriculum.
53 (commented on others PR)
Same comment as previous 😁
54 (commented on others PR)
Perhaps it might be better to list this out separately? Maybe below this sentence we can put:
The following module details will be displayed:
module code
title
etc
55 (commented on others PR)
I think square brackets are only for optional arguments? Actually are we following the original UG syntax format ahhh? I'm not too sure
56 (commented on others PR)
Minor minor code nit: perhaps this could be joined into one if
statement instead of nesting so readers can easily tell what this block does (i.e. check if user is disconfirming)
boolean isDisconfirmation = stalledCommand instanceof Command && !commandText.equalsIgnoreCase("yes");
if (isDisconfirmation) {
57 (commented on others PR)
You mentioned that you were concerned about messiness earlier but I think this implementation is fine actually! 😀
But if we want to, we can abstract this out into a stallComponent
fxn that handles the stalling. It might take in a Command
, do the necessary stalling/operations, then return the CommandResult
. This will make things more future-proof cos we don't know how many future commands need confirmation, and we don't wanna keep stuffing everything into execute
if (command instanceof ClearCommand || command instanceof DeleteCommand) {
return stallCommand(command); // returns the CommandResult
}
58 (commented on others PR)
These two lines need to be swapped 😁 cos we don't want to stall the command before checking that it's valid, which only happens when we call getModuleToDelete
.
Right now if we type in an invalid delete e.g. "delete 100000", the command is still stalled and GradPad will wait for a confirmation. When a user then corrects himself and types "delete 1", GradPad will say "command aborted" instead of executing the corrected command
59 (commented on others PR)
Really really small nit: I think this method can remain as private since only handleStall
should use it HAHA Actually how come it's changed from private -> public since the last review ah?
60 (commented on others PR)
Since we have so many messages here, perhaps we can shift this into a class on its own e.g. RequiredCommandMessages
to avoid bloating the RequiredCommand
class. We can then do static imports as needed
61 (commented on others PR)
This code seems to be repeated in a few compareX
fxn so it might be good to abstract it out into a getModulesToAdd(>requiredModuleList>)
fxn or something along those lines that takes in a List and returns the string modulesToAdd
62 (commented on others PR)
Maybe we can name this isFoundationCleared
to make it more boolean-like? Same applies for the other compareX functions
63 (commented on others PR)
Perhaps we can use a java StringBuilder
here since we're iteratively doing string concatenations (line 91). Otherwise we'll be doing O(n) operations per iteration and this fxn will run in O(n^2) 😁
64 (commented on others PR)
Maybe it'll be better if we handle the exceptions in this command instead of propagating it cos that would mean we need to change the execute
contract (as has been done). But in doing so, we are breaking the interface segregation principle since ALL other commands are also now bound to a contract that isn't applicable to them.
65 (commented on others PR)
(cont. from prev comment)
So maybe what we can is to wrap these error-throwing calls in a try-catch block and handle exceptions here instead. After all, clients expect this execute
method to give them a result (success or failure message), and not an exception.
try {
setFoundationStorage(FOUNDATION_PATH);
setITprofStorage(ITPROF_PATH);
setMathAndScienceStorage(MATHANDSCI_PATH);
setScienceStorage(SCIENCE_PATH);
setInternshipStorage(INTERNSHIP_PATH);
} catch (IOException | DataConversionException e) {
// from the error msg you wrote in MainWindow hehe
return new CommandResult("File not found :(");
}
66 (commented on others PR)
Maybe we can declare the pathstring as a class-level constant instead to make it obvious where the filepath is stored when we need to change it next time 😄
67 (commented on others PR)
Same as RequiredCommand
, perhaps we can wrap this in a try-catch and handle the exception here rather than propagating it and binding all other commands to a new contract
68 (commented on others PR)
Same as previous comment in RequiredCommand
, we can use a StringBuilder
instead so that this fxn can run in O(n) instead of O(n^2)
69 (commented on others PR)
Maybe we can initialize this to an empty Optional
instead of leaving it as null? I think it's a bit weird that the field can either be null
, empty Optional
, or filled Optional
when the purpose of Optionals is to abstract away nulls anyway HAHA
But this one is really a minor suggestion 😁
70 (commented on others PR)
Perhaps we can consider using this instead:
assertTrue(actual.isEmpty());
As mentioned in the java API, it's generally not recommended to do equality checks for Optionals cos they produce unpredictable results 😁 Same applies for the other tests below and also ScienceCommandTest
71 (commented on others PR)
Shouldn't areModulesCleared
become true when we find out that the user has taken a science module?
72 (commented on others PR)
Likewise if areModulesCleared
is true then shouldn't we be showing MESSAGE_SUCCESS_SCIENCE instead since the user has cleared this basket HAHA
73 (commented on others PR)
How come taking a single internship module means that areModulesCleared
is false ahh? I tot it should only be false if total MCs > 12 since we need >= 12 in order to clear the internship basket >>
I FEEL LIKE IM MISSING SOMETHING OBVIOUS LOL SO PLS FORGIVE ME IF I AM HAHA IM DAMN CONFUSED
74 (commented on others PR)
Actually how come we need the areModulesCleared
flag instead of using an if-else statement ahhh?
Just to clarify, is this code saying: if a module is taken, then add its MCs to modularScore
. If it's not, add the module title/mc to the result to display instead.
PAISEH I'm very confused here ><
if (doesModuleAlreadyExist(module, currentModules)) {
int modularCredits = Integer.parseInt(module.getModularCredits().toString());
modularScore += modularCredits;
} else {
String moduleToAdd = module.getModuleCode() + " (" + module.getModularCredits() + " MCs)";
leftOverInternship.append("\n").append(moduleToAdd);
}
75 (commented on others PR)
I think we might not need to catch, reconstruct, and re-throw the same exception? HAHA We can just remove the try-catch block 😁
76 (commented on others PR)
I think there's no IllegalArgumentException
to catch here LOL StringUtil.ignoreCase
and SearchCommand's
constructor both don't throw ittt
77 (commented on others PR)
Just interesting side note (no need to change anything!):
JUnit tests automatically fail if any exception is thrown so we don't need to be concerned with catching exceptions and failing the test ourselves 😄
78 (commented on others PR)
Oooh okay! My bad hehe I didn't realised that checkArgument
in StringUtil.ignoreCase()
throws an undeclared IllegalArgumentException
(since its a runtime error)
79 (commented on others PR)
No need to change, this is great 😄
80 (commented on others PR)
Suggestion: Should we explain that we allow users to edit multiple fields in the same command?
81 (commented on others PR)
Should we use the term Completed Modules
list since we're using it throughout the UG to keep things consistent?
82 (commented on others PR)
Should we put a note or something letting users know that if their internet is down, then they can only search CS-curriculum modules?
83 (commented on others PR)
Shall we make this private
? This fxn should be uniquely called by this class only since it calls the inherited Object.getClass()
method that depends on this class's runtime Class
84 (commented on others PR)
And actually this fxn gets the file content from a resource and returns it as a string right HAHA not the file name, as mentioned in the fxn name
85 (commented on others PR)
This method is reading in a JSON string, like "{ module: { title: "abc", mc: "2" } }"
, not a file path 😁
86 (commented on others PR)
Should we list out what the constraints are? I think most people won't know, including me HAHA
87 (commented on others PR)
As mentioned above, this is actually the entire content of the file stored as a string, not the file name 😁
88 (commented on others PR)
Should we store these constants in the test package instead? I think it might not be so nice to mix production code and test code 😁 None of the production classes need to reference these anyway hehe
89 (commented on others PR)
Should we add a state check for module title equality too?
90 (commented on others PR)
Instead of changing this test to a negative test with duplicate modules in a filtered list, could we still keep it as a positive test for successful execution on a filtered list? Cos there's already a number of negative tests below for the same equivalence class 😁 We could edit the tags here instead and assert a successful execution
91 (commented on others PR)
Actually why do we need to look up the info for the module to be edited ah? I thought we only need to know if that module has been previously added to GradPad, which is already checked by EditCommand
. Just asking cos these http requests are expensiveee $$$ 😢
92 (commented on others PR)
Should we include negative tests for invalid module codes instead? i.e when a user tries to edit a module that doesn't exist in Completed Modules
93 (commented on others PR)
Smol nit: Since this test and the one before it both only specify one field, should we name them "onlyModuleCodeSpecified" and "onlyTagsSpecified" or something like that instead?
94 (commented on others PR)
Does this effectively remove the size constraints for this row so that it can be dynamically sized according to its children?
95 (commented on others PR)
This might just be me but I find the font size a bit too small >>
96 (commented on others PR)
I don't think so? HAHA
I think there are only 2 equivalence classes for the inputs to DeleteCommand
:
Since you've covered both I think we're good 😄
97 (commented on others PR)
Woah why is this test deleted
98 (commented on others PR)
Should we put this in the note too? We also need to remove the numbering
Refer to the [Feature Summary List](#feature-summary-list) below for a summary of all commands.
99 (commented on others PR)
Since this fxn is duplicated from RequiredCommandStorage
, should we just put this in JsonUtil
instead and make it static?
100 (commented on others PR)
Maybe we can rename this class? 😁 Since it actually stores storage paths and no messages HAHA
101 (commented on others PR)
We're still guaranteeing that it's immutable so maybe we can keep the first part of this sentence?
102 (commented on others PR)
Same comment as the one in ModuleTitle about immutability
103 (commented on others PR)
Just a suggestion: maybe we can use moduleCode.startsWith
instead. I have no clue about this but I'm just scared if some module ends with a "GEH" or smth LOL, then .contains
will still return true
104 (commented on others PR)
public static final String MESSAGE_FAILURE_GEM = "There was an error loading the required GE Modules :(";
105 (commented on others PR)
Suggestion: should we add a getAllModules
method to GemCommandStorage
and calling that instead of doing all of this manually here in the client code?
106 (commented on others PR)
return new CommandResult(MESSAGE_FAILURE_GEM);
107 (commented on others PR)
Since these 4 fxns have the same duplicate code, could the first 3 just make use of the 4th one? Then we can make the 4th fxn just a utility like setUpModules(Path path)
public void setUpTestModules1() throws IOException, DataConversionException {
setUpModules(TEST_GEH_SEM1_PATH));
}
public void setUpTestModules2() throws IOException, DataConversionException {
setUpModules(Paths.get(TEST_GEH_SEM2_PATH));
}
public void setUpSingleModule() throws IOException, DataConversionException {
setUpModules(SINGLE_MODULE_PATH);
}
public void setUpModules(Path path) throws IOException, DataConversionException {
JsonGradPadStorage storage = new JsonGradPadStorage(path);
ReadOnlyGradPad gradPad = storage.readGradPad().get();
testModules = gradPad.getModuleList();
}
108 (commented on others PR)
Nit: Maybe we can make these Path
objects just like the two paths above it? It's a bit funny when the 4 variable names here say "path" but actually it's 2 paths and 2 strings HAHA
109 (commented on others PR)
Coding convention suggestion: perhaps we can include the method under test 😁
public void execute_nullModel_throwsNullPointerException() {
110 (commented on others PR)
I think you mixed up actual
and expected
HAHA 🤣 in the other tests below too
111 (commented on others PR)
Actually we don't do prefix search 😁 e.g. searching "103" will return "CS2103T" also
public static final String FIND_COMMAND = "find CS1 : Displays all modules that contain the keyword 'CS1'. \n"
112 (commented on others PR)
Should we boast and say "from NUSMods" ah LOL
113 (commented on others PR)
Grammar nit:
ease and improve your **module planning process**.
114 (commented on others PR)
I think Serene mentioned that we can list examples of the "NUS resources" we are talking about. Maybe we can say NUSMods and/or faculty websites?
115 (commented on others PR)
Hmm, I didn't think of that but since you've suggested it, why not? Haha I think there's no harm and it might be good 😄
116 (commented on others PR)
Agreed - I think this could be in the testing guide in our DG instead since it's like "confirming" that the delete works. But I'm not too concerned abt this for the PE-dry-run for now 😄
117 (commented on others PR)
I'm feeling like this is starting to go into parsing territory hmmm... Should we put this in GradPadParser
instead? Then below we can just call gradPradParser.isYesCommandWord
or something
118 (commented on others PR)
Minor: I'm not sure if this violates the coding quality standard of not reusing formal parameters, but I'm also not sure what's an alternative tho HAHA
119 (commented on others PR)
O maybe it can be
Command command;
if (isYes(commandText)) {
command = gradPadParser.parseCommand("yes");
} else {
command = gradPadParser.parseCommand(commandText);
}
120 (commented on others PR)
We need to tweak the logic down here too cos now stalling doesn't work correctly 😕
If you type in a valid command while the app is asking for confirmation, it will execute that command instead of aborting the current stalled command since we're only aborting it when we get a ParseException
now.
E.g. delete cs2101
--> (app asks for confirmation) --> add cs1101s
--> (app adds cs1101s) --> yes
--> (app still deletes cs2101
121 (commented on others PR)
Typo (different commands):
'''suggestion
For example, if the command specifies 'edit MODULE_CODE c/NEW_MODULE_CODE t/core', 'edit MODULE_CODE t/core c/NEW_MODULE_CODE
'''
122 (commented on others PR)
Actually should we include the optional tags in this summary since the bug report raised the issue abt inconsistency?
123 (commented on others PR)
I agree with your first comment; I was thinking along the lines of this:
**Add** | `add {module code} [t/tags]` | `add CS2100 t/core`
124 (commented on others PR)
This will throw an error if there are no semesters, which makes semesterResult
empty, cos then we'll be calling .substring(0, -2)
. Even though the API will never return an empty semesterData
field, we can be defensive just in case something goes wrong while fetching and parsing the data.
We can avoid dealing with extra commas and spaces by not adding them until they're needed:
public String getSemesters() {
return semesters.stream().map(Object::toString).collect(Collectors.joining(", "));
}
125 (commented on others PR)
Nit:
* Parses input arguments and creates a new ForceDeleteCommand object
126 (commented on others PR)
Nit:
* Contains integration tests (interaction with the Model) and unit tests for
* {@code ForceDeleteCommand}.
*/
127 (commented on others PR)
Coding standard nit: there should be a blank line after the first line
128 (commented on others PR)
Would it work if we use the mapper that's already defined in the class?
129 (commented on others PR)
Maybe we can move this out of the loop since it doesn't change every iteration
130 (commented on others PR)
We don't actually need to check containsKey
HAHA if the map doesn't contain the key then the modules won't be equal (the next line)
131 (commented on others PR)
I think there are still a lot of preclusions HAHA like cs1010s, cs1010j, etc.
132 (commented on others PR)
Actually we don't need to store it separately since we already store storage
, which contains the map right HAHA
And just to add on, notice that execute
and compareModules
are now aware of preclusionMap
, even though it is only used by isModuleAPreclusion
, a much lower-level method. The parameter is being passed through 2 methods despite them never using it. This anti-pattern is also called prop drilling/threading in JS btw HAHA
Maybe we can just do Map>String, String> preclusionMap = storage.getPreclusionMap()
within the isModuleAPreclusion
fxn instead of in execute
?
133 (commented on others PR)
Maybe we can say "module-specific storage classes"? Cos the rest of the classes do more than extracting and parsing JSON (they also handle writing)
134 (commented on others PR)
Wah ok tbh I really like this - it couldn't be clearer xD
135 (commented on others PR)
Constructor calls should be the class name not the object's name. I think it can also be omitted since it's evident in this case 😄
RequiredCommand -> RequiredCommandStorage : RequiredCommandStorage()
136 (commented on others PR)
Similarly, the label should just be the class name without the new
keyword 😄
RequiredCommand -> CommandResult : CommandResult(leftOverModules)
137 (commented on others PR)
Actually ScienceCommand
doesn't contain a list of hard-coded modules right? HAHA if not then it wouldn't have to set and get the science modules fromRequiredCommandStorage
138 (commented on others PR)
I was abit confused when step 6 says GemCommand
already contains both storages, but step 7 says they're only created then. Maybe we don't have to mention the attributes? I think the creation of both objects is quite clear on its own
139 (commented on others PR)
Really damn small nit but maybe the happy path could be made clearer since it's actually just a single path:
if (!model.hasModule(module)) {
String moduleToAdd = module.getModuleCode() + "\t" + module.getModuleTitle()
+ " (" + module.getModularCredits() + " MCs)";
modulesToAdd.append("\n").append(moduleToAdd);
}
140 (commented on others PR)
Since all the setupXTestModules
methods have the same 2 lines for reading data, should we create a utility fxn to handle this instead?
141 (commented on others PR)
Agreed - idk how I missed this out the first time round paiseh >> Since it's in the Storage
component, it might be good if it's only concerned about storing and retrieving data without being aware of the model
142 (commented on others PR)
Typo: missing closing quote
SearchCommand -> ModuleInfoSearcher : searchModule("CS2103T")
143 (commented on others PR)
Should we put this in? It's not required to test the launch and I'm scared if it comes across as too mandatory. We need to remember that requiring internet connection is a tP constraint
144 (commented on others PR)
Should we put these in the Messages class?
145 (commented on others PR)
I think it's better to make this a static method since it is a getter for a static stub class; otherwise we'll have to do new NusmodsDataManagerTest
everytime we want to get the stub
146 (commented on others PR)
Da javadoc blank line HAHAHA SOZ I know it's annoying >>
147 (commented on others PR)
Nit: since this is a negative test (when input is null), maybe we can name it invalid test?
148 (commented on others PR)
Should this be .equals(null)
since the test is about empty objects/inputs?
149 (commented on others PR)
Instead of opening up Logic
and checking if its stalledCommand
is null, could we just do logic.execute(YES_COMMAND_WORD)
a second time instead? If stalledCommand
was correctly cleared the first time round, then this second execution should return the nothing-to-confirm msg
This way, we don't need the new contracts in the interface xD
150 (commented on others PR)
Coding standard nit: maybe we can import the DEFAULT_WIDTH
constant from GuiSettings
instead of using magic numbers? Same goes for height in the next test
151 (commented on own PR)
Updated these 2 badges so that when you click on them, they take you to our repo's CI and codecov pages respectively:
152 (commented on own PR)
Let me know if this regex is fine cos I'm not too sure what kind of module codes we support
153 (commented on own PR)
I left the contents unchanged for now as I only needed the tags as defaults
154 (commented on own PR)
I added module field templates here and left the rest of the templates alone. We can remove at the end if nobody else needs them
155 (commented on own PR)
I only added CS2103T and CS3216 as new modules in this class and left everything else alone first. Likewise, if nobody else needs them, we can remove them at the end
156 (commented on own PR)
Oh yeah you're right. In that case, I'll let filterModuleSummaries
take in a bunch of keywords to filter against. We can then define the keywords in a hardcoded constant depending on the list of required modules.
157 (commented on own PR)
We still need this normal file path cos it tells GradPad where to save data to
158 (commented on own PR)
Updated this and added IS1103 cos its now part of the list of new required modules
159 (commented on own PR)
Very very good catch! Thanks and resolved 😄
160 (commented on own PR)
This is now moved into the new isValidTagName
test method below
161 (other comment)
Ui looks great but I think the website says it has to be the ard the same size as the original. Right now it's too big:
Feel free to resize, update the PR, and merge in your own time! 💯
162 (other comment)
I think this issue is too big and general? Maybe each person can create an issue specific to their work e.g. my issue should be "Add feature list and command summary to user guide" since I'm doing first page of our google docs
163 (other comment)
@yan-soon typos have been fixed; thanks so much for catching them!
164 (other comment)
Update: As per @shaokiat suggestion, tweaked filterModuleSummaries
method in DataFetcherManager
class to accept multiple keywords to filter against. For now, I put some sample keywords in a constant MODULE_FILTER_KEYWORDS
in the same class. We can change it when we work on required modules?
165 (other comment)
"c/ new module code"
"t/ new tag"
166 (other comment)
Shift note abt command formats to Command Summary section
167 (other comment)
Linked to #164
168 (other comment)
Approved by 2101 tutor already.
169 (other comment)
Add support for "y" and "ye"
170 (other comment)
KIV
171 (other comment)
Add semester data to ModuleInfo
+ edit search
command to print it out
172 (other comment)
KIV hanming
173 (other comment)
Explain more in UG maybe?
174 (other comment)
Add a check for equivalent modules to Module
class, i.e. isEquivalent
method or something
175 (other comment)
Take a look at isCancel
in LogicManager.execute
and YesCommand
176 (other comment)
Use isSameModule
to check and display diff error msg
177 (other comment)
Duplicate of #153
178 (other comment)
Add case-insensitive check to UniqueTagMap
's checkAndReplaceTags
method
179 (other comment)
Create JSON file of equivalent modules (hashmap ds)
180 (other comment)
Change to parseDouble
181 (other comment)
Update: Change the Module --> Tag association from composition to navigability as discussed. Yes I made a typo in the commit LOL so I hope this clears confusion
@ureshiiYing
(132 comments)1 (commented on others PR)
I think you should keep "Developer".
2 (commented on others PR)
I checked again, and I think you missed out the find sales history feature under sales tracking.
3 (commented on others PR)
I agree.
4 (commented on others PR)
I think that this should be specified as a sub feature under list, so as to distinguish between all ingredients and a single ingredient.
5 (commented on others PR)
Perhaps this archive employees contact details section should be grouped with the other employee contact details features?
6 (commented on others PR)
I think this page will be continually updated, so we should include what we have done to the project so far - which would be the documentation section.
7 (commented on others PR)
For the ingredient levels, it would be good and clearer to state the unit of measurement. You could add this to the description or edit the examples to show this is the case.
8 (commented on others PR)
We are missing Feature 4.3 Find the sales history data based on date documentation.
9 (commented on others PR)
Remove the bullet points in this section to standardise the description field for the features. Instead of starting with a noun, start with a verb (once again to standardise across the UG). Eg. Set the level ...
10 (commented on others PR)
Since it's just one argument, requireNonNull(targetIndex)
will do.
11 (commented on others PR)
I think we should keep both. They will both be Phone objects, but with different prefixes.
12 (commented on others PR)
Perhaps you can use requireAllNonNull(...)
instead.
13 (commented on others PR)
Should this be using .equals
method instead to do the check?
14 (commented on others PR)
You are missing empty lines in between the methods.
15 (commented on others PR)
IngredientList should not be under AddressBook, as AddressBook should only be in charge of contact details.
16 (commented on others PR)
Mismatched javadoc?
17 (commented on others PR)
As mentioned earlier, functions and features relating to ingredients tracking should be abstracted out to its own classes (instead of being in AddressBook).
18 (commented on others PR)
I assume this has yet to be implemented?
19 (commented on others PR)
Incorrect test case? Should these be all throwing assertion errors instead? They should not be called as it is a default model stub that have all of the methods failing.
20 (commented on others PR)
Should target
be non null too?
21 (commented on others PR)
Requires change to fit ArchiveList
22 (commented on others PR)
Missing public attribute? Applies for all the other tests.
23 (commented on others PR)
Unnecessary white space?
24 (commented on others PR)
Is this an extra space?
25 (commented on others PR)
Command is an abstract class, no super constructor is needed.
26 (commented on others PR)
I think that perhaps naming the boolean isReset
is better, so that there isn't a double negative. This is just a grammar comment.
27 (commented on others PR)
No need to use String.format
if there is nothing to format.
28 (commented on others PR)
I think that they should be on the same line.
29 (commented on others PR)
I see,, then it makes sense to use isNotAlreadyReset
.
30 (commented on others PR)
I think it is better to be placed on the same line to standardise with the other case statements.
31 (commented on others PR)
Should be Unarchives
as the command is singular
32 (commented on others PR)
Is this an extra line?
33 (commented on others PR)
Grammar: It is equivalent to *the person being archived) OR (having archived the person).
34 (commented on others PR)
Could be better phrased as: "A Person whose archive status is true"
35 (commented on others PR)
Similar to the above comment
36 (commented on others PR)
Perhaps it should be views
because a command is singular.
37 (commented on others PR)
Can be combined by using requireAllNonNull
, however, this is also fine.
38 (commented on others PR)
Extra line
39 (commented on others PR)
This can be placed in one line
40 (commented on others PR)
spelling: should be archive
41 (commented on others PR)
The command is s-update
. Additional there should not be a colon after the command word.
42 (commented on others PR)
extra fullstop
43 (commented on others PR)
Oh, I am referring to the description. It should be "views a single ingredient ... ", since the command word is singular
44 (commented on others PR)
I think it is better to keep it in one line, so that it is standardised with the other case statements.
45 (commented on others PR)
Perhaps it is better to say View single ingredient?
46 (commented on others PR)
Is this perhaps a wrong import line?
47 (commented on others PR)
So you are suggesting that we keep the archived and not archived employees in the same contact list? OR will this list show only archived when passed in a archived list of employees?
48 (commented on others PR)
Understood!
49 (commented on others PR)
Should add underscore between the words. I believe this is part of the naming conventions
50 (commented on others PR)
Instead of saying short form name, abbreviation would be better.
51 (commented on others PR)
Saying OR
search may not be that user-friendly?
52 (commented on others PR)
Since you only stated one implementation, calling it Alternative 1
may not be that good? Since there was no other alternatives considered.
53 (commented on others PR)
There are a lot of empty lines in this java file. Are they all necessary and can it be cleaned up?
54 (commented on others PR)
Remember to delete this test if unused.
55 (commented on others PR)
Incorrect javadoc? I'm reviewing based on the assumption that this command will find an employee by the tag.
56 (commented on others PR)
I think FindTagCommand
or FindByTagCommand
would be more apt/ sounds better.
57 (commented on others PR)
Same problem as the javadoc
58 (commented on others PR)
So this is a different feature from the one listed in this PR?
59 (commented on others PR)
Remove extra line.
60 (commented on others PR)
I think it is better to add a blank line above this if-else block
61 (commented on others PR)
Same comments as TodayCommand
62 (commented on others PR)
Missing javadoc description
63 (commented on others PR)
It's also missing a javadoc description
64 (commented on others PR)
If the input was "9999999999999999999", it will cause a NumberFormatException as Integer.parseInt()
is not able to parse such a number. So, perhaps you should catch if limit has been exceeded first? You can test this to check if it's true for your case, because it was for mine.
65 (commented on others PR)
I think it is okay to leave out the parameters, but this is just a note.
66 (commented on others PR)
Extra blank line?
67 (commented on others PR)
Instead of using double negatives, this could be better phrased as " .., tags of length below 50 characters"
68 (commented on others PR)
Should be phrased as "There are a total of ... "
69 (commented on others PR)
Change to version 11
70 (commented on others PR)
Could you restore this line? to indicate the start of the util methods.
71 (commented on others PR)
hmm, I have also added this file, but differently... Will it affect your tests greatly, if mine could be used instead?
72 (commented on others PR)
There is a spelling error in "ingredient"
73 (commented on others PR)
There is a spelling error in "ingredient"
74 (commented on others PR)
There is a spelling error in "ingredient"
75 (commented on others PR)
Difference between these two functions?
76 (commented on others PR)
Change the subheader to just "Implementation"
77 (commented on others PR)
It should be restored below the setSalesRecordEntry method.
78 (commented on others PR)
Did you mean "who is available to work"?
79 (commented on others PR)
I think it is better to keep the order consistent. i.e Monday or Friday, instead of Friday or Monday. Applies to step 2 too
80 (commented on others PR)
Suggestion: I think it is more intuitive to follow the ordering of the days of the week. i.e. Tuesday should come before Wednesday
81 (commented on others PR)
I think that "computer's current date" is a better phrasing.
82 (commented on others PR)
Consecutive words with "-ing" should not be placed together. Suggestion: remove "using"
83 (commented on others PR)
There's only one example
84 (commented on others PR)
Should this be placed in between the div line to show the blue box? Since this is additional information about the tags
85 (commented on others PR)
Should this be placed in between the div line to show the blue box?
86 (commented on others PR)
Should this be placed in between the div line to show the blue box? Perhaps you could also add something to say "notes" about what? Applies to all similar sections
87 (commented on others PR)
I think the older version is better and less technical.
88 (commented on others PR)
Add in a brief explanation. eg. "tCheck currently does not support the use of human-modifiable save files" etc.
89 (commented on others PR)
The sentence doesn't sound fluent. Perhaps this could be better phrased? The last half of the sentence is grammatically incorrect.
90 (commented on others PR)
"can only show"
91 (commented on others PR)
I don't think you need the bullet point here, as there is only one point.
92 (commented on others PR)
Similar to above comment on bullet point.
93 (commented on others PR)
Remove bullet point here.
94 (commented on others PR)
Remove bullet point here.
95 (commented on others PR)
Similar for this, and other similar parts.
96 (commented on others PR)
Should be "... changes to all ..."
97 (commented on others PR)
Could be better phrased as such:
"Q: Why does tCheck ignore additional/ extra input that I add after single-word commands, like help
"?
Additionally,
I think it should just be "input" instead of "inputs" since the entire line entered is the input?
it should be "a" instead of "the" in "after the single-word command"
if "input" is used, then "extra input does not affect ..." OR if "inputs" is used, then "extra inputs do not affect ..."
98 (commented on others PR)
Should not be a question. A better phrasing is "How the command is processed"
99 (commented on others PR)
Note: For all the examples, I think there is a need to first explain the user input in an earlier section - which I believe should be covered under wang qian's updates. If that is done, then this section should be ok
100 (commented on others PR)
The sentences that contains "the situation is ... " is not fluent. Perhaps a better way to structure the sentence is: "there is an .... (describe the situation)". e.g change could be: "there is a duplication of valid prefixes." Alternatively, eg. "the situation faced is the duplication of valid prefixes". I prefer the first suggestion.
101 (commented on others PR)
Oh, okay I understand. I also think I figured out why it didn't sound fluent to me. I believe the sentence should be structured as this instead: "the situation of duplicate valid prefixes is detected". It was to do with the ending, rather than pertaining to "situation".
102 (commented on others PR)
Remove "Completed" in the sub-header. This was a recommendation from the peer review we did.
103 (commented on others PR)
I think it should be "brand" not "branch". Additionally, I don't think we need to be so polite by using "please".
104 (commented on others PR)
I think "all the six ingredients are pre-defined in tCheck's ingredient book." can be a sentence on its own.
105 (commented on others PR)
Should be "display" instead of "displays", because "will ... display"
106 (commented on others PR)
I'm not sure why, but I couldn't view the image when I was looking at this document in your branch. Did you remember to upload the image?
107 (commented on others PR)
It should be "store" not "stall". Applies to the rest of this section
108 (commented on others PR)
Should be "Manpower Management"
109 (commented on others PR)
Typo for "first"
110 (commented on others PR)
Perhaps using "User Guide" is better?
111 (commented on others PR)
"an executable command". as "executable" starts with a vowel and thus uses "an"
112 (commented on others PR)
Note: Not sure if a warning sign was used in the UG, perhaps we can discuss this.
113 (commented on others PR)
I think that you are missing the "italics" format for the terms related to tCheck's GUI
114 (commented on others PR)
Instead of "gives you...", "explains the ..." is a better choice of words.
115 (commented on others PR)
I think you should describe it in more layman terms first. eg. "It is the input that follows behind a prefix". Then, give the explanation, that you have written here.
116 (commented on others PR)
Missing fullstop at the end of the line
117 (commented on others PR)
Instead of "gives you...", "explains the ..." is a better choice of words
118 (commented on others PR)
Instead of "gives you...", "explains the ..." is a better choice of words.
119 (commented on others PR)
Perhaps use "Employee Directory" instead of "employee directory", since it is referring to a particular section inside tCheck.
120 (commented on others PR)
This can remain as "[Completed]". I was referring to the completed implementation subheader. Or do you think we can remove all the [completed] if our DG will only record completed implementation details?
121 (commented on others PR)
No need to edit here as I have added it in my update. Alternatively, I guess it can be resolved during merge conflicts
122 (commented on others PR)
Did you mean "re-enter the data in the correct format"?
123 (commented on others PR)
I feel that this is too specific to the implementation.
124 (commented on others PR)
Incorrect preposition. Should be "corresponds to"
125 (commented on others PR)
I think that this is a better phrasing: "until the index entered is valid"
126 (commented on others PR)
As mentioned earlier, this may be too specific to the implementation.
127 (commented on others PR)
Should be "display" instead of "displays" because "will .... display"
128 (commented on others PR)
Perhaps this should be "re-enter in the correct format"?
129 (commented on others PR)
Should it still be "persons"?
130 (commented on others PR)
This should be "from one computer to another"
131 (commented on others PR)
I don't think we need to say this? It sounds like a feature to me. This can be discussed further.
132 (commented on others PR)
Should be "... experience in ..."
133 (commented on own PR)
Indeed, I will make that change. Thanks for the catch!
134 (commented on own PR)
I have placed a blank line to separate the expected result and test case. In my opinion, there is a need for the blank line, but we could discuss this in the meeting to decide.
135 (commented on own PR)
I think I was unclear because I put test cases for updating one drink and more than one drinks under the first one. I will separate them.
136 (commented on own PR)
It may not be that direct. I will remove this section as I cannot explain it that accurately.
137 (commented on own PR)
Yes, I will update that.
138 (commented on own PR)
I don't think there is a need to do that, as it should be clear that this is a list of instructions, following line 130
139 (commented on own PR)
Thanks for the reminder.
140 (commented on own PR)
Thanks for the reminder.
141 (commented on own PR)
Thanks for the reminder.
142 (commented on own PR)
I think it should be clear as I mentioned Sales Tracker inside the Main View at the introduction of the sales-related features.
143 (commented on own PR)
True, I have mentioned the list earlier in the sentence.
144 (commented on own PR)
Sure, I will take this suggestion.
145 (other comment)
LGTM
146 (other comment)
LGTM
147 (other comment)
Thank you for the feedback! We will create a better error message for the input regarding the number of drinks sold. This will help to differentiate the error between wrong prefix and wrong type of input for number of drinks sold.
148 (other comment)
Thank you for pointing this out! It was not that s-list did not work, but rather s-list will not reorder the list back to the previous order after s-rank has sorted the list. It would not affect how users can use the sales tracker. We will merge the two types of list into one list function to reduce redundancy.
149 (other comment)
Thank you for pointing this out! We will update the s-update function to refresh and show the newest list.
150 (other comment)
Thank you for pointing this out! However, this is a behaviour that has been inherited from AB3's implementation. We will not be changing this behaviour. However, we will update the UG to make this clear to the user.
151 (other comment)
Thank you for the feedback! We have decided to merge the s-list and s-rank function, so as to reduce the redundancy in the list function. s-update will still refresh the list but in no order while s-list will show the list in a descending order.
152 (other comment)
Thank you for pointing this out! We will add a limit to the maximum number that the s-update feature can use, and also check for integer overflow.
153 (other comment)
Thank you for pointing this out! We will add an upper limit to the number that the s-update feature can update, and also check for integer overflow.
154 (other comment)
Thank you for pointing this out! We will add a limit to the maximum number that the s-update feature can update, and also check for integer overflow.
155 (other comment)
Thank you for the suggestions!
We would like the user to be able to update multiple drink items at once. Using INDEX would not be able to meet that requirement of ours due to the implementation of AB3 that we have inherited from.
The GUI window has a minimum size, such that the GUI components can still be fully seen. We thought that this would be better than having a GUI where going beyond the minimum size would result in a weird view. Nonetheless, thanks for the suggestions and feedback!
@fyshhh
(129 comments)1 (commented on others PR)
i agree with jun da, i think changes to different parts of the project should be done in different branches. this is for clarity and ease of finding. might be a bit strange to see a branch merge for both ug and actual code.
2 (commented on others PR)
for consistency across the entire codebase, i think it'll be better if you have your documentation written like this:
/**
* Returns a trimmed predicateField. If...
*/
3 (commented on others PR)
this documentation should be changed too!
4 (commented on others PR)
this documentation should be changed too!
5 (commented on others PR)
this documentation should be changed too!
6 (commented on others PR)
this documentation should be changed too!
7 (commented on others PR)
this documentation should be changed too!
8 (commented on others PR)
this documentation should be changed too!
9 (commented on others PR)
this documentation should be changed too!
10 (commented on others PR)
there are 2 grammatical errors here - should be "an" instead of "a" and "its" instead of "it's".
also, can you change this reference from address book to Athena?
11 (commented on others PR)
should be "an" instead of "a" event.
12 (commented on others PR)
should be "an" instead of "a" event.
13 (commented on others PR)
could be wrapped in an Optional
instead (since you're doing so below anyway)
14 (commented on others PR)
consider adding the NoSuchElementException
thrown to the method signature
15 (commented on others PR)
this should be spaced out to three lines
16 (commented on others PR)
nope, just a personal preference.
17 (commented on others PR)
do you have an example?
18 (commented on others PR)
noted. i mentioned this because Parser.parse
(and all its implementations) contain an unchecked exception in it's method signature.
19 (commented on others PR)
this should be changed to match the new parsing structure, and a COMMAND_TYPE
field should be added.
20 (commented on others PR)
this is not implemented yet. perhaps it should be made a bit clearer (with a comment in the code maybe)?
21 (commented on others PR)
this currently leads to bugs; if i put an index of 3, it'll still return the DESCRIPTION_COMPARATOR
. i think you should have individual cases for each comparator, and then throw a ParseException
in the default line.
22 (commented on others PR)
although i think it would be better to have the detection of invalid inputs handled in SortEventCommandParser.parse
.
23 (commented on others PR)
yeah so i think the default
branch in here should throw something like an IllegalArgumentException
(for us to see, since this branch should never be reached), and the one in SortEventCommandParser.parse
should throw a ParseException
(for the user to see, if they input an invalid number).
24 (commented on others PR)
"combines the" repeated twice
25 (commented on others PR)
i think another punctuation mark would be better - maybe:
"Returns true if the tag is valid - that is, it has at least..."
26 (commented on others PR)
i think our documentation is done in present tense, so using "cannot be found" would be more consistent than "could not be found". also, since "tags that could not be found" is repeated twice, maybe just rephrasing the entire sentence would be preferable, so something like:
"For tags that cannot be found, the string will reflect that by prepending the appropriate message."
27 (commented on others PR)
slightly awkward; maybe use firstly/secondly/lastly?
28 (commented on others PR)
new tagging sounds a bit weird, but this could be me. could you elaborate on what you mean?
29 (commented on others PR)
tagTree should be enclosed in {@code } for consistency.
30 (commented on others PR)
did you mean set of persons?
31 (commented on others PR)
slight inconsistency; first line of documentation says the set returned falls under the given tag and all its sub-tags, but this line says or.
32 (commented on others PR)
perhaps both these sentences could be combined into one.
33 (commented on others PR)
i think "given" instead of "if" sounds better.
34 (commented on others PR)
lacking capitalisation; also i think it should be personToCopy
rather than persontocopy
.
35 (commented on others PR)
lacking capitalisation; also i think it should be personToCopy
rather than persontocopy
.
36 (commented on others PR)
i think you meant "When relationships...".
37 (commented on others PR)
i think using "which" instead of "whose" is more appropriate.
38 (commented on others PR)
perhaps "cyclic dependencies"?
39 (commented on others PR)
i think you should either connect both sentences with a comma (i would prefer this) or write "Returns false otherwise." in the second.
40 (commented on others PR)
HashMaps?
41 (commented on others PR)
Copies*
42 (commented on others PR)
should these have documentation?
43 (commented on others PR)
i don't think union is a verb.
44 (commented on others PR)
who's jackson
45 (commented on others PR)
should this be capitalised? actually should there be standardisation in how json is referred to? some documentation refer to it as JSON and some as Json.
46 (commented on others PR)
gotcha.
47 (commented on others PR)
makes sense.
48 (commented on others PR)
hmm okay, i'll keep this in mind.
49 (commented on others PR)
can you add whitespace similar to the one current Commands adopt?
50 (commented on others PR)
slightly awkward because "add..." is usually followed by "to...". maybe use "create" instead of "add" or mention that you're adding it to Athena?
51 (commented on others PR)
from what i've seen from the other classes, i believe this line should not end with a full stop
52 (commented on others PR)
i think this sentence should end with "and returns an AddTagCommand object for execution."
53 (commented on others PR)
does this imply that some tags (i assume highest parent level ones) are in addressBook
but not tagTree
?
54 (commented on others PR)
arguments*
55 (commented on others PR)
i think you're missing the word "use".
56 (commented on others PR)
BooleanInputs*?
57 (commented on others PR)
this information is outright incorrect. the fact that you've said something like this shows that you do not understand how the method works.
If it can't throw, the method should not have a throws keyword.
correct.
Which is not the same as "this method cannot throw a CommandException or a ParseException, handling can be ignored".
incorrect. because line 229 uses Logic.execute()
, your method has to either implement a way to catch these exceptions by embedding it in a try-catch block, or simply put it in the signature. the problem with the former is that your catch block then cannot be empty, as if the exception is thrown by Logic.execute()
, neither is a CommandResult
returned nor an exception thrown. the reason you can put it in the signature is because, as the back-end programmer, you know that it will never throw this exception.
basically, the method can throw it but won't.
In the case where command word for show reminder is changed in the enum but not changed here, this method will throw a exception.
yes, but CommandException
and ParseException
are both for users. as the programmer, you are expected to make consistent changes across the codebase when one reference changes. to use either of those exceptions as a way to ascertain that is wrong.
Import enum CommandWord to avoid such incident. Implement catching and processing in case of an error, perhaps displaying an error message saying something like "reminders failed to show" in the resultPanel.
this is literally what line 231 does.
Do not follow executeIntroCommand() method above, its not a good implementation.
would you like to explain why? if you want to say this, at least have the courtesy to @ me. if you want to discuss the implementation i'm all ears, but i'd prefer that to you straight up, condescendingly and accusatively stating that "its [sic] not a good implementation".
58 (commented on others PR)
fyi markdown's lists can accept 1's as indices and this helps you not have to keep track of how long the list is prior. could you undo it?
59 (commented on others PR)
the lower case is intended as it's an emoji.
60 (commented on others PR)
multiple is inclusive of zero.
61 (commented on others PR)
sentences' connotations are the same.
62 (commented on others PR)
i think this may not be correct as it implies that an INDEX
is tied to a specific contact.
63 (commented on others PR)
i think this may not be correct as it implies that an INDEX is tied to a specific contact.
64 (commented on others PR)
this adds inconsistency as all the other sentences do not mention Athena before the verb.
65 (commented on others PR)
i think this may not be correct as it implies that an INDEX is tied to a specific contact.
66 (commented on others PR)
hmm, perhaps we should mention the DATE_TIME
format at the start of the events instead of in the add command?
67 (commented on others PR)
some inconsistency between this and the rest as they end with full stops.
68 (commented on others PR)
if we split this into two separate points 'also' is unnecessary in the second sentence.
69 (commented on others PR)
sentences' connotations are the same.
70 (commented on others PR)
i think you missed this!
71 (commented on others PR)
maybe add that it's your computer's CLI to differentiate it from the app? phrasing now makes it sound like there's one general CLI every computer uses.
72 (commented on others PR)
hmm true... maybe you could write "multiple times (including zero)".
73 (commented on others PR)
which*
74 (commented on others PR)
think "Additionally" sounds better than of "Besides this".
75 (commented on others PR)
think "However" is unnecessary as sentences before and after are not contrasting.
76 (commented on others PR)
perhaps rephrase the second sentence to:
"Using Person
class' isSamePerson(Person)
method ensures that there are no duplicate contacts in Athena."
77 (commented on others PR)
perhaps either of these would be better for the second sentence:
"It uses a hash map with Tag
s as keys that each store a set of Person
s as its value."
"It uses a hash map, with Tag
s as keys and sets of Person
s as values.
78 (commented on others PR)
no ellipsis please
79 (commented on others PR)
is it necessary to mention when the support was added?
80 (commented on others PR)
also i think the last sentence sounds nicer as:
"Certain commands that affect a Tag
may also affect its child-tags." (also maybe use a different word besides affect)
81 (commented on others PR)
missing full stop
82 (commented on others PR)
same as above
83 (commented on others PR)
same as above
84 (commented on others PR)
"provides a few defined methods" sounds weird. drop either "provides" or "defined"?
85 (commented on others PR)
same as above
86 (commented on others PR)
"The methods listed above illustrate the difficulty of preserving consistency within the system."
87 (commented on others PR)
"In particular, the method deleteTag
is..."
88 (commented on others PR)
"The sequence diagram below illustrates..."
89 (commented on others PR)
maybe remove "also"? something's weird with this one but i can't quite put my finger on it.
90 (commented on others PR)
remove "if possible" to sound more confident in our implementation
91 (commented on others PR)
add a comma between AddressBook
and so
92 (commented on others PR)
"To ensure that the right commands are called at the right time, Model
only implements a limited set of methods that can change the internal mapping."
93 (commented on others PR)
variety*, also, "... correct methods from either AddressBook
, TagTree
or ContactTagIntegrationManager
are chosen."
94 (commented on others PR)
is this necessary
95 (commented on others PR)
nothing to correct here i just wanted to say that this is really well-written
96 (commented on others PR)
no ellipsis please, just use etc
97 (commented on others PR)
"Suppose we delete a single Tag
, the parent-tags..."
98 (commented on others PR)
to a set?
99 (commented on others PR)
okay!
100 (commented on others PR)
should this just be SHOW
? none of the other commands are attached to the type of functionality they target.
101 (commented on others PR)
"an" instead of "the"?
102 (commented on others PR)
i think this should end with a full stop.
103 (commented on others PR)
i think this should also end with a full stop.
104 (commented on others PR)
this documentation should be updated
105 (commented on others PR)
this documentation should be updated
106 (commented on others PR)
missing full stop
107 (commented on others PR)
this documentation should be updated
108 (commented on others PR)
this documentation should be updated
109 (commented on others PR)
this documentation should be updated
110 (commented on others PR)
this documentation style seems inconsistent with the rest of the UG.
111 (commented on others PR)
i meant the use of "=" is inconsistent.
112 (commented on others PR)
should be "Changes... to..."
113 (commented on others PR)
if the*? also should this be in present tense since the first sentence is also in present tense?
114 (commented on others PR)
i think this straight up breaks the parser as it relies on this field to check if the input format is correct. i think this branch should only be merged when we actually change isValidTime
and parse
below.
115 (commented on others PR)
sorry, this is a misinterpretation on my part.
116 (commented on others PR)
i think this is inconsistent with the actual pattern below.
117 (commented on others PR)
you might want to write your full name here i think it's what everyone else is doing
118 (commented on others PR)
fyi markdown lists can have all indices be 1
119 (commented on others PR)
naming is a bit weird... one is before-behaviour
and the other behaviour-after
120 (commented on others PR)
your pr says 247 but links to 242
121 (commented on others PR)
i... do not think it's grammatically correct for there to be a space before the colon
122 (commented on others PR)
within 4 days of*
123 (commented on others PR)
[field] adds, so i think these changes should be reverted.
124 (commented on others PR)
good catch!
125 (commented on others PR)
not {@code}
?
126 (commented on others PR)
ah i see. i do think that using a colon here still looks weird. perhaps we could change them to hyphens instead? that way, it would also be consistent with the table of contents.
127 (commented on others PR)
ah okay. thanks for clarifying.
128 (commented on others PR)
agreed, or maybe deleteByTag
(although that also sounds like a mouthful). the ideal is for us to be able to group it under delete
.
129 (commented on others PR)
this documentation should be updated
130 (commented on own PR)
hmm, interestingly this is also something that i had issues with. i avoided using AddressBookParser.COMMAND_TYPE
as i did not want to create further cyclic dependencies (AddContactCommandParser
-> AddContactCommand
-> AddressBookParser
-> AddContactCommandParser
).
a plausible solution would to be to create an enumeration to only store command words/types and for all command classes to reference that instead, so the test cases can remain untouched.
131 (commented on own PR)
agreed. i will change these when the above conversation has been resolved.
132 (commented on own PR)
the implementation would be to create two enumerations - CommandWord
and CommandType
- and have AddressBookParser
and the Command classes refer to the enumeration instead. this accomplishes two things:
resolves the aforementioned cyclic dependencies.
test cases can remain as is, since they currently refer to each individual Command class' word/type.
i think there is merit in having the test cases remain in their current classes as they are intended to test certain classes.
My suggestion was actually to not have this at all.
hmm, what would you propose then?
133 (commented on own PR)
fixed
134 (commented on own PR)
good call.
135 (commented on own PR)
yep, this is handled in the BooleanInput
class.
136 (commented on own PR)
good catch! i will do so.
137 (commented on own PR)
haha, i ran the tests again to ensure nothing else was affected.
138 (other comment)
Use cases to be compartmentalised by individual member.
139 (other comment)
Introduction not added, reopened
140 (other comment)
Resolves #82 and #83.
141 (other comment)
We have elected to update the UG for two reasons:
Consistency - some of the event methods end with an s while others do not. While this was intended to represent the plurality of some of the returns, this can be confusing for users unfamiliar with Athena. Additionally, to standardise methods between contacts and events, we should use the similarly worded commands for both. Since list
is already implemented as a contact feature, we'll stick to listEvent
.
Convenience - the documentation of listEvent
in the UG is incorrect to begin with. Instead of having to correct both the method and the UG (to listEvents
), we instead change only the UG.
I will update the UG by tomorrow to fix these inconsistencies.
142 (other comment)
I suspect it is possible to store this information in a file that already exists in the codebase, as changes to the GUI are saved through different sessions. It is likely that the same file can be used to store this information.
143 (other comment)
For clarity, this is unlikely to require large-scale changes across the codebase, as existing classes can be used. Instead, the parser will be changed to support the new command structure.
144 (other comment)
Turns out it's just a macOS quirk. Perhaps this will be implemented in the future, when there are other forms of state saving required.
145 (other comment)
Looks good to me. I'm just wondering how the TagManager class helps to keep track of the participants (persons) of a particular event without implementing necessary changes in Calendar class or respective events class?
i don't think it's supposed to. this class is just a means to implement better Tag
management-related features. the intermediary between contact- and event-functionalities have yet to be implemented.
146 (other comment)
i think we can give the user the option to capitalise their Tag
s and use regex to ignore case sensitivity in our searches.
147 (other comment)
i see your point, but i think the best solution is just to include a way for them to edit their tags after they've been created. as a user, i would not like having to be forced into using a certain case (be it upper or lower), as different cases can add nuance to the tags.
148 (other comment)
Enumerations added (see conversation with @chan-j-d above for more details).
149 (other comment)
fixes for this will be rolled out when the new GUI is done.
150 (other comment)
lgtm - good job!
151 (other comment)
i will implement this alongside #118.
152 (other comment)
closed and split into #129 and #130.
153 (other comment)
in adding these test cases I had to add a few other classes - EventBuilder
, EventUtil
and EditEventDescriptorBuilder
. you may find these classes helpful in constructing your own test cases.
154 (other comment)
i think you need to comment directly on that person's ped repo or they can't see it.
155 (other comment)
although i can see where you are coming from, i do not think we should restrict users from being able to create extremely similar contacts. i also don't think it's a bug - a user should have the flexibility to be able to add whatever they desire to the address book. it may seem counter intuitive but i think this decision should be left to the user rather than an seemingly arbitrary restriction by the designers. unless anyone else has strong objections this is closed.
156 (other comment)
closed; an issue very similar to this was addressed in #211
157 (other comment)
this should be a relatively quick fix.
158 (other comment)
this is a good catch, but wouldn't your changes exclude an entry like 31-1-20
?
159 (other comment)
i realise that many test cases actually test for this and use the last input, meaning that this is an intended feature. it'd be more appropriate to explicitly state this in the user guide rather than changing the code.
@w-yeehong
(129 comments)1 (commented on others PR)
Should we standardize comments? One possible style:
Separate-line comment with whitespace, singular verb, and uppercase 1st character.
// Parses user input...
Command command = addressBookParser.parseCommand(commandText);
Same-line comment with whitespace, singular verb, and lowercase 1st character.
Command command = addressBookParser.parseCommand(commandText); // parses user input...
We could follow any other style too. Just thought it might be better for everyone to stick to 1 for consistency.
2 (commented on others PR)
Sure, we can restore this when we complete EditCommand.
3 (commented on others PR)
Really like the regex here. It is simple and effective.
4 (commented on others PR)
I know this is a bit late, but do you think we should change AddPersonCommand
to AddPatientCommand
?
I think our Person
refers specifically to Patient
since we have the periodOfStay
field. If we are adding a Staff
class in the future, it may be a little misleading since Staff
is a Person
too.
What do you think?
5 (commented on others PR)
Since we are using Patient
now, maybe we can rename some of these variables?
Perhaps from MESSAGE_INVALID_PERSON_DISPLAYED_INDEX
to MESSAGE_INVALID_PATIENT_DISPLAYED_NAME
.
Also, do you think we should change our usage of "person" to "patient"? 🤔
i.e. "The patient name..." instead.
6 (commented on others PR)
I like the use of guard clauses in this method. Makes the code much cleaner 😀
7 (commented on others PR)
Great work on writing the unit tests! For v1.1, we might not need it but getting it done earlier is a nice bonus.
8 (commented on others PR)
Maybe it could be invalidPatientName
instead? I know it might be a little troublesome to change all references to Person
to Patient
. I can help with that if you would like.
9 (commented on others PR)
For separate-line comments, do you think we should keep the first character in uppercase?
The Java coding standard we are using does not explicitly mention it but seems to follow that. I think comments that start with keywords may not need to be capitalized though (e.g. null
).
10 (commented on others PR)
I think "list of patient/all patients that match the specified criteria" may be clearer?
11 (commented on others PR)
Great use of Optional
here!
12 (commented on others PR)
Do you think an Enum may be preferable here since there are a limited number of possible values?
Using int
is not very scalable. If we have 10 different search conditions, we would need 10 int
, and it can be hard to keep track of these variables.
Perhaps we can declare a nested Enum:
private enum SearchCondition {
SEARCH_BY_NAME.
SEARCH_BY_TEMPERATURE,
SEARCH_CONDITION_INVALID; // no condition or multiple conditions given
}
If you would like to use int
, maybe it would be better to make them static and change the variable names to indicate they are constants. E.g.
private static final int SEARCH_BY_NAME = 1;
Personally, I think Enum might be neater. 😄
13 (commented on others PR)
Maybe we can add a space here? "TEMPERATURE RANGE "
instead of "TEMPERATURRANGE"
.
This text will be displayed to the user, and the former may be easier to read?
14 (commented on others PR)
Maybe one private method for each search condition? That would be great.
15 (commented on others PR)
I'm not too sure but I think the execution will not reach this return statement? If that is the case, I think we can throw a CommandException
instead of returning null
? Returning null
here may cause a NullPointerException
somewhere else.
16 (commented on others PR)
Perhaps we can rename this method to confirmSearchConditions
or determineSearchCriteria
? area
may not be very clear that we are referring to the search conditions.
17 (commented on others PR)
JavaDoc comments here are really useful to understand the purpose of the nested class. Great work 👍
18 (commented on others PR)
@itssodium Could you check whether these changes are correct?
If I am not wrong, the Covigent part is the latest edit. It might have been overwritten by accident.
19 (commented on others PR)
Would you be able to undo the deletion of this file? DateTimeUtil.java
was recently added to manage dates and times.
20 (commented on others PR)
Perhaps we could name this AddRoomCommand
instead?
AddNumberOfRoomsCommand
seems a little verbose since the number of rooms is implied, though this is a matter of preference.
If you like AddNumberOfRoomsCommand
better, let's keep that.
21 (commented on others PR)
Similarly, perhaps we could rename the command to addroom
.
22 (commented on others PR)
I think it's great that you refactored the code used for I/O. I/O should be abstracted if possible (SRP) since this class mainly handles the adding of the room.
23 (commented on others PR)
Maybe we can follow the convention here? For messages, Address Book Level 3
follows this convention: MESSAGE_ERROR
or MESSAGE_SUCCESS
. We could use MESSAGE_NUMBER_OF_ROOMS_UNDEFINED
or something along those lines here for consistency.
24 (commented on others PR)
Would be good to add a comment here if the -1 means something.
25 (commented on others PR)
Similarly, we can follow the conventions for messages here.
26 (commented on others PR)
It is less about whether the user will enter a negative number, and more about how we should secure our application.
Personally, I feel that it is good if we can handle as many exceptional cases (sometimes called edge cases) as possible. Without proper handling, anyone can crash the app simply by entering a negative number. It can be annoying for the user if they accidentally type in a negative number and the app just stops working.
Besides, near the end of the semester, our application will be manually tested for bugs. I am fairly sure the testers will try to use negative numbers as inputs. If they can cause the application to crash, they will flag the problem as a bug and deduct our marks for it. Let's do our best to stop that from happening! 😄
27 (commented on others PR)
May I ask what is the reason for naming the class RoomBook
instead of RoomList
or RoomQueue
? I feel that Book
does not explain what the class does.
28 (commented on others PR)
Would it not be possible to use an ArrayList>Room>
?
I think it is easier to understand if you iterate through all the Room
objects in a loop and call an isEmpty()
method to determine which Room
is empty.
Performance-wise, I understand PriorityQueue
may be better but we are sacrificing code clarity for performance.
29 (commented on others PR)
Shouldn't Room
contain an ArrayList>Task>
?
30 (commented on others PR)
@itssodium Would you be able to check this?
31 (commented on others PR)
Do you mean it will be used for allocating the Patient
to the Room
?
32 (commented on others PR)
Okay, leave this part to me. I will add in the TaskList
.
33 (commented on others PR)
Would it be possible to use Optional>Patient>
here? While it is true that the Room
can have no Patient
, it is best to avoid null
.
34 (commented on others PR)
Great that you have a separate class for storage!
35 (commented on others PR)
I think that is probably the temporary files used for testing? 🤣 Shall we rename the test files?
36 (commented on others PR)
Yup, Address Book Level 3
has a convention for the names of test cases. Maybe we can follow that next time?
37 (commented on others PR)
Ohh okay I follow your train of thoughts now. For adding Patient
to Room
, I think we should be more explicit? Maybe something like AddPatientToRoom
.
I think you can use AddRoom
for this.
38 (commented on others PR)
May I check if URI
is used here? I think path
is a String and URI
may not be needed here?
39 (commented on others PR)
I think it would be good if you could leave a comment to explain the use of the nr
and ro
options!
40 (commented on others PR)
Would it be possible to split this test into smaller units? It is currently longer than 30 lines.
Perhaps this part
rooms = new PriorityQueue<>();
for (int i = 0; i < 10; i++) {
Room room = new Room(i + 1);
if (i % 2 == 0) {
room.setOccupied(true);
}
rooms.add(room);
roomsInArray[i] = room;
}
roomList = new RoomList(rooms, roomsInArray, 10);
numberOfRooms = Paths.get("numberOfRooms");
roomsOccupied = Paths.get("roomsOccupied");
roomOccupancyStorage = new RoomOccupancyStorage(numberOfRooms, roomsOccupied);
roomOccupancyStorage.saveNumberOfRooms(roomList, numberOfRooms);
roomOccupancyStorage.saveOccupiedRooms(roomList, roomsOccupied);
roomList1 = roomOccupancyStorage.readOnlyRoomOccupancy();
assertEquals(roomList, roomList1);
can be in a separate test?
41 (commented on others PR)
I think addRooms
here refer to allocating a Patient
to a Room
? Most likely, this test would be in a separate class so maybe we can remove it first?
42 (commented on others PR)
Don't worry, I can handle this part. 😄 I will have to integrate the TaskList
into Room
to get my part working anyway.
43 (commented on others PR)
I think it would be good to leave an explanation of why numberOfRooms
is initialized to -1.
44 (commented on others PR)
Perhaps the messages here can be moved to another class? Ideally, we can avoid adding constants to this class since the messages are stored in seedu.address.commons.core.Messages
instead. Maybe look into putting your messages there too?
45 (commented on others PR)
I think IntelliJ might have changed this to wildcard imports? Maybe we can revert this?
46 (commented on others PR)
Do you think we should keep the indentation consistent? For *.fxml files, maybe we can use 2 or 4 spaces (not sure what the original is).
47 (commented on others PR)
I think it would be patients
here. Very minor grammatical issue though 😄
48 (commented on others PR)
I like how there is an order for the different types of entities (patients followed by rooms followed by miscellaneous). Maybe in the future, we can a header to each entity to further organize the content of our user guide? E.g.
3.1 [Command Format](#31-command-format)<br>
3.2 [Patients](<Section explaining what Patients are>)<br>
3.2.1 [Add a patient: `addpatient`](#32-add-a-patient-addpatient)<br>
// ...
49 (commented on others PR)
Do you think we should standardize this? Not sure if it is as important in the JavaDocs because it is understandable, but what about the user guide?
Should we refer to the application as the app
, the application
, or Covigent
?
50 (commented on others PR)
Thank you for noticing and changing this! 😄
51 (commented on others PR)
Because isSamePatient(...)
uses name, age, and phone number as criteria to detect duplicate Patient
in a list, will this not pose a problem when deleting? It is possible to have more than 1 Patient
with the same name after all. In that case, only the first matching Patient
is deleted.
I think it may be a little strange that the user cannot select which Patient
to delete if they share the same name. I am not sure about the optimal way to solve this problem. Would deleting by index be better?
52 (commented on others PR)
Good job noticing the bug here! 😄
53 (commented on others PR)
Maybe this can be renamed to indicate that an invalid search criterion has been provided. searchPatient
does not really explain which aspect is being tested.
Something like execute_searchPatientInvalidSearchCriteria_throwsCommandException()
may be good?
54 (commented on others PR)
I think it would be good to mention something along the lines of how the command replaces the current number of rooms with the newly specified value. Also, whether the data in the current rooms will be migrated or reset.
We can always improve on the user guide in the future though, so maybe we can KIV? 😄
55 (commented on others PR)
Since there are multiple files being checked, maybe we can include which data file is not in the correct format in the warning.
The same goes for the other warnings.
56 (commented on others PR)
Maybe we can keep this statement in a single line such that it looks even neater? It has fewer than 110 characters and can fit in one line!
57 (commented on others PR)
Perhaps we can remove code that is commented out. If we merge this, we may forget to remove it in the future. Also, commented out code seems like regular comments and may be difficult to locate in a large codebase.
58 (commented on others PR)
Great work with the hashing!
59 (commented on others PR)
May I ask why the 31 is needed here?
60 (commented on others PR)
I think maybe we can make this more general and apply it all the other *List classes (UniquePatientList, RoomList, TaskList). Otherwise, I think the interface may not be needed?
Possibly ReadOnlyList>T>
? We can do either:
Include all methods such as add
, delete
, etc. (much more work because we have to rename all methods to share a common name).
Include just the method to obtain a read-only list (easier).
61 (commented on others PR)
Maybe we can add a TODO here to indicate that in the future, we should set the application default to having a few rooms with patients and tasks?
62 (commented on others PR)
Although ObservableList
and PriorityQueue
maintain the same rooms, for safety would it be better to include a comparison for the ObservableList
too?
63 (commented on others PR)
The condition for this is rooms != null && roomList.rooms != null
but I think neither the PriorityQueue
nor ObservableList
can be null
because of the default value, right?
In that case, can you not just return false
if any of the 2 PriorityQueue
and 2 ObservableList
are null
?
64 (commented on others PR)
Instead of tracking numOfRooms
in a variable, would it be possible to just make use of the size of the ObservableList
? Maybe include a method to get size (similar to the other *List classes).
This would reduce the complexity of the class, especially when writing the equals(...)
or hashCode()
method since there is one fewer variable to manage.
65 (commented on others PR)
@JsonProperty
tells the Jackson ObjectMapper to map the JSON property name to the annotated Java field's name so we end up with this:
"room": {
"roomNumber": value
"isOccupied": value
//...
For consistency with JsonAdaptedPerson
, perhaps we can keep it the same as the variable name (i.e. roomNumber and isOccupied)? We would have
public JsonAdaptedRoom(@JsonProperty("roomNumber") int roomNumber,
@JsonProperty("isOccupied") boolean isOccupied) {
//...
66 (commented on others PR)
We can add a TODO here since we are not using the Patient
and Task
in this class yet.
67 (commented on others PR)
Consistent @JsonProperty
here! Variable name should be rooms
.
68 (commented on others PR)
Good job with switching to temp folders! 😊
69 (commented on others PR)
Maybe we can import java.util.Optional directly?
70 (commented on others PR)
I think if we are not using this class currently, we can remove it 1st?
71 (commented on others PR)
I will add this when I pull your changes 👍
72 (commented on others PR)
Might be good to declare a constant for "-" to indicate what it is doing more clearly!
73 (commented on others PR)
Might be difficult to switch here since there are multiple conditions.
I think the current structure is not too bad. Maybe we can rename clearRoom
to isNewEmptyRoom
for clarity? clearRoom
sounds like the name of a method hahaha.
Also, I think isCurrentlyOccupied
sounds more like a boolean. How about we use that instead of alreadyOccupied
?
74 (commented on others PR)
Instead of ...orElse(null) != null
, maybe we can use editRoomDescriptor.getIsOccupied().isPresent()
?
75 (commented on others PR)
Would it be possible to combine case 1 and case 3 since both return Room(updatedRoomNumber)
? 🤔
!hasNewPatient
could be the condition.
76 (commented on others PR)
Actually, I'm curious about why clearRoom
is needed as a condition.
77 (commented on others PR)
While not entirely linked to this PR, I think we should modify Room
to store an Optional>Patient>
. Then, we can remove the isOccupied
boolean and use Optional>Patient>.isPresent()
to find out whether a room is occupied.
78 (commented on others PR)
I understand it may be easier to return an Integer
but this method is similar to the parseIndex
. We can use the Index
class provided in the original codebase and use parseIndex
instead.
That was what I did in AddTaskCommandParser
😆
79 (commented on others PR)
Hmm if we modify RoomList
directly from EditRoomCommand
, we may be breaking a few abstraction barriers since Command
will be interacting with RoomList
.
To avoid this problem, we can add a setRoom(Room target, Room editedRoom)
method to RoomList
. Then, add another setRoom(Room target, Room editedRoom)
method to Model
(the interface). Finally, In ModelManager
, call roomList.setRoom(...)
.
We can then use the setRoom(...)
method by calling model.setRoom(...)
. So we are restricting the interactions between classes such that Command
only interacts with RoomList
via Model
.
80 (commented on others PR)
Does DuplicateRoom
apply only to identical RoomNumber
?
81 (commented on others PR)
Thanks for adding this TODO
! 👍
82 (commented on others PR)
Wait, I see that setRoom
has been done. Good job! In that case, why is the modifiable room list still needed?
83 (commented on others PR)
Also, perhaps we can rename these methods to hasRoom(...)
and setRoom(...)
for consistency with Patient
?
84 (commented on others PR)
Okay, I see what you mean. For now, we are treating RoomNumber
as an index but in the future we may allow the user to set their own room numbers.
Would it be convenient for you to move the room-related methods to RoomParserUtil
?
If not, I could do that later because I intend to make ParserUtil
an abstract class.
85 (commented on others PR)
getRoomList()
returns the ObservableList
though. Wouldn't it be possible to check if the room is present from there?
I think one reason we would not want to return the RoomList
is because it is mutable. That means that if we return RoomList
from ModelManager
, any other class can modify the content through RoomList
(e.g. call roomList.addRooms(...)
) instead of through the Model
(i.e. call model.addRooms(...)
).
getRoomList()
returns a read-only list so we can prevent the contents of RoomList
from being changed directly. In fact, I think that was the original intention behind the asUnmodifiableObservableList()
method.
86 (commented on others PR)
I think editroom
command does not allow task to be edited right?
In that case, maybe we don't need to use editRoomDescriptor.getTaskList()
?
87 (commented on others PR)
Maybe it would be good to remove codes that we commented out? Otherwise, we may completely forget about it.
88 (commented on others PR)
Perhaps the predicate could take on a more meaningful name. What about filterByRoomNumber
or something along those lines?
89 (commented on others PR)
Good job on reducing the number of ObservableList
we need!
90 (commented on others PR)
If we are changing that, I think we can make the method name clearer too. Maybe getFilterByRoomNumberPredicate()
?
91 (commented on others PR)
Let's look into resolving the TODOs in v1.3?
92 (commented on others PR)
Just wanna check if stylesheets
need to be set to each of the element? If I am not wrong, as long as you set stylesheets
to ScrollPane
, the rest of the elements should inherit the CSS accordingly?
93 (commented on others PR)
For multiple non-null args, we can use requireAllNonNull(...)
instead to shorten the code!
94 (commented on others PR)
Maybe can explain why this statement is necessary here?
95 (commented on others PR)
Great work using a listener to update the UI for Room!
96 (commented on others PR)
Would it not be possible to use getPatientWithName
instead? I feel like that may significantly reduce the amount of code that we need.
97 (commented on others PR)
Might be good to add a comment there to indicate that it refreshes UI.
98 (commented on others PR)
I think the patient name is the identifier for a patient right? In that case, wouldn't it better to avoid using the Index
class?
99 (commented on others PR)
Would you like to switch to getRoomList()
here? We will eventually remove getModifiableRoomList
.
100 (commented on others PR)
If I am not wrong, the two methods getPatientIndex()
and getPatientFromIndex()
are used in the EditPatientCommand
class, right?
Instead of this
Index index = model.getPatientIndex(patientToBeEdited);
if (index.getZeroBased() == 0) {
throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_NAME_INPUT);
}
Patient patientToEdit = model.getPatientFromIndex(Index.fromZeroBased(index.getZeroBased() - 1));
Would it not be cleaner to do this in EditPatientCommand
?
Optional<Patient> optionalPatient = model.getPatientWithName(patientToBeEdited);
// Better still, use Patient patientToEdit = optionalPatient.orElseThrow(...). I forgot the syntax hahaha.
if (!optionalPatient.isPresent()) {
throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_NAME_INPUT);
}
Patient patientToEdit = optionalPatient.get();
That way, we avoid using Index altogether.
101 (commented on others PR)
Oh yeah, this wouldn't work if you use the unmodifiable version. Feels like using the modifiable version is a hack though hahaha.
102 (commented on others PR)
Actually, we probably should have another class similar to PatientRecord
to interact with RoomList
. Add, delete, set are done through PatientRecord
right now. I think it's fine for now though. Maybe add a note to move this method to the new class once it is set up.
103 (commented on others PR)
Maybe we can standardize the casing for file names (i.e. logo.png
).
104 (commented on others PR)
I would like to check if we are changing the colour scheme of the UI. I think #2b5c7b
is the one we are using in our mock-up.
105 (commented on others PR)
Since we are removing the menu, I think you can remove the corresponding CSS too!
106 (commented on others PR)
Maybe keep the format for the comments consistent.
// Set images ...
107 (commented on others PR)
Do you think setAccelerator()
can be removed too?
108 (commented on others PR)
If we are removing the menu, I think the exit button will disppear too, right?
109 (commented on others PR)
Similarly, this might not be needed anymore.
110 (commented on others PR)
Is it necessary to cast to (int)
here. count()
should return an int
I think.
111 (commented on others PR)
Hmm I think maybe model.canFit()
can be renamed? It is difficult to understand what that method does. Perhaps hasSpaceForRooms()
? Same for the other canFit()
methods.
112 (commented on others PR)
Do you think setRoom()
would be clearer here?
113 (commented on others PR)
Would you like to rename this to RoomRecords
to keep it consistent with PatientRecords
?
114 (commented on others PR)
Noticed the defensive programming here 👍
115 (commented on others PR)
An alternative is to check using regex. [\\p{Alnum}]{1, 150}
should do the trick.
116 (commented on others PR)
Yup, this should be removed.
117 (commented on others PR)
It will throw an AssertionError
when RoomList
does not contain room. The method actually stills work without the assertion. That said, when we are calling from logic
, the room passed to this method should be in the RoomList
.
The assertion warns the developers when room is not in RoomList
.
118 (commented on others PR)
Added the line separator!
119 (commented on others PR)
Do you think it would be cleaner if we kept this error message in InitRoomCommandParser
since it is specific to the command?
120 (commented on others PR)
I think the method name can be the same here? setPreferredNumOfRooms
seems okay to me.
121 (commented on others PR)
Maybe it would be possible to use the Index
class here. Create an Index
object from roomNumber
and use it for the list operations.
This avoids "magic numbers", i.e. the -1
does not keep appearing.
122 (commented on others PR)
Would be good to define 5000
as a constant MAX_NUM_OF_ROOM
!
123 (commented on others PR)
Good negative test case!
124 (commented on others PR)
We may want to use verbs for the name of methods to make it clearer? getNumOfOccupiedRooms()
?
May also want to make the Javadocs for this method clearer.
125 (commented on others PR)
I think you can use rename roomList1
to expectedRoomList
to highlight the difference between the 2 RoomList
. Same for the other test cases!
126 (commented on others PR)
Really glad we finally got it to work!
127 (commented on others PR)
Let's try not to expose RoomTasks
to other classes? Adding a getter here would allow other classes to get RoomTasks
from Room
and add any tasks to it. We can make the tasks read-only by exposing only getReadOnlyTasks
. Do see my comment below too.
128 (commented on others PR)
It is possible to use new RoomTasks(roomToClear.getReadOnlyTasks())
instead to avoid adding a getter!
129 (commented on others PR)
This is a smart way to listen to changes in the list of tasks in room! 👍
130 (commented on own PR)
Okay, noted on this. I will make the change. Thanks!
131 (commented on own PR)
Agreed! Let's remove the additional fields.
132 (commented on own PR)
Yes, right you are! I will change this.
133 (commented on own PR)
Interestingly, yyyyMd
does not work.
Consider the date "12 Jan 2020", for instance. With yyyyMd
, it would be "2020112". But this string is ambiguous. Are we referring to "2 Nov 2020" or "12 Jan 2020"?
If we want to use yyyyMd
, we would need a delimiter (e.g. yyyy-M-d
). I decided against using the hyphen because it doesn't read as well when it is a date range.
134 (commented on own PR)
Actually, yeah. It is probably not needed for an MVP.
The rationale behind adding DateTimeCreated
is to allow the user to filter tasks with creation date as a criterion. For example, in Slack, users can see when the task is created. It is helpful when the user wants to query what tasks were created yesterday or within the last few days.
Right now, the plan is for the user to click on a Room
in order to view all tasks assigned to it. There is no separate tab for the users to manage tasks (we should probably have this to show user which tasks from which rooms are due?). In the future, when we implement reminders or a search for tasks, DateTimeCreated
might be more useful.
I think I will remove this from the MVP. Unit testing for this class also requires more work because we would need another layer of abstraction to handle and control the date-time instead of using LocalDateTime.now()
.
Thoughts on this?
135 (commented on own PR)
Okay!
136 (commented on own PR)
Nope, it is in an entirely different file. That said, I wonder if it will be confusing for the user?
137 (commented on own PR)
No problem!
138 (commented on own PR)
I think p/
is good 😄 We can try to keep it as short and sweet as possible since that's easier to remember.
139 (commented on own PR)
Good point. Will use that instead 👍
140 (commented on own PR)
It is missing the success case actually. Will need to set up a stub to perform the test. Will KIV 1st.
141 (commented on own PR)
Hmm could you clarify on this? I think most of the other Command
classes handle add, delete, and update through Model
. The Model
is the abstraction.
142 (commented on own PR)
Good point. We should change the names of the tests here!
143 (commented on own PR)
Yes, @LeeMingDe mentioned this too!
144 (commented on own PR)
Hmm... Should it be in alphabetical order? I was thinking maybe it should be sorted by the type. We can have Patient
, followed by Room
, then Task
.
3.2 Patient
3.2.1 Add Patient
3.2.2 Delete Patient
...
3.3 Room
3.3.1 Initialize Rooms
...
3.4 Task
3.4.1 Add Task
3.4.2 Delete Task
145 (commented on own PR)
The current arrangement is like this: the methods that are common to Patient
, Room
, and Task
are placed into ParserUtil
. Task-specific methods such as parseDescription
are in TaskParserUtil
.
Good observation!
146 (commented on own PR)
Oh I decided to group the success cases together. Might indeed be neater to space them out.
147 (commented on own PR)
roomNumber
cannot actually be null
though, because it is a primitive (i.e. int
).
148 (commented on own PR)
Yup that's true. Good observation here 😄
That said, assertions may not necessarily be enabled, especially when an application goes into production.
The roomNumber > 0
check is to prevent the application from crashing if this method somehow gets called when assertions are off.
149 (commented on own PR)
Yup, I think the app is meant to crash in that case. model.getTaskFromRoomWithTaskIndex(taskIndex, room)
should return either an empty Optional
or an Optional
-wrapped task. It should never be null
here.
The app will crash with a NullPointerException
if taskToDelete
is null
either way.
150 (commented on own PR)
Yup, it will crash the app provided assertions are enabled. If getRoomWithRoomNumber(...)
is called with a roomNumber
greater than 0, it would be a programming error. Crashing in that case is helpful for debugging.
151 (other comment)
@itssodium would you like to close this PR? I think we could keep the other one instead?
152 (other comment)
Good work! We will have to correct the CheckStyle problems in order to merge. Would you be able to change the order of imports?
153 (other comment)
We have decided to close this issue. Don't worry about creating the pull request from master.
For future pull requests, remember that every new feature should be done in a separate branch!
154 (other comment)
Task models are added 1st. Will be integrated with Room
in v1.2.
155 (other comment)
While not ideal, I decided to force push to my own repo in order to squash the commits that contained only minor changes for CheckStyle compliance.
I will be more careful when pushing to my repo in the future.
156 (other comment)
Overall, clean and neat code! Believe you haven't integrated the command into the code yet but seems like good support for your command for now. One thing though, I am not sure why you want to have a DateTimeCreated for task? Anyway, LGTM!
Haha, yeah I set up the PR to update everyone with my progress. The integration is not complete yet. I will request for more reviews when the integration is done.
157 (other comment)
To fix your addressbook and let it show its contacts, follow these steps:
- Go to your data folder
- Open up addressbook.json
- In the second line, change "persons" to "patients"
I recommend deleting data/addressbook.json
if you have not added any custom data. Upon restarting the app, the file should be regenerated.
158 (other comment)
Additionally, the logic in readAndSaveRoomList
unit tests may be difficult to follow without comments. Do you think it would be possible to add
// Save in new file and read back
RoomOccupancyStorage roomOccupancyStorage = new RoomOccupancyStorage(numberOfRooms, roomsOccupied);
// ...
to indicate that you are saving and loading the file for testing?
There is also some code duplication in the readAndSaveRoomList
tests, which we can consider refactoring into private methods.
159 (other comment)
I removed the link to #58 because we haven't actually displayed the Patient
and Task
details for each room. We can definitely merge 1st though.
160 (other comment)
Rebased to avoid additional merge commit.
161 (other comment)
lgtm, good job! However, the pr is super long, would it be better to like split it up in the future? eg. do the tasklist/task class and merge it first. then the addTask command and then merge it?
Totally agree with this. Ideally, I think a PR should not exceed 500 lines. It is difficult to review the PR when it is that long. I originally wanted to split this as well. Will definitely do so in the future! 👍
162 (other comment)
getRoomWithRoomNumber
has been implemented in #115. Can use that for EditRoom
too.
163 (other comment)
Duplicate tasks are allowed!
@ianyong
(124 comments)1 (commented on others PR)
* Tertiary student
2 (commented on others PR)
| `* * *` | user | set a monthly spending limit | track how much I have left to spend for the month |
3 (commented on others PR)
Don't commit .iml
files.
4 (commented on others PR)
* **Tools**:
Newline at EOF.
5 (commented on others PR)
parseEmail
should be renamed to parseDate
with the corresponding parameter renamed. Same for all other instances.
6 (commented on others PR)
parseTag
should be renamed to parseCategory
with the corresponding parameter renamed. Same for all other instances.
7 (commented on others PR)
parsePhone
should be renamed to parseAmount
with the corresponding parameter renamed. Same for all other instances.
8 (commented on others PR)
* Parses an {@code String amount} into a {@code Amount}.
9 (commented on others PR)
* @throws ParseException if the given {@code amount} is invalid.
10 (commented on others PR)
* @throws ParseException if the given {@code date} is invalid.
11 (commented on others PR)
* Parses a {@code String category} into a {@code Category}.
12 (commented on others PR)
* @throws ParseException if the given {@code category} is invalid.
13 (commented on others PR)
* Parses {@code Collection<String> categories} into a {@code Set<Category>}.
14 (commented on others PR)
parseTags
should be renamed to parseCategories
with the corresponding parameter renamed. Same for all other instances.
15 (commented on others PR)
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `TransactionListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
16 (commented on others PR)
<div markdown="span" class="alert alert-info">:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Category` list in the `AddressBook`, which `Transaction` references. This allows `AddressBook` to only require one `Category` object per unique `Category`, instead of each `Transaction` needing their own `Category` object.<br>
17 (commented on others PR)
ecp -> ec ++: index, editPersonDescriptor
Let's update the diagrams at a later stage.
18 (commented on others PR)
Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-0c6b6abcfac8c205e075294f25e851fe).
Let's revert this change since we will most likely be deleting tutorials eventually.
19 (commented on others PR)
Person editedPerson = createEditedPerson(personToEdit, editPersonDescriptor);
20 (commented on others PR)
Could you import EditCommand.EditTransactionDescriptor
instead?
21 (commented on others PR)
* Adds an income to the finance tracker.
22 (commented on others PR)
The command result display is not big enough to display everything, nor can it be scrolled. Instead, the words are just cut off.
23 (commented on others PR)
Should something else be used instead of menu? Having to click the Menu
, then the MenuItem
for tabs is very clunky. An alternative is JavaFX TabPane.
24 (commented on others PR)
I don't think the help menu should be grouped with the other options as the other options are tab headers while the help menu is a menu.
25 (commented on others PR)
This extra line break can be removed.
26 (commented on others PR)
* Opens the analytics window.
Missing full stop.
27 (commented on others PR)
panelLabel
does not seem to correctly reflect the chosen tab.
Note how Income
is selected, yet the label displays Expense
.
28 (commented on others PR)
If the JavaFX TabPane were used, I don't think you need to write such hacky code.
29 (commented on others PR)
* Creates an {@code ExpensePanel} with the given {@code ObservableList}.
30 (commented on others PR)
Should this class be dealing with Expense
objects instead of Transaction
objects?
31 (commented on others PR)
* Creates an {@code IncomePanel} with the given {@code ObservableList}.
32 (commented on others PR)
Should this class be dealing with Income
objects instead of Transaction
objects?
33 (commented on others PR)
Any reason why these imports aren't grouped with the others?
34 (commented on others PR)
Move this import up with the other imports, and leave a line after the last import.
35 (commented on others PR)
This might be due to the bug found by @zhaojj2209 whereby switching tabs works only for the first time since the application was started.
36 (commented on others PR)
Unable to reliably replicate this. I'll close this comment for now and keep and eye for this bug occurring in the future.
37 (commented on others PR)
@siddarth2824 will be addressing this in a separate PR.
38 (commented on others PR)
See https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/75#discussion_r501141034.
39 (commented on others PR)
See https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/75#discussion_r501141034.
40 (commented on others PR)
This will be changed in a future PR once the Expense
model is more fleshed out.
41 (commented on others PR)
This will be changed in a future PR once the Income
model is more fleshed out.
42 (commented on others PR)
Add full stops? Same for the other comments.
43 (commented on others PR)
Possible to add backticks to parts which reference code? i.e. AddCommand
44 (commented on others PR)
+ ": Deletes the expense identified by the index number used in the displayed expense list.\n"
45 (commented on others PR)
+ ": Deletes the income identified by the index number used in the displayed income list.\n"
46 (commented on others PR)
* Deletes an income identified using its displayed index from the finance tracker.
47 (commented on others PR)
* Deletes an expense identified using its displayed index from the finance tracker.
48 (commented on others PR)
Currently, these specific success messages are being shown. Should these be removed?
49 (commented on others PR)
This value depends on the number of entries in our test data though. How do you propose we get around this without hard-coding?
50 (commented on others PR)
public void execute_showsAllExpenses() {
Sounds weird otherwise. 😕
51 (commented on others PR)
public void execute_showAllIncomes() {
52 (commented on others PR)
Is this line break intended?
53 (commented on others PR)
- Edit find commands to be similar to edit commands e.g `find INDEX KEYWORD`
54 (commented on others PR)
Should the date be set in the CNY period?
55 (commented on others PR)
Perhaps bullet points detailing the behaviour of the command on each tab could be moved from the format section to the description section? @yongping827 what do you think?
56 (commented on others PR)
Can getFilteredExpenseList
return an ObservableList>Expense>
instead?
57 (commented on others PR)
Similarly, can getFilteredIncomeList
return an ObservableList>Income>
instead?
58 (commented on others PR)
Can we enforce the subtypes within the list itself?
59 (commented on others PR)
Use a more descriptive variable name.
60 (commented on others PR)
Use a more descriptive variable name.
61 (commented on others PR)
Remove extra newline.
62 (commented on others PR)
This is quite bad design. Perhaps we should just throw an error when executing any of the base commands which should never be executed?
63 (commented on others PR)
Refer to issue #125.
64 (commented on others PR)
Is this assertion necessary?
65 (commented on others PR)
Similarly, is this necessary?
66 (commented on others PR)
`JsonAdaptedExpense` and `JsonAdaptedIncome` are JSON-friendly adaptations of `Expense` and `Income` respectively.
67 (commented on others PR)
Remove this extra newline?
68 (commented on others PR)
* Creates a {@code MonthlyBudget} with an expense limit and savings goal of $0.
Comment is not descriptive.
69 (commented on others PR)
* This guarantees that the elements of the FilteredList can successfully be cast to the target type.
*
* @param list The FilteredList to be cast.
Add an empty line between the description and parameter sections.
70 (commented on others PR)
Add line breaks after every full stop. This will help us version control the document better. Same for the rest of the document.
71 (commented on others PR)
Edits an expense in the finance tracker.
72 (commented on others PR)
Edits an expense in the finance tracker.
73 (commented on others PR)
Don't leave gaps in between for consistency with the other classes.
74 (commented on others PR)
Since these are mostly the same, can they be generalised into a method? Or will these diverse significantly in the future?
75 (commented on others PR)
Reorder the imports to be alphabetical.
76 (commented on others PR)
box BookmarkExpense UI_COLOR_T1
77 (commented on others PR)
[->LogicManager: execute("convert-bookmark-expense 1 d/20/10/2020")
78 (commented on others PR)
![Sequence Diagram of the Convert Bookmark Expense To Expense Feature](images/ConvertBookmarkExpenseSequenceDiagram.png)
79 (commented on others PR)
adds a bookmark expense titled `Phone Bill` with amount `$60.00` and two categories `Utilities` and `Personal`.
80 (commented on others PR)
Should we standardise Food & Drink
to Food & Beverage
?
81 (commented on others PR)
// multiple dates
82 (commented on others PR)
+ "Inputting the date is optional. If no input is given for d/DATE, the current date will be used.\n"
Same for the other instances of this sentence.
83 (commented on others PR)
Group this import with the others in alphabetical order.
84 (commented on others PR)
* Returns true if the {@code Amount} has a non-negative value.
85 (commented on others PR)
Missing description of param.
86 (commented on others PR)
Missing description of param.
87 (commented on others PR)
Useless comment.
88 (commented on others PR)
Try to make it more descriptive, I don't need a comment to tell me this is a constructor.
89 (commented on others PR)
Should these statements be reordered to fit the subsections?
90 (commented on others PR)
Add a space before this line so that the image isn't so cramped?
91 (commented on others PR)
* `edit 2 t/Shopee Internship d/24/10/2020`
92 (commented on others PR)
add-income t/Shopee Internship a/560 d/03/10/2020 c/Work
93 (commented on others PR)
New income added: Shopee Internship Amount: $560.00 Date: 03/10/2020 Categories: [Internship]
94 (commented on others PR)
Adds a new income titled `Shopee Internship`, with amount `$560.00`, date `03/10/2020`, and a single category `Internship`.
95 (commented on others PR)
This line isn't very clear as to what it's for. 😕
If it is meant to be captions to the image, perhaps we could work out some styling to use that makes its purpose more obvious?
Same for the other captions.
96 (commented on others PR)
To be resolved in a separate PR. Issue #256 opened.
97 (commented on others PR)
Perhaps it would be better for this method to simple do the replaceAll
, then pass removedExtraWhiteSpacesTitle
into parseTitle
? That way, we get less repetition of code.
Also, I believe whitespace
is a single word.
98 (commented on others PR)
String removedExtraWhitespaceTitle = title.replaceAll("\\s{2,}", " ");
99 (commented on others PR)
Can you add non-breaking spaces to all example code snippets for both the warnings? I'm afraid this might give rise to ambiguity.
100 (commented on others PR)
Should this be made specific to either dates and/or months only? The given example doesn't quite apply to year.
101 (commented on others PR)
public static final String MESSAGE_CONSTRAINTS = "Dates should be a valid calendar date of the format dd/mm/yyyy, "
Just in case someone enters 30/02/2020
and files a bug report stating that the error message is not informative?
102 (commented on others PR)
That would be good I think. We can properly define what a valid calendar date is in the user guide.
103 (commented on others PR)
Sounds good! 👍
104 (commented on others PR)
Possible to link to the various issues?
105 (commented on others PR)
Would be good to use :jack_o_lantern:
and :ghost:
instead.
106 (commented on others PR)
Minutes does not appear in the list because the front matter is missing.
107 (commented on others PR)
date: 2020-10-31
Wrong date.
108 (commented on others PR)
- Got a time traveller on our hands [#246](https://github.com/AY2021S1-CS2103T-W16-3/tp/issues/246)
Broken link.
109 (commented on others PR)
Should there be a reference made to the clear
command under quick start? Seems weird to have this all the way at the bottom.
110 (commented on others PR)
This was originally broken up into 2 lines as the final submission has to be a PDF file. When written in a single line, the code block is displayed with a horizontal scrollbar that results in the line being cut off in PDF format.
As a side note, there are multiple other instances in the user guide where code blocks are too long and get truncated after converting to PDF.
111 (commented on others PR)
Any leading/trailing whitespaces will be ignored. e.g. `add t/ Bubble Tea` and `add t/Bubble Tea ` will be treated as `add t/Bubble Tea`.
112 (commented on others PR)
Searches for all expenses with titles containing the specified
TITLE_KEYPHRASE
keyphrase exactly.
Partial matches are accepted. e.g.
t/Snack
will matchSnacks
Do these two statements contradict each other?
113 (commented on others PR)
Inconsistent use of full stops.
114 (commented on others PR)
The message displayed in the application uses t/KEYWORD
instead of t/TITLE_KEYPHRASE
.
115 (commented on others PR)
Same issues here as highlighted above.
116 (commented on others PR)
No more CELC definitions?
117 (commented on others PR)
Should we use the plural form when there are multiple pull requests?
118 (commented on others PR)
Should there be a break
statement? Otherwise, hasEmptyTitleKeyphrase
merely depends on the last element in titleKeyphrases
.
119 (commented on others PR)
Similar issue here as above.
120 (commented on others PR)
The following error is thrown when find t/ t/hello
is input.
INFO: ----------------[USER COMMAND][find t/ t/hello]
Nov 06, 2020 7:38:43 PM ay2021s1_cs2103_w16_3.finesse.logic.parser.FinanceTrackerParser parseCommand
INFO: ----------------[CURRENT TAB][overview]
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8879)
at com.sun.javafx.scene.control.behavior.TextFieldBehavior.fire(TextFieldBehavior.java:184)
at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.lambda$keyMapping$62(TextInputControlBehavior.java:330)
at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$KeyHandler.process(Scene.java:4058)
at javafx.scene.Scene$KeyHandler.access$1500(Scene.java:4004)
at javafx.scene.Scene.processKeyEvent(Scene.java:2121)
at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2595)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$1(GlassViewEventHandler.java:248)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247)
at com.sun.glass.ui.View.handleKeyEvent(View.java:547)
at com.sun.glass.ui.View.notifyKey(View.java:971)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
at com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
... 47 more
Caused by: java.lang.IllegalArgumentException: Keyphrase cannot be empty
at ay2021s1_cs2103_w16_3.finesse.commons.util.AppUtil.checkArgument(AppUtil.java:39)
at ay2021s1_cs2103_w16_3.finesse.commons.util.StringUtil.containsIgnoreCase(StringUtil.java:27)
at ay2021s1_cs2103_w16_3.finesse.model.transaction.predicates.TitleContainsKeyphrasesPredicate.lambda$test$0(TitleContainsKeyphrasesPredicate.java:22)
at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1631)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:528)
at ay2021s1_cs2103_w16_3.finesse.model.transaction.predicates.TitleContainsKeyphrasesPredicate.test(TitleContainsKeyphrasesPredicate.java:22)
at ay2021s1_cs2103_w16_3.finesse.model.transaction.predicates.TitleContainsKeyphrasesPredicate.test(TitleContainsKeyphrasesPredicate.java:12)
at java.base/java.util.function.Predicate.lambda$and$0(Predicate.java:69)
at javafx.collections.transformation.FilteredList.refilter(FilteredList.java:332)
at javafx.collections.transformation.FilteredList.access$000(FilteredList.java:50)
at javafx.collections.transformation.FilteredList$1.invalidated(FilteredList.java:102)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147)
at javafx.collections.transformation.FilteredList.setPredicate(FilteredList.java:125)
at ay2021s1_cs2103_w16_3.finesse.model.ModelManager.updateFilteredTransactionList(ModelManager.java:276)
at ay2021s1_cs2103_w16_3.finesse.model.ModelManager.updateFilteredTransactionList(ModelManager.java:284)
at ay2021s1_cs2103_w16_3.finesse.logic.commands.FindTransactionCommand.execute(FindTransactionCommand.java:22)
at ay2021s1_cs2103_w16_3.finesse.logic.LogicManager.execute(LogicManager.java:52)
at ay2021s1_cs2103_w16_3.finesse.ui.MainWindow.executeCommand(MainWindow.java:248)
at ay2021s1_cs2103_w16_3.finesse.ui.CommandBox.handleCommandEntered(CommandBox.java:96)
... 59 more
121 (commented on others PR)
Inconsistent indentation level with line 148.
122 (commented on others PR)
Just to check, is the reason why a space is prepended so that you can chain these strings together? If so, perhaps it would be good to add a comment stating this.
123 (commented on others PR)
Possible to add tests for partial title keyphrases too?
124 (commented on others PR)
Any reason for prepending with a space here?
125 (commented on own PR)
pitest
can be added at a later time when we get around to achieving full coverage.
126 (commented on own PR)
My bad, removed test
.
127 (commented on own PR)
I thought that the GITHUB_TOKEN
secret was being blocked due to this PR being from a fork. Seems to also happen with branches on this repo. 😕
128 (commented on own PR)
Apparently, GITHUB_TOKEN
cannot be used; must be a GitHub user's personal access token.
129 (commented on own PR)
Setting the baseurl
to be the repo name is necessary for GitHub Pages to function.
130 (commented on own PR)
CI job is able to run now. Tested on a branch of this repo as PRs from forks are unable to access secrets.
See https://github.com/AY2021S1-CS2103T-W16-3/tp/runs/1160121842.
131 (commented on own PR)
@yongping827 The corresponding comment in AddIncomeCommandParser
does not have a full stop, should I still add it?
132 (commented on own PR)
This was left as such to mirror the corresponding change in #56. Can I confirm this is not intended?
Edit: Never mind, just saw https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/63#discussion_r499263026.
133 (commented on own PR)
Full stops to be added separately. This is honestly very low priority.
134 (commented on own PR)
Hmm, I went with ListTransactionCommand
as the commands shouldn't have to care about the state of the UI; that's the job of the FinanceTrackerParser
.
135 (commented on own PR)
This comment is here because the contents of this file needs to correspond to the transactions created in TypicalTransactions
. For the other test JSON files, they have no such dependency.
136 (commented on own PR)
Believe it or not, the 3 line breaks here is for consistency with the rest of the file.
137 (commented on own PR)
Pre-emptive logging so that any bugs reported in the future can be investigated.
138 (commented on own PR)
Left -apple-system
in so that if WebView
ever gets fixed, everything starts working normally again.
139 (commented on own PR)
If anyone can find a more CELC-friendly way of phrasing this without introducing any ambiguities, I'm all ears.
140 (commented on own PR)
Could you point out where code is duplicated? I don't see any instances of code duplication.
141 (commented on own PR)
Ah okay, I see now!
142 (other comment)
I was wondering why IntelliJ was throwing warnings for the pitest
task in build.gradle
. See https://github.com/szpak/gradle-pitest-plugin#eliminate-warning-in-idea. For documentation purposes only; I agree that this change feels less readable.
143 (other comment)
Requested for permission to use the external library at nus-cs2103-AY2021S1/forum#253.
144 (other comment)
LGTM!
145 (other comment)
While the current deployment process works with personal access tokens, @wltan brought up the point that we should have it work with the repository token GITHUB_TOKEN
instead. This is a more ideal solution, especially if Prof Damith were to adopt the use of jekyll-spaceship
.
146 (other comment)
Relative links are currently not working. Trying to find a fix.
147 (other comment)
PR has been picked up by the grading script.
148 (other comment)
Closed with #50.
149 (other comment)
Screenshots
Desktop:
Mobile:
150 (other comment)
Could you rebase to address merge conflicts before we start reviewing?
151 (other comment)
Issue seems to be caused by spaces in the file path.
152 (other comment)
Define the allowed inputs for Title
and Category
more explicitly in the user guide. The intricacies of the input validation cannot be captured within MESSAGE_CONSTRAINTS
without making it unnecessarily verbose which is not user friendly.
See #130.
153 (other comment)
Pushed back to v1.4 so as to devote more time to developing and polishing features.
154 (other comment)
Related to #131.
155 (other comment)
Related to #131.
156 (other comment)
Related to #131.
157 (other comment)
Related to #131.
158 (other comment)
Preview of user guide in Fine$$e:
159 (other comment)
As of this PR, all the links in the user guide are functional.
160 (other comment)
1234
is a perfectly valid input for the title parameter as stated in our user guide. It is merely an identifier of the transaction for the user and does not affect the functionality of the application in any way. As such, there is no "abuse of the application" going on.
161 (other comment)
Remove all abbreviation elements >abbr>
from the user guide and write out the contents of these tags explicitly.
Not only does this confuse CELC, it also confuses our peers as seen in #243.
162 (other comment)
¥
, £
, and Ü
are not in fact ASCII characters, let alone printable ASCII characters.
In addition, the list of printable ASCII characters was explicitly defined under section 4 of the user guide.
163 (other comment)
Add acknowledgements for all libraries used.
164 (other comment)
This is not a bug as the previous behaviour was WYSIWYG. Nevertheless, we will be replacing instances of multiple whitespace with a single whitespace to prevent issues such as this from being opened in the practical exam.
165 (other comment)
Add badge for license.
166 (other comment)
Resolved in #252.
167 (other comment)
I'm in favour of your suggestion with regards to CommandHistory
. A singleton pattern makes sense here as there should only ever be one instance of CommandHistory
. Very elegant! 👍
168 (other comment)
Add a note somewhere in the user guide that Fine$$e deals with transactions and not items. See https://github.com/AY2021S1-CS2103T-W16-3/tp/issues/238#issuecomment-721108856.
@junlong4321
(119 comments)1 (commented on others PR)
I think "the filename of the profile photo should be doc/images/githbub_username_in_lower_case.png" - Week 7 Point 2 in Project
2 (commented on others PR)
Might wanna consider team/samlsm instead
3 (commented on others PR)
Missing space before 4a.
4 (commented on others PR)
Missing space before 4a.
5 (commented on others PR)
Remove extra space
6 (commented on others PR)
Missing "Use case ends."
7 (commented on others PR)
Inconsistent comma, (+ EMAIL_DESC_BOB,)
8 (commented on others PR)
Inconsistent comma, (+ EMAIL_DESC_BOB,)
9 (commented on others PR)
Inconsistent comma, (+ EMAIL_DESC_BOB,)
10 (commented on others PR)
'''//// student-related tests''' may work better here instead of Student, since we also have '''//// moduleClass-related tests'''
11 (commented on others PR)
Extra space
12 (commented on others PR)
Extra space
13 (commented on others PR)
See if its possible to trim down this part. I took a couple of tries before I understood what was going on
14 (commented on others PR)
''' The {@code ModuleClass} must not exist in the current list '''
15 (commented on others PR)
Don't quite understand this. Specifically, don't understand what is a backing list and what is meant by unmodifiable
16 (commented on others PR)
/** Returns an unmodifiable view of the filtered
* {@code ModuleClass} list.
*/
17 (commented on others PR)
// student-related constants
18 (commented on others PR)
// moduleClass-related constants
19 (commented on others PR)
Need full stop for this comment
20 (commented on others PR)
Comments start with lower letter + no full stops
// workaround as storage functionality for ModuleClasses has not been implemented
21 (commented on others PR)
Ok lets retain it in that case
22 (commented on others PR)
Ok lets retain it in that case
23 (commented on others PR)
Ok lets retain it in that case
24 (commented on others PR)
Ok
25 (commented on others PR)
Missing space
+ PREFIX_TELEGRAM + "johnDO3 "
26 (commented on others PR)
Consider keeping the previous tag set? Because its more of an app to track students rather than keep address contacts.
I think the tagset got overwritten. Saw that you merged the master branch into your branch
27 (commented on others PR)
Might be good if we remove the telegram prefix, since user has to type @ for email. So we might want to keep the design consistent by making them type @ for telegram handle
An alternative would be to update both the UG and DG to reflect the telegram handle changes.
I personally would go for the former than latter. How about the rest?
28 (commented on others PR)
Any reasons why "student" was removed?
29 (commented on others PR)
Extra white space
30 (commented on others PR)
Any reasons for removing this white space?
31 (commented on others PR)
Any reasons for removing this white space?
32 (commented on others PR)
Any reasons for removing this white space?
33 (commented on others PR)
Resolved by sticking to using TELEGRAM_PREFIX = "@"
34 (commented on others PR)
Any reasons for removing this white space?
35 (commented on others PR)
Resolved by adding back "student" in command
36 (commented on others PR)
* @param index Index of the class in the filtered class list to edit.
37 (commented on others PR)
* @param editModuleClassDescriptor Details to edit the class with.
38 (commented on others PR)
// short circuit if same object
39 (commented on others PR)
// instanceof handles nulls
40 (commented on others PR)
// state check
41 (commented on others PR)
* @throws ParseException If the user input does not conform the expected format.
42 (commented on others PR)
I think the full stop got removed for some reasons.
My current updated code base has a full stop for this comment
* Parses input arguments and creates a new FindStudentCommand object.
43 (commented on others PR)
'''@throws ParseException If the user input does not conform the expected format.'''
44 (commented on others PR)
|| (other instanceof ModuleNameContainsKeywordsPredicate // handles null)
45 (commented on others PR)
start with lower case, e.g
// one keyword
46 (commented on others PR)
* Returns an {@code EditModuleClassDescriptor} with fields containing {@code moduleClass}'s details.
47 (commented on others PR)
Can you help center the fencing for the table?
48 (commented on others PR)
Can you help organise/center the fencing "|" for the userguide table as well? I remembered centering it awhile back during v1.1 but seems like some of the fences got out of position again
49 (commented on others PR)
Shows a list of all students and all classes in the application.
50 (commented on others PR)
Might want to consider putting this after DeleteModuleClassCommand.COMMAND_WORD but before LinkCommand.COMMAND_WORD to maintain a fixed action sequence
51 (commented on others PR)
"3" seems like a magic number across the test script. We might want to consider abstracting it into a variable in a separate PR
52 (commented on others PR)
I think we should use Color since the naming before the change was Color
53 (commented on others PR)
I agree with Dexter on this
54 (commented on others PR)
* Deletes the given {@code Student} and the {@code Student}'s {@code UUID} in all {@code ModuleClass}es.
55 (commented on others PR)
56 (commented on others PR)
57 (commented on others PR)
* Deletes {@code key} from this {@code TutorsPet} and also the {@code UUID} of {@code Student} from all {@code ModuleClass}es.
58 (commented on others PR)
Just to clarify, the reason why you create a new hashset is because the set returned by getStudentUuids()
is immutable?
59 (commented on others PR)
// manually remove UUID
60 (commented on others PR)
Is this change because if a student is deleted, then the associated student in ModuleClass is removed as well?
61 (commented on others PR)
Extra space
62 (commented on others PR)
Extra space
63 (commented on others PR)
Can we remove this space? Since line 17 and 19 are both messages
64 (commented on others PR)
Space between line 15 and 16?
65 (commented on others PR)
The words undone and redone are kinda awkward but I think its okay if we express it in that way, since it still gets the message across in a succinct manner
66 (commented on others PR)
* Creates a {@code StateRecords} with the specified {@code currentIndex} and {@code stateRecords}.
67 (commented on others PR)
Extra space
68 (commented on others PR)
I agree with Dexter on this. We can probably extract the CRUD operations to Logic instead of clustering everything in AttendanceRecordListTest.java
69 (commented on others PR)
We can shift the CRUD here out to another class as well
70 (commented on others PR)
Any reasons for this spacing?
71 (commented on others PR)
Any reasons for this spacing?
72 (commented on others PR)
Would recommend putting new back, since we are technically still generating a new Lesson
73 (commented on others PR)
Nice assert
74 (commented on others PR)
Name moduleClassName= targetModuleClass.getName();
75 (commented on others PR)
+ PREFIX_WEEK + "WEEK_NUMBER (must be a positive integer) "
76 (commented on others PR)
+ "Note: All indexes must be positive integers.\n"
77 (commented on others PR)
Swap line 91 and 92 for consistency
78 (commented on others PR)
assert targetWeek != null;
79 (commented on others PR)
Maybe keep the original?
80 (commented on others PR)
+ "by the index number used in the displayed class list "
81 (commented on others PR)
* Adds all edited lessons in the target module class to the new module class.
82 (commented on others PR)
We can consider adding this for AddLessonCommand
and DeleteLessonCommand
as well
83 (commented on others PR)
👍🏻
84 (commented on others PR)
Then we might have to do a full refactor for all occurrences and stick with it? Because from what i remember, many of the shorthand for loops do not have spaces
85 (commented on others PR)
+ "Existing values will be overwritten by the input values.\n"
"Note: All indexes must be positive integers.\n"
86 (commented on others PR)
We can remove "must be a positive integer" from these 3 indexes to keep the formatting consistent with '''AddAttendanceCommand''' and '''DeleteAttendanceCommand'''
87 (commented on others PR)
Can we separate the else if
to another if
guard clause to keep the format consistent?
88 (commented on others PR)
String message =
89 (commented on others PR)
Separate guard clause
if (!isModuleClassIndexPresent || !isLessonIndexPresent || !isStudentPresent || !isWeekPresent) {
90 (commented on others PR)
if (argMultimap.getValue(PREFIX_PARTICIPATION_SCORE).isPresent()) {
91 (commented on others PR)
Thanks for the catch!
92 (commented on others PR)
Can we abstract out these values like AddAttendanceCommandTest
and DeleteAttendanceCommandTest
?
E.g
Index moduleClassIndex = INDEX_FIRST_ITEM;
Index lessonIndex = INDEX_FIRST_ITEM;
Index studentIndex = INDEX_FIRST_ITEM;
Week targetWeek = VALID_WEEK_1;
assertThrows(NullPointerException.class, () -> new DeleteAttendanceCommand(
null, lessonIndex, studentIndex, targetWeek));
93 (commented on others PR)
Nice catch!
94 (commented on others PR)
Can i check why is there a change to getOneBased()
?
95 (commented on others PR)
Can update the above '''/'''s to ''''''
96 (commented on others PR)
Sry, is there a reason why this is being replaced?
97 (commented on others PR)
I see!
98 (commented on others PR)
Should we add in null tests for the other test cases as well?
99 (commented on others PR)
Would it be good to keep this? Because there might be multiple aspects to a feature
100 (commented on others PR)
Users should not have to type in attendance-related commands when the student is absent from a lesson.
101 (commented on others PR)
I'll send in a separate PR to update my pros and cons section as well. Lets follow your style of having the pros and cons as individual pointers rather than paragraphs
102 (commented on others PR)
+ "Note: All indexes and numbers must be positive integers.\n"
103 (commented on others PR)
Should we show her the different themes as well? E.g using screenshots
104 (commented on others PR)
Not very sure but I think the name of this puml should be DeleteStudentSequenceDiagram.puml?
105 (commented on others PR)
Was thinking of the different themes (ie light, alternate, dark) and not just the buttons alone. What do you think?
106 (commented on others PR)
Is this excess whitespace?
107 (commented on others PR)
Logic here looks correct to me
108 (commented on others PR)
## Other Contributions
109 (commented on others PR)
* A list of all PRs I have reviewed can be found [here](https://github.com/AY2021S1-CS2103T-T10-4/tp/pulls?q=is%3Apr+reviewed-by%3Aruixuantan).
110 (commented on others PR)
My team, comprising 5 NUS Computer Science undergraduates, developed the application over the course of 6 weeks.
111 (commented on others PR)
^ See if its better
112 (commented on others PR)
* `edit-attendance` command feature. [#157](https://github.com/AY2021S1-CS2103T-T10-4/tp/pull/157)
113 (commented on others PR)
* Update student-related commands and parsers. [#56](https://github.com/AY2021S1-CS2103T-T10-4/tp/pull/56)
114 (commented on others PR)
* Added a `reset` command that allow users to clear all data in Tutor's Pet. [#106](https://github.com/AY2021S1-CS2103T-T10-4/tp/pull/106)
On a side note, might want to consider standardising everything in this section
115 (commented on others PR)
1. If `Lesson` does not exists in `targetModuleClass` and the timing does not overlap with any existing `Lesson`s, a new
116 (commented on others PR)
`ModuleClass` with `Lesson` will be created. Otherwise, a `CommandException` will be thrown.
117 (commented on others PR)
Should we stick to '''>br>''' instead of ''''''? Since the existing manual tests are using '''>br>'''
118 (commented on others PR)
Checked the ug on your branch. The steps counter will reset to 1 if there isn't an additional space at image of line 324/325.
119 (commented on others PR)
![Reset before](images/ugimages/ResetBefore.png)
120 (commented on own PR)
Resolved by removing MODULE_CODE
121 (commented on own PR)
Resolved by removing MODULE_CODE
122 (commented on own PR)
Resolved by removing [] for all fields within add apart from [tag/TAG]
123 (commented on own PR)
Resolved by updating line 58 to
e.g. `[tag/TAG]…` can be used as ` ` (i.e. 0 times), `tag/student`, `tag/TA` etc.
124 (commented on own PR)
Resolved by adding in commit suggestion
**List Students in Class** | `list-students /by n/CLASS_NAME`<br> e.g., `list-students /by n/CS2103T Tutorial T10`
125 (commented on own PR)
Resolved by changing clear class to "clear-class"
126 (commented on own PR)
Resolved by changing list students to "list-students", and title to "Listing all students within a class"
127 (commented on own PR)
Resolved by retaining {:toc}
128 (commented on own PR)
Resolved by removing redundant add
129 (commented on own PR)
Resolved by moving ellipsis outside of square brackets
130 (commented on own PR)
Resolved by removing address field and updating tag prefix from /t to /tag
131 (commented on own PR)
Ok i won't be touching it in that case
132 (commented on own PR)
Added the tags, used tag/average and tag/TA candidate to keep formatting consistent
133 (commented on own PR)
I think it'd be better if the summary comes before the detailed explanation. As a user i wouldn't want to scroll downwards if i just want to reference the commands. What do the rest think?
134 (commented on own PR)
I thought of that, but the issue is that the formatting will not be standardized across the table and commands. I feel that perhaps its better to caps everything so that we standardize our documentation
135 (commented on own PR)
Issue is that the formatting will not be standardized across the table and commands. I feel that perhaps its better if we follow the actions used in the command summary?
136 (commented on own PR)
Changed Command summary to Command list
137 (commented on own PR)
Resolved by rewording expression to show that Tutor's Pet can return more than one user found
138 (commented on own PR)
Will keep clear instead of changing to delete
139 (commented on own PR)
Ok lets keep the previous
140 (commented on own PR)
Will be keeping line 155 instead
141 (commented on own PR)
To change to '''requireAllNonNull(uuid, name, phone, email, tags);'''
142 (commented on own PR)
Good catch, thxs, no point editing UUID so no point adding UUID into EditStudentDescriptor.
Resolved by removing setUuid() and getUuid()
143 (commented on own PR)
Resolved by changing line 93 to '''UUID updatedUuid = studentToEdit.getUuid();'''
144 (commented on own PR)
To add a DEFAULT_UUID in StudentBuilder.java and convert it to a UUID for usage instead of generating a random UUID for testing
145 (commented on own PR)
Resolved by removing UUID field
146 (commented on own PR)
Resolved by specifically adding Uuids into TypicalStudents
147 (commented on own PR)
RIP, forgot to remove sneaky boi
148 (commented on own PR)
Added the following :
JsonAdaptedStudent.java
if (uuid == null) {
throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, "uuid"));
}
JsonAdaptedStudentTest.java
@Test
public void toModelType_invalidUuid_throwsIllegalValueException() {
JsonAdaptedStudent student =
new JsonAdaptedStudent(null, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TAGS);
String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, "uuid");
assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);
}
Since UUID is a built-in java class, instead of doing something like throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));
, i opted for throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, "uuid"));
149 (commented on own PR)
Possible, but the json "studentIds" in the json file will be changed to "studentUuids". Which one do you guys prefer?
150 (commented on own PR)
I initially added a class entry, but then eventually removed them as I wanted to isolate the test cases better (Since this json file is more to test for invalidstudent rather than invalidclass.) Any thoughts?
151 (commented on own PR)
Currently since we are using UUID.randomUUID(), the edge case that could potentially happen is a null UUID rather than that of a UUID that is not specified properly, unless the user decides to edit the uuid in the json file to a smaller uuid string. Hence i decided to only test for toModelType_nullStudentIds_throwsIllegalValueException()
Any thoughts on this?
152 (commented on own PR)
Was thinking that a guard clause would be sufficient (Since its likely the case that a uuid is either well defined (by using Java's UUID.randomUUID(), or null))
Any thoughts on whether a try catch is needed here? Will include one if needed
153 (commented on own PR)
Thats a good idea. I'll pull information from ALICE directly and remove the TODO comment
154 (commented on own PR)
Resolved by keeping status quo for invalidClassTutorsPet.json (ie no changes)
155 (commented on own PR)
Resolved by adopting suggested change
156 (commented on own PR)
Resolved by pulling information from ALICE directly and removing TODO comment
157 (commented on own PR)
Resolved by refactoring all occurrences of studentIds to studentUuids, including the studentIds field in model ModuleClass.java
158 (commented on own PR)
Resolved by abstracting code inside toModelType() into two smaller methods.
159 (commented on own PR)
Resolved by adding try catch block
160 (commented on own PR)
Resolved by introducing checks for invalid UUIDs
161 (commented on own PR)
Yes, it applies across all UUIDs so long they are not invalid
An example of an invalid UUID is "fffa3023-7d89-426b-ba01-" // No uuid values after dash
In contrast, a valid uuid is "fffa3023-7d89-426b-ba01-d45eaa" // Missing values after d45eaa are padded with zeros
162 (commented on own PR)
Resolved by using existing information from ObservableList>Students> in tutorsPet
163 (commented on own PR)
Will change it to '''One or more of the given indexes are invalid.'''
164 (commented on own PR)
Could be a typo on the user's part. Would recommend keeping the '''Use case resumes at step 1.'''
165 (commented on own PR)
Added '''moduleClassIndex''' parameter into '''getAddLessonCommand'''
166 (commented on own PR)
Abstracted to '''ModuleClassUtil'''
167 (commented on own PR)
Added guard clause to check if attendance exist in the first place, and added negative test case to check for error message throwing for this scenario
168 (commented on own PR)
Changed to following AddAttendanceCommand format and throw MESSAGE_CONSTRAINT
instead
169 (commented on own PR)
Added assertion for both '''DeleteAttendanceCommand''' and '''AddAttendanceCommand'''
170 (commented on own PR)
Inserted assertion
171 (commented on own PR)
Simplified for both '''AddAttendanceCommand''' and '''DeleteAttendanceCommand'''
172 (commented on own PR)
Created ModuleClassModificationUtil
and LessonModificationUtil
classes to address this
173 (commented on own PR)
Lets do it in a separate PR.
174 (commented on own PR)
createModifiedModuleClassWithModifiedLesson
is used in AttendanceCommands. It is specifically used as a bridge to modify a targeted module class after CRUD has been done on attendance and stored inside a lesson. createModifiedModuleClassWithEditedLesson
specifically performs CRUD on the lesson itself
175 (commented on own PR)
We can use manualReplaceLessonToModuleClass from ModuleClassUtil for now since there are no test cases for those methods which you've mentioned yet
176 (commented on own PR)
I'd like to check with you guys on how we should go about handling this block.
Problem : removeAttendance(...)
throws CommandException
when it is unable to find an attendance to delete. This works for individual attendances, but if we doing a cascading delete (ie removing all occurrences of the student), then we would want to return the attendanceRecord
even if no student can be deleted.
Solution 1 (Currently implemented) : Do a try and catch to overwrite the CommandException
Solution 2 : Remove the removeAttendance(...)
abstraction and use the underlying code in removeAttendance(...)
in this method. But this will violate SRP.
Solution 3 : Propagate the CommandException
upwards to LessonUtil
and ModuleClassUtil
and eventually UniqueModuleClassList
. But downside is that you eventually have to handle it with try catch.
177 (commented on own PR)
To go with solution 1
178 (other comment)
Completed
179 (other comment)
This seems to be missing the saving of UUIDs to local storage, is that planned for a separate PR?
To implement saving of UUIDs to local storage
180 (other comment)
Mostly looks good to me, just need some minor changes.
Could you also add a test case to ensure that
EditStudentDescriptor
does not change the UUID of a student?
I think this part of EditStudentDescripterTest.java factors in that UUID isn't changed? Otherwise it will return false if the UUID changes
public class EditStudentDescriptorTest {
@Test
public void equals() {
// same values -> returns true
EditStudentDescriptor descriptorWithSameValues = new EditStudentCommand.EditStudentDescriptor(DESC_AMY);
assertTrue(DESC_AMY.equals(descriptorWithSameValues))
181 (other comment)
Not sure if we need to get approval before we merge this in since we are trying to use a new module?
Module has been removed (Last checked 26/09/2020)
182 (other comment)
Looks great! But like what Dexter said, I am not sure whether we need to get permission first.
Module has been removed
183 (other comment)
@ypinhsuan can yours work? my one works fine
184 (other comment)
Decided not to implement UUID equality check as it may risk introducing a lot of bugs into the code
185 (other comment)
Not required.
186 (other comment)
Use \ , update test cases to use PREFIX variables instead of hardcoding commands (e.g "\c")
187 (other comment)
Number of occurrence is 10. There is no week 11
188 (other comment)
TODO : Change number of occurrence to number of weeks
189 (other comment)
AB3 makes phone number compulsory but not everyone has a phone number. Telegram to be kept compulsory. Won't fix
190 (other comment)
Filtering of the list provides a visual cue to the user that the student has been linked to the class. Clearly stated in the UG that the list will be filtered. Not a bug. Won't fix.
191 (other comment)
Step 1 - To remove name field from isSameStudent(...)
comparator
192 (other comment)
This is the correct behaviour because the repo url should end with .git.
@TCQian
I think this will cause an error as well : http://github.com/d/a/b.git
Issue here isn't whether it ends with .git or not. Issue here is that tokeniser backslash will collide with url backslash. One workaround is to convert all of your command backslashes to frontslashes so that your addressbook can handle URLs without throwing errors.
It will be a bug of the highest severity if the tester catches it during the actual PE so you might want to look into it instead of closing the issue
193 (other comment)
Got it, thanks! Misinterpretation on my part, my apologies. Should be fine in that case 👍🏻
@lyeyixian
(113 comments)1 (commented on others PR)
Is it better to change this sentence to this?
"This project is based on the AddressBook-Level3 project created by the SE-EDU initiative."
As I feel like this flows better for me.
2 (commented on others PR)
Should this be linked to our repo's actions instead of the se-edu's one?
3 (commented on others PR)
no i mean the link not the badges. Now you are linking it to se-edu/addressbook-level3
4 (commented on others PR)
https://github.com/AY2021S1-CS2103-T14-3/tp/actions
this
5 (commented on others PR)
I think this line can put?
6 (commented on others PR)
I'm a bit not sure about this. Is it we can edit the travel plan at top directory also?
7 (commented on others PR)
dk hahaha
8 (commented on others PR)
@jiaweiteo @jeannetoh99 @timjkong
9 (commented on others PR)
According to @jiaweiteo , only the name should be considered as identity fields, while passport and phone should be data fields
10 (commented on others PR)
i think its better to put getTPOList()
11 (commented on others PR)
same for all the other TPO
12 (commented on others PR)
Is it better to have ScrollPane here? As we might have lots of TravelPlan and the Pane cant show everything
13 (commented on others PR)
Same as above. Maybe we put ScrollPane here
14 (commented on others PR)
JavaDoc errors
15 (commented on others PR)
JavaDoc errors
16 (commented on others PR)
We just need one method from Directory only? What about AccommodationList all that?
17 (commented on others PR)
Is there a better way of doing this? Like not typecasting but instead use the polymorphism.
18 (commented on others PR)
Why did you use assert here btw? Cos I think assert won't be run if we didnt specify it and the user probably wont run our program with assertion on. Maybe check it using if block and throw an exception? Same for all the methods below
19 (commented on others PR)
JavaDoc error
20 (commented on others PR)
same for line 57
21 (commented on others PR)
JavaDoc error
22 (commented on others PR)
thats why before i put 2 boolean method to check is which one
23 (commented on others PR)
nah typecasting is not considered polymorphism. We have to do directory.the method straight away i think. But it might be not worth the time to think about that. So maybe can leave it like this first ba
24 (commented on others PR)
oh okok then Logic is the one that have to make sure the directory is the correct instance?
25 (commented on others PR)
Why this one change back to TravelPlan? It's not used in other place meh? like Activity all that
26 (commented on others PR)
Oh I see what you did there. Works but I feel like it is not following some OOP shit or smth. But I think we come back to this later ba.
27 (commented on others PR)
I think the cost is just numbers? iirc
28 (commented on others PR)
Do you think we want to make the arrangements of all these fields consistent throughout our whole repo. Cos I feel its a little bit messy right now, everybody's arrangement is different.
@jiaweiteo @jeannetoh99 @underthehai @timjkong
29 (commented on others PR)
Same as above
30 (commented on others PR)
Is it travel plan list?
31 (commented on others PR)
I think it is suppose to be start date and end date?
32 (commented on others PR)
We use -1 to indicate no changes, but here we throw an exception? Would it have any problem?
33 (commented on others PR)
There is an extra whitespace in front of Activities?
34 (commented on others PR)
Here also. Or is it deleted whitespace haha i not sure
35 (commented on others PR)
Why the whitespace!!!
36 (commented on others PR)
The Ui didn't show the index actually, do you think we wanna show it? Then, need add into Ui part
37 (commented on others PR)
!?
38 (commented on others PR)
But why previous one no problem one ah? hmmm
39 (commented on others PR)
JavaDoc issue: "address book"
40 (commented on others PR)
I think this can rename to SHOW_ALL? I remember I changed it to SHOW_ALL don't know when get changed back haha
41 (commented on others PR)
NameCard should be under TravelPlannerPanel
42 (commented on others PR)
These 3 should be TravelPlanObjectListPanel
43 (commented on others PR)
There is a space in front of -tra... ? Cos I tot just "-travelplan 2"
44 (commented on others PR)
No, its not. You go check the implementations in Ui component
45 (commented on others PR)
oo okok cos i think i didnt put space in front of mine
46 (commented on others PR)
Actually, I might try to change it so that there isn't so much magic number here and there, using the ArgumentTokenizer, cos you guys didn't utilise it i think?
47 (commented on others PR)
Hmmm is this image name correct?
48 (commented on others PR)
This fonts can add in CSS? But its fine, just asking
49 (commented on others PR)
Do we allow them to type this command when in wishlist? Or do we output error message?
50 (commented on others PR)
I think you miss out the (L) / (G)?
51 (commented on others PR)
What does this line suppose to do?
52 (commented on others PR)
Why do you need logic here tho? Doesn't seem to be used anywhere in the changes in this class?
53 (commented on others PR)
Now no need do typecasting already. You can add this getTotalCost() method into Directory class.
54 (commented on others PR)
But still need to check isTravelPlan() to setText lah
55 (commented on others PR)
Is calling the update() here suitable?
56 (commented on others PR)
I think the travelPlanPanel.update() can be called here instead? So, no need to pass into TravelPlanObjectListPanel
57 (commented on others PR)
I think this method is not needed? Cos in Storage i also need this so i called getName().name
58 (commented on others PR)
Same for this. I just call getImportance().value
59 (commented on others PR)
or do you think we should do this instead?
60 (commented on others PR)
magic number here
61 (commented on others PR)
Or nvm i can change it when i do defensive for sort command. or you want to help me change also can hehe
62 (commented on others PR)
I think the error message still need to be refined abit.
63 (commented on others PR)
OK i think that is considered my part haha
64 (commented on others PR)
Is this used anywhere? Same for all the other tpo ones.
65 (commented on others PR)
Should the cost and date be lowercase? maybe others will misinterpret it as uppercase and type that instead
66 (commented on others PR)
Why do you need to sort both actually? I think sorting the internal one is sufficient. the unmodifiable observable one will update itself i think? i not sure
67 (commented on others PR)
I think the internal list should not be accessed. So, ermm i think add a sort method in AccommodationList maybe? or both AccommodationList and UniqueAccommodationList
68 (commented on others PR)
Same as above.
69 (commented on others PR)
Same no need typecast alr
70 (commented on others PR)
So this should not be able to access
71 (commented on others PR)
This one i not sure tho. I'm thinking to sync everything to use AccommodationList XXXList instead of UniqueXXXList
72 (commented on others PR)
oh... hmmm
73 (commented on others PR)
Can you make the wish list "wishlist" instead? I think we use wishlist.
74 (commented on others PR)
CopyCommand perhaps?
75 (commented on others PR)
Do you think its better to use guard clause here instead of if else statement?
76 (commented on others PR)
Same as above
77 (commented on others PR)
I think its better to name it as ....START_AND_END_DATE?
78 (commented on others PR)
Perhaps you can use the MESSAGE_INVALID_START_AND_END_DATE here?
79 (commented on others PR)
copy and move command
80 (commented on others PR)
"UserGuide"
81 (commented on others PR)
"A pop-up window will provide the link to access Wanderlust UserGuide for help"
82 (commented on others PR)
Why is there a huge whitespace here tho?
83 (commented on others PR)
This doesn't include mobile isn't it?
84 (commented on others PR)
Does this work? I think it cannot be null tho. "new TravelPlanner()" should work
85 (commented on others PR)
I think the date can be abstracted out, just pass the TravelPlan to isValidActivityDate() then in Model, you get the start and end date there.
86 (commented on others PR)
Same as above.
87 (commented on others PR)
Can this be put in isValidStartAndEndDate()? So, everything is checked in one method?
88 (commented on others PR)
Same as above. Or is it becos of the error message?
89 (commented on others PR)
I think the JavaDoc for this can put like, see isValidActivityDate() something like that? I not sure tho.
90 (commented on others PR)
Think this will be considered as duplicate?
91 (commented on others PR)
I think it's bad "SLAP" here. Perhaps can just do startDate.isBefore(WanderlustDate)
92 (commented on others PR)
Same for all date checking logic in this class
93 (commented on others PR)
All these getValue() haha, kind of wanna abstract all of them out XD, but see you want or not. I think its ok? Like add a method in WanderlustDate compareTo() so can just call startDate.compareTo() instead of this, need getValue() everytime.
94 (commented on others PR)
I'm just concern about if this will be considered duplicates code. I think it's OK ba.
95 (commented on others PR)
The passport and mobile field needs to be changed, to reflect the new Regex.
Passport: [STFG] + 7 numbers + [A-Z]
Mobile: [89] + 7 numbers
96 (commented on others PR)
Is it within travel plan instead?
97 (commented on others PR)
Mobile and Passport parameters need update
98 (commented on others PR)
Actually now it's case-sensitive XD
99 (commented on others PR)
Same as above.
100 (commented on others PR)
The dates need to change according to Jia Wei's new implementations.
101 (commented on others PR)
Same as above.
102 (commented on others PR)
Passport number need to change to [STFG] + 7 numbers + [A-Z]
103 (commented on others PR)
Date issue
104 (commented on others PR)
Nice! Maybe can notify others about this changes also?
105 (commented on others PR)
@timjkong @underthehai
106 (commented on others PR)
This one I made quite some changes. So when you resolving conflict can just use mine.
107 (commented on others PR)
Same for this part.
108 (commented on others PR)
I renamed this method, so update when pulled from upstream.
109 (commented on others PR)
Nice way to work around the magic numbers! @timjkong @underthehai
110 (commented on others PR)
Maybe consider using a stub?
111 (commented on others PR)
I wonder why you didn't use the method in CommandTestUtil (assertCommandSuccess(), etc.)?
112 (commented on others PR)
Or is it suppose to use original model?
113 (commented on others PR)
This method name I changed to assertEditParseSuccess(), wait I merge then you update
114 (commented on own PR)
Need, but i thought haishan is also doing this so I left out the edit and show features for her, or I should just do them?
115 (commented on own PR)
Hmmm I don't know.
@jeannetoh99 @underthehai @timjkong
116 (commented on own PR)
Maybe can add the person to be deleted is not found?
You mean the person is not found in the travel plan or you mean the person is missing in the input command?
117 (commented on own PR)
I will add the case for target not found, but the error message one cause I wanted to make them generic so don't need to be too specific. The implementer of that feature can do whatever they want to the error message. What do you think?
118 (commented on own PR)
@underthehai
119 (commented on own PR)
I updated it. But I don't know if it works, can help me check?
120 (commented on own PR)
oh cos this method is I cincai add one last time. No JavaDoc all that, need to redo
121 (commented on own PR)
Actually I changed all to without all the Wanderlust in the front. Tsk didn't read my telegram message. YOU SHOULD CHANGED!!! NOT ME!!! HAHAHAHA
122 (commented on own PR)
They are included in the etc XD or else too long lah, or you think I should change the commandbox all that to travelplan thing?
123 (commented on own PR)
I make it so its like
"sort -activity " will show the error message specific to activity
"sort -accommodation" will show error message specific to accommodation etc.
do you think its ok?
124 (commented on own PR)
huh? It's not [STFG] ?
125 (other comment)
My CI will pass after merging @jeannetoh99 TravelPlan class
126 (other comment)
Don't merge first after commiting changes.
I need to think about all the ReadOnlyXXX classes, if they are needed
127 (other comment)
I think I'm done for now? Hopes everything works.
128 (other comment)
And do you think we need to make sure that the travel plan inside travelPlanner needs to be updated too?
129 (other comment)
I closed ah, I have added them in my side
130 (other comment)
I think the commit is messed up, cos I branch this from the branch where I updated the Design section. So, this PR includes both changes. RIP
@WeiJie96
(107 comments)1 (commented on others PR)
Perhaps it would be good if we insert our website here.
2 (commented on others PR)
Perhaps we could keep keep this so we can change it individually
3 (commented on others PR)
Perhaps we could keep keep this so we can change it in future
4 (commented on others PR)
Perhaps we could keep keep this so we can change it in future
5 (commented on others PR)
Perhaps we should keep the product name consistent, to Insurance4Insurance, I4I
6 (commented on others PR)
Perhaps we can add a "Coming soon." here
7 (commented on others PR)
Perhaps this could be "Adds a client to I4I."
8 (commented on others PR)
Perhaps this could be Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [o/NOTE] [t/TAG]…
9 (commented on others PR)
Perhaps this could be
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 o/This client is new.
10 (commented on others PR)
Perhaps this could be Lists the entire list of clients in I4I.
11 (commented on others PR)
For now, for v1.2, I think we would try to minimise the amount of fields to delete, so we would add in NOTE and keep the rest. However, this may change in v1.3/1.4, so we can update the UG then.
12 (commented on others PR)
For now, for v1.2, I think we would try to minimise the amount of fields to delete, so we would add in NOTE and keep the rest. However, this may change in v1.3/1.4, so we can update the UG then.
13 (commented on others PR)
We can add back the "Tip" for tag if you are okay with the above change.
14 (commented on others PR)
Perhaps we can format INDEX to INDEX
.
15 (commented on others PR)
Perhaps we can edit to Example: list
followed by delete 2
deletes the 2nd person in I4I.
16 (commented on others PR)
Perhaps we can add a Coming soon here
17 (commented on others PR)
If you are okay with above edits to add
, perhaps we can change to this:
Add | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [o/NOTE] [t/TAG]…
>br> e.g., add n/Betsy Crowe e/betsycrowe@example.com a/Newgate Prison p/1234567 o/This client is new. t/friend t/criminal
18 (commented on others PR)
Perhaps we can add in help
as well, since we are implementing in v1.2
Help | help
19 (commented on others PR)
Perhaps we can add this back, since we are implementing help
in v1.2
But we would need to update the image to https://ay2021s1-cs2103-t16-2.github.io/tp/UserGuide.html
20 (commented on others PR)
Perhaps we should change this to
21 (commented on others PR)
Would it be better if we have multiple tags and 1 note? i.e. the ... comes after tag instead
22 (commented on others PR)
Would it be better if we have multiple tags and 1 note? i.e. the ... comes after tag instead
23 (commented on others PR)
Perhaps this can be updatedNote?
24 (commented on others PR)
Perhaps the message could be "Notes can take any values, and it should not be blank"
25 (commented on others PR)
Perhaps this can be package seedu.address.model.person;
26 (commented on others PR)
Perhaps seedu.address.model.note.Note can be simplified to Note
27 (commented on others PR)
Perhaps we can return noteName
28 (commented on others PR)
Perhaps this could be " "?
29 (commented on others PR)
Perhaps we don't need to add an invalid tag here
30 (commented on others PR)
Perhaps we don't need to add an invalid tag here
31 (commented on others PR)
Perhaps we could add back the space here String ...
32 (commented on others PR)
Perhaps we should add back the space here?
33 (commented on others PR)
Perhaps this should be 8 spaces relative to line 22? But not sure why the original AB3 passed checkstyle
Similar concept for the rest of the lines in this file
34 (commented on others PR)
Alright got it
35 (commented on others PR)
Perhaps we should remove the extra tab here
36 (commented on others PR)
Perhaps we should change to
"Priority values should only take L, M, H, U, l, m, h, u, low, medium, high, or undefined;
37 (commented on others PR)
Perhaps we dont need to check null here
38 (commented on others PR)
Perhaps we dont need to use equalsNullable here
39 (commented on others PR)
Perhaps we should require non null for priority
40 (commented on others PR)
Perhaps we should throw error if priority is null
41 (commented on others PR)
Perhaps we dont need to check for null
42 (commented on others PR)
Perhaps we dont need to check for null
43 (commented on others PR)
Perhaps we should add back the space here
44 (commented on others PR)
The ^$ might not be necessary, but I might be wrong
"[ulmhULMH]|undefined|high|medium|low" might work
45 (commented on others PR)
Perhaps we should add an assertion here
46 (commented on others PR)
Perhaps we should add in javadoc? Same for the rest of this class.
47 (commented on others PR)
Perhaps this should be in policy.exceptions?
48 (commented on others PR)
Should this be only takes into account of name?
49 (commented on others PR)
Perhaps we should rename this file/class to JsonSerializablePolicyList?
50 (commented on others PR)
Should this be I4I instead of AB3?
51 (commented on others PR)
What does the ?
represent?
52 (commented on others PR)
Perhaps we can update the command summary table?
53 (commented on others PR)
Oh I mean to update the add command with [l/PRIORITY]
54 (commented on others PR)
Perhaps this can be "You can add a new policy by using the addp command.";
55 (commented on others PR)
Can we add a new line here?
56 (commented on others PR)
It might be better for us to use HashMap instead of Hashtable as we do not need synchronisation
57 (commented on others PR)
If this were to change to hashmap, we can update the javadocs (and other corresponding javadocs). Perhaps we can refer to it as the "Policy List" instead of hashtable/hashmap.
58 (commented on others PR)
Perhaps we can have return policies.containsKey(toCheck.getPolicyName().value);
59 (commented on others PR)
Perhaps the method name could be getSamplePolicies()
60 (commented on others PR)
Perhaps the assertion can print "Policy should not be null"
Perhaps we should check policy.getPolicyName() != null and policy.getPolicyDescription() != null as well
and print "Policy name should not be null" and "Policy description should not be null"
61 (commented on others PR)
Perhaps we should test for adding policy as well
62 (commented on others PR)
Perhaps we should test for different policyList -> returns false
63 (commented on others PR)
Perhaps we should have invalidPolicy test, with both invalid name and description
64 (commented on others PR)
Perhaps we should have Policy here, as we are testing one field at a time. Same for rest of optional fields missing
65 (commented on others PR)
Perhaps we should test for missing Policy name prefix
66 (commented on others PR)
Perhaps we should have policy here
67 (commented on others PR)
Perhaps we should test for multiple policy names - last policy name accepted
68 (commented on others PR)
Perhaps we should have policy here, same for rest of multiple fields
69 (commented on others PR)
Perhaps we can refer to add command parser for some tests
invalid value: failure
all fields present success => multiple policy names / policy description - last policy name / policy description accepted
70 (commented on others PR)
Perhaps the method name should have throwsCommandException behind
71 (commented on others PR)
Perhaps we should have .equals() test
72 (commented on others PR)
Perhaps we should use HashMap here, as previously commented in PolicyList.java
73 (commented on others PR)
Perhaps we should have standardised names for the tests. Same for the rest of the tests in this file
74 (commented on others PR)
Perhaps we should test for
getPolicy(): E.g. null input, null output (key not present), key present
equals()
75 (commented on others PR)
Perhaps we should have a positive test
76 (commented on others PR)
Perhaps we should test for null and Duplicate
77 (commented on others PR)
Perhaps we should test for null
78 (commented on others PR)
Perhaps we should requireNonNull
Same for the other contains()
79 (commented on others PR)
Is createNewPolicyList() being used? If it is, we can add it into the PolicyListTest.java
80 (commented on others PR)
Perhaps we should use Policy
to format the name, instead of Policy
Same for other objects, classes, variables in this DG e.g. Person
, PolicyName
81 (commented on others PR)
Implementing*
82 (commented on others PR)
If we want to use String as an object, I think it would be good to format it as String
Otherwise we can leave it as string (lower case 's')
83 (commented on others PR)
Perhaps we can say ...checking for validity of each of the individual object's input
84 (commented on others PR)
Remember to put the multiplicity in the class diagram (0..1
), otherwise it might be safer to remove the reference
85 (commented on others PR)
AddPolicyCommandParser
86 (commented on others PR)
AddPolicyCommandParser
87 (commented on others PR)
Maybe we can add a cross under the AddPolicyCommand
88 (commented on others PR)
Maybe we can add a note to say that:
>div markdown="span" class="alert alert-info">ℹ️ Note: The lifeline for XXXCommandParser
and XXXCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
>/div>
89 (commented on others PR)
I think the AddPolicyCommandParser is the one that is creating the Policy (object p) first, then AddPolicyCommand is created with the object p as its parameter. Both are created in the parser
90 (commented on others PR)
Perhaps we can update the return 'a' to 'p'
91 (commented on others PR)
I'm not too sure if checking hasPolicy is low level wrt this diagram, but if you decide to keep it, then I think we can remove the return false
92 (commented on others PR)
Maybe you can remove the CommandResult if you think it clutters the diagram
93 (commented on others PR)
I think we can either say ClearPolicyCommand
or 'the command used to clear the policy list'
94 (commented on others PR)
Hmm is should be similar in terms of parsing and Command creation, but is it similar in the Model
part?
95 (commented on others PR)
I'm not sure about the efficiency and speed, but if you checked it then it's okay
96 (commented on others PR)
Hmm do we have this?
97 (commented on others PR)
Perhaps we can say User clears the list of existing policies. Or we can add what is the policy list in the glossary too
98 (commented on others PR)
Perhaps we can say User chooses to clear the policy list
99 (commented on others PR)
Remember to add in clear policies in the user stories as well
100 (commented on others PR)
Remember to add in the test cases as well (maybe in a separate PR)
101 (commented on others PR)
In testing.md, perhaps we can update the package names e.g. seedu.address.commons.StringUtilTest
102 (commented on others PR)
Perhaps we can say ...clear the entire...
103 (commented on others PR)
Perhaps we can say "does not" instead of forgets
104 (commented on others PR)
Perhaps we can say System adds a new client instead of "saves"
I'm also not sure if this is a valid/relevant 1d1 as in the positive use case MSS, we do not mention the System adding/saving clients. I think we can either
Include add/save client in the use case MSS (but that means changing other use cases as well)
Adjust 1d1 so it sounds consistent as the others
Not have this extension as resolving might be hard and it's on a different level than the use case
105 (commented on others PR)
Ps then we should say "clear the active client list and archived client list."
106 (commented on others PR)
Maybe you would want to add in this from AB3
The UI
component,
Executes user commands using the Logic
component.
Listens for changes to Model
data so that the UI
can be updated with the modified data.
107 (commented on others PR)
Perhaps this should be a dependency (dashed line) instead of association
108 (commented on own PR)
If I didn't understand your question wrongly, the withoutNote() is meant to add in a null
for BENSON
, who originally has a note
109 (commented on own PR)
Hmm I don't think so, as long as we are consistent with the hashing
And I made isArchive come before priority in the constructor (by accident)
110 (commented on own PR)
The predicate is meant for filtering the field in the Person, just like how we placed the Predicate for filtering Name in the same folder
111 (commented on own PR)
It's a really minor thing, on line 6 it {@link Command} in the Javadoc, so if we dont import it, it wont display properly
112 (commented on own PR)
I followed the PE instructions for this one; they specifically told us not to double click
113 (commented on own PR)
Same for here, I followed the PE instructions
114 (commented on own PR)
Done, can check now
115 (other comment)
Reopening this issue as PR was accidentally merged
116 (other comment)
Note that this PR was merged by accident, reopening issue and creating another (similar) PR
117 (other comment)
Resolves #6
118 (other comment)
Ensure that source should be >= 50 characters.
119 (other comment)
Update URL and image in UG
120 (other comment)
address
phone
121 (other comment)
Duplicate issue
122 (other comment)
Closed as all issues in epic are closed
123 (other comment)
Not a bug
124 (other comment)
Not a bug
125 (other comment)
Duplicate as #176
126 (other comment)
Duplicate with #154, #155, #156
127 (other comment)
Duplicate with #178
128 (other comment)
Duplicate with #161
129 (other comment)
Duplicate with #161
130 (other comment)
In the example in https://ay2021s1-cs2103-t16-2.github.io/tp/UserGuide.html#unarchiving-an-active-client--unarchive, we did mention this already
131 (other comment)
Closing since
We allow the users (insurance agents) to also keep track of potential clients, so they may not have existing policies yet
132 (other comment)
Duplicate as #174
133 (other comment)
Not a serious feature flaw, but good to have
134 (other comment)
Our restriction is very simple; just have not more than 50 characters. We wanted to have the flexibility of a user adding something like friend of friend of teacher
, or met in 123 bar
, so we lifted restrictions on space/number/special characters as well. They may not "make sense" sometimes like the example given, but we leave that decision to the user.
135 (other comment)
Agree that this might be confusing, but we defined what makes a client "unique".
2 clients are unique if they have
different names
same name, different phone
same name, different address
As for policies, priorities, client sources, these may be the same across different clients, so we did not use them as uniqueness identifiers.
136 (other comment)
The archive is meant as a way to store clients which may not be currently relevant to the insurance agent. For example, clients which are no longer managed by the agent. The agent may decide not to delete the client straight away, in case they happen to start interacting again, so they can store them in the archive.
The archive has a separate view from the active list, so that the agent would not be distracted by archived clients. The agent has the option to switch to view the archive if needed. The default view upon starting up the app is the active list.
The agent can unarchive an archived client, for which case the client would become active.
137 (other comment)
From a user's point of view, this would be good for tracking the order in which the clients were added to the client list. Whenever we archive and unarchive back the same client, his relative position remains the same.
@ruixuantan
(107 comments)1 (commented on others PR)
I like your specifying: STUDENT_INDEX
and CLASS_INDEX
2 (commented on others PR)
Perhaps it is clearer to define 'index' as follows?
*`STUDENT_INDEX` refers to the index number shown in the displayed student list.
*`CLASS_INDEX` refers to the index number shown in the displayed class list.
3 (commented on others PR)
Minor grammar issue, should it be is
and not are
?
* 5a. At least one of the given indexes is invalid.
4 (commented on others PR)
Same as issue above.
* 5a. At least one of the given indexes is invalid.
5 (commented on others PR)
Should we include test cases for UUID? Such as public void toModelType_nullUuid_throwsIllegalValueException()
.
6 (commented on others PR)
Apologies, mistake on my part for not typing correctly. Should be
public void toModelType_nullUuid_throwsIllegalValueException() {
Otherwise, looks good to merge.
7 (commented on others PR)
Should the tense follow the DeleteStudentCommand
class instead?
public static final String MESSAGE_DELETE_MODULE_CLASS_SUCCESS = "Deleted Class: %1$s";
8 (commented on others PR)
Nice abstraction.
9 (commented on others PR)
Should the filtered list be specified?
* Updates {@code model}'s {@code filteredStudents} list to show only the student at the given {@code targetIndex} in the
10 (commented on others PR)
Same as above.
* Updates {@code model}'s {@code filteredModuleClasses} list to show only the ModuleClass at the given {@code targetIndex} in the
11 (commented on others PR)
Same as above.
* Updates {@code model}'s {@code filteredModuleClasses} list to show no module classes.
12 (commented on others PR)
Perhaps naming studentIds
as studentUuids
would make the code clearer?
13 (commented on others PR)
Should there be at least one class entry here? We can follow invalidClassTutorsPet.json
, which has a valid student entry.
14 (commented on others PR)
Should you insert a INVALID_STUDENT_IDS
list (and test case) also? Perhaps you can use a string that has less than 4 hyphens
15 (commented on others PR)
Nice handling of null UUIDs. However, would it be better if a try-catch block is used on UUID.fromString(uuid)
instead? Then, any kinds of wrong UUIDs can be handled.
16 (commented on others PR)
I think you missed out on this:
public static final String MESSAGE_DUPLICATE_MODULE_CLASS = "Class list contains duplicate class(es).";
17 (commented on others PR)
I think you missed out on the TODO comment. Perhaps instead of importing these STUDENT_UUID_X
in test cases, we can call ALICE.getUuid()
from TypicalStudent
class instead.
18 (commented on others PR)
Should this for loop be placed in another method for proper SRP? The for loop above that iterates through jsonAdaptedStudent
can be similarly placed in another method. Then, this toModelType()
method will call these two for loop methods.
19 (commented on others PR)
To add on, according to Java's UUID API, UUID.fromString()
throws IllegalArgumentException
. Perhaps you can use this alongside with your null guard clause.
20 (commented on others PR)
I notice this try-catch block appearing in other parts of the PR. I think the proper way would be to write our own interface for UUID. But, for now, I think it is not needed.
21 (commented on others PR)
Should you indent this line?
<fx:root minHeight="600" minWidth="740" onCloseRequest="#handleExit" title="Tutor's Pet" type="javafx.stage.Stage"
xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
22 (commented on others PR)
I noticed that these 3 lines of code are repeated in above test cases. Perhaps can consider abstracting these out into a private method?
23 (commented on others PR)
Should this be:
ModuleClass specifiedClass = showStudentsInModuleClassAtIndex(expectedModel, INDEX_FIRST_ITEM);
24 (commented on others PR)
Should this be in the same 'format' as above?
assertCommandSuccess(new ClearModuleClassCommand(),
model, ClearModuleClassCommand.MESSAGE_SUCCESS, expectedModel);
25 (commented on others PR)
Would it be better to test against the moduleClasses directly? Since we are adding (and removing) them along with their studentUuids.
assertFalse(modelManager.hasModuleClass(CS2103T_TUTORIAL));
assertFalse(modelManager.hasModuleClass(CS2100_LAB));
26 (commented on others PR)
Similar to above.
assertFalse(tutorsPet.hasModuleClass(CS2103T_TUTORIAL));
assertFalse(tutorsPet.hasModuleClass(CS2100_LAB));
27 (commented on others PR)
Perhaps you can convert the for loop in ViewHistoryCommand
into a method residing in StringUtil
class.
This is to avoid the explicit construction of expectedMessage
. For completeness, the new StringUtil
method also needs to be unit tested.
28 (commented on others PR)
Should you move the 1 and 50 to static constants?
29 (commented on others PR)
Perhaps naming the variables as they are is good enough?
public static final String VALID_TIME_1400 = "14:00";
public static final String VALID_TIME_1600 = "16:00";
public static final Day VALID_DAY_WED = Day.WEDNESDAY;
public static final int VALID_NUMBER_OF_OCCURRENCES = 7;
public static final String VALID_VENUE = "COM1-B111";
30 (commented on others PR)
Should you also test the edge cases of 0, 50, and 51?
31 (commented on others PR)
Perhaps you can consider renaming WED_2_TO_4
to LESSON_WED_2_TO_4
, so as to avoid confusing this constant as a time object.
32 (commented on others PR)
Just noticed, not sure if 'integer' is considered a technical term.
33 (commented on others PR)
Nice check.
34 (commented on others PR)
I don't really quite get the purpose of the cache.
35 (commented on others PR)
Understood the cache. Logger lgtm.
36 (commented on others PR)
I think should be Class'
.
public static final String MISSING_FIELD_MESSAGE_FORMAT = "Class' %s field is missing!";
public static final String MESSAGE_INVALID_STUDENTS_IN_LESSON = "Invalid student(s) found in lesson(s).";
public static final String INVALID_FIELD_MESSAGE_FORMAT = "Class' %s field is invalid!";
37 (commented on others PR)
if (!studentUuids.contains(studentUuid)) {
throw new IllegalValueException(MESSAGE_INVALID_STUDENTS_IN_LESSON);
38 (commented on others PR)
Just throwing out this alternative: perhaps placing the Week
object here would be better instead of in the JsonAdaptedAttendanceRecord
class. So instead of having a List>JsonAdaptedAttendanceRecordList>
attribute, there can be a Map>Week, JsonAdaptedAttendanceRecord>
. Jackson supports Json serialisation of Map
s: https://www.baeldung.com/jackson-map.
Purpose is for symmetry between the Model classes. And I think it may help in reducing lines of code and tests.
I think this current implementation is also suitable for purposes of this project.
39 (commented on others PR)
"_comment" : "StudentAttendance contains an invalid student attendance score",
40 (commented on others PR)
"_comment" : "StudentAttendance contains duplicate student UUID",
41 (commented on others PR)
"_comment" : "Records contains a null student UUID",
42 (commented on others PR)
"_comment" : "Records contains a null entry",
43 (commented on others PR)
"_comment" : "Record list contains duplicate AttendaceRecord",
44 (commented on others PR)
"_comment" : "null recordList",
45 (commented on others PR)
"_comment" : "recordList is empty",
46 (commented on others PR)
Would this be better?
+ "lesson on a specified week.\n"
+ "Note: All indexes and numbers must be positive integers.\n"
+ "Parameters: "
+ PREFIX_CLASS_INDEX + "CLASS_INDEX "
+ PREFIX_LESSON_INDEX + "LESSON_INDEX "
+ PREFIX_STUDENT_INDEX + "STUDENT_INDEX "
+ PREFIX_WEEK + "WEEK_NUMBER";
47 (commented on others PR)
Should this be moduleClassIndex
?
48 (commented on others PR)
Perhaps you can consider writing a test case for finding attendance in a filtered list?
49 (commented on others PR)
Should you insert an assertion for lessonToEditIndex
?
assert targetModuleClass != null;
assert lessonToEditIndex != null;
assert lessonToUpdate != null;
50 (commented on others PR)
Perhaps an assertion can be included here to check that the size of updatedAttendanceRecord
has decreased by 1.
51 (commented on others PR)
I think this can be simplified to
Lesson modifiedLesson = new LessonBuilder(lesson)
.withAttendanceRecordList(new AttendanceRecordList(updatedAttendanceRecords)).build();
52 (commented on others PR)
I am wondering if these lines, along with the private methods declared below, can be abstracted into a class that deals with the manipulation of the Lesson
and Attendance
related classes. These lines of code are repeated in other commands and in test cases as well.
53 (commented on others PR)
Should this be a requireAllNonNull
check, since it is a public method now?
requireAllNonNull(targetLesson, targetStudent, targetWeek, attendanceToAdd);
54 (commented on others PR)
Same as above. I notice that this occurs in the other refactored classes as well.
55 (commented on others PR)
Should you shorten the name of this method as well as the other refactored methods? Perhaps use addAttendanceToLesson
?
56 (commented on others PR)
Should the methods from LessonModificationUtil
and ModuleClassModificationUtil
be used here instead? Perhaps we can do it after unit tests for these 2 classes are completed.
57 (commented on others PR)
* @see tutorspet.model.Model#getTutorsPet()
58 (commented on others PR)
* Represents a storage for {@link tutorspet.model.UserPrefs}.
59 (commented on others PR)
* Saves the given {@link tutorspet.model.ReadOnlyUserPrefs} to the storage.
60 (commented on others PR)
* @see tutorspet.logic.Logic#execute(String)
61 (commented on others PR)
* @see tutorspet.logic.Logic#execute(String)
62 (commented on others PR)
I think it would be great to include a javadoc comment here to summarize the purpose of this class.
63 (commented on others PR)
Same as the above comment on javadocs.
64 (commented on others PR)
Should you put these 2 variables as static constants or under a @BeforeEach
method? They are used commonly in the test cases.
65 (commented on others PR)
Same static constant abstraction comment as above.
66 (commented on others PR)
Should you abstract these 2 lines out into a private method? These 2 lines are repeated in the add and edit methods.
67 (commented on others PR)
For statements such as these, would it be better to put the String.format
method on the next line?
assertParseFailure(parser, " "
+ PREFIX_LESSON_INDEX + "1" + " "
+ PREFIX_STUDENT_INDEX + "1" + " "
+ PREFIX_WEEK + "1",
String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_USAGE));
68 (commented on others PR)
Same as above.
69 (commented on others PR)
Similar to the above comment, would it be better to format the statement as follows?
private static final String INPUT_PREAMBLE = " "
+ PREFIX_CLASS_INDEX + VALID_MODULE_CLASS_INDEX_ONE.getOneBased() + " "
+ PREFIX_LESSON_INDEX + VALID_LESSON_INDEX_TWO.getOneBased();
70 (commented on others PR)
Nice catch!
71 (commented on others PR)
I think it will be good to add a unit test that tests this method directly.
72 (commented on others PR)
Should this be h3 size instead?
### Display Statistics Feature
73 (commented on others PR)
I think this should be labelled 1 throughout?
1. `Logic` uses the `TutorsPetParser` class to parse the user command.
1. A new instance of a `StatisticsCommand` object would be created by the `StatisticsCommandParser` and returns to
`TutorsPetParser`.
1. `TutorsPetParser` encapsulates the `StatisticsCommand` object as a `Command` object which is executed by
the `LogicManager`.
1. The command execution calls static methods from the `ModuleClassUtil` and `LessonUtil` classes.
1. The result of the command execution is encapsulated as a `CommandResult` object which is passed back to the `Ui`.
74 (commented on others PR)
* **Alternative 2 (current choice):** Extract the methods out to another class
75 (commented on others PR)
* Pros: Does not violate the law of demeter. Increases cohesion and thus increases maintainability.
76 (commented on others PR)
The Undo/Redo mechanism is designed around maintaining a history of `TutorsPet` states, and restoring a particular state when the user triggers an undo or redo command.
77 (commented on others PR)
Perhaps consider reordering these statements or shifting the TutorsPetState diagram lower? So as to establish a clearer link to the diagram.
78 (commented on others PR)
Should 'Alternative' be renamed as 'Choices'?
79 (commented on others PR)
* Pros: Will use less memory (e.g. for `delete`, just save the student being deleted).
80 (commented on others PR)
Would it be better to shift this diagram to around line 278? The explanation is rather dense there.
81 (commented on others PR)
Sure!
82 (commented on others PR)
Should this method return a double instead to avoid rounding off errors?
83 (commented on others PR)
totalParticipationScore += getParticipationScoreFromLesson(lesson, targetStudent);
84 (commented on others PR)
Same consideration as above, to change the return type to a double.
85 (commented on others PR)
Would it be better to indicate 'weeks'? So index 4 will be name of the lesson and index 5 will be the string of weeks not attended.
+ "%4$s, Weeks: %5$s";
86 (commented on others PR)
Would it be better to return List>Integer>
or int[]
here, where each element of the list/array is the week number the student is absent? This will reduce the responsibility of this method and make testing easier. The method to convert this list to a string can be shifted to StatisticsCommand
and be made private.
87 (commented on others PR)
Same consideration as above to change the return type to a List or Array.
88 (commented on others PR)
Can!
89 (commented on others PR)
Should you move this into a private method in this class?
90 (commented on others PR)
I think you missed out on the casting. Might have to tweak some of the test cases also.
return (double) totalScore / numOfWeeksParticipated;
91 (commented on others PR)
For example:
92 (commented on others PR)
This glossary provides definitions for special terms used in this guide.
93 (commented on others PR)
Would it be clearer write like this?
* `Lesson(s) not attended` displays all lessons not attended by the student. This means that future lessons
are also displayed.
94 (commented on others PR)
* Pros:
* Does not violate the law of demeter. Increases cohesion and thus increase maintainability and testability.
* Cons:
* Requires more wrapper methods to carry information.
* More effort to implement.
95 (commented on others PR)
* Pros:
* Easy, straightforward to implement.
* Cons:
* Violates the law of demeter to a large extent.
96 (commented on others PR)
Not sure if this class diagram is necessary, since the Implementation section has similar diagrams. Perhaps can just link to those?
97 (commented on others PR)
I don't think there is a need to test this class. It is not necessary to enforce that the pre-defined colours map to a specific Hex Value.
98 (commented on others PR)
the immutability of `Lesson`.
99 (commented on others PR)
1. Prerequisites: List all classes and students using the `list` command. Uses default tutor's pet data.
100 (commented on others PR)
(Changed addressbook address entries to students, \t to \tag, Changed tag description, Removed AB3 address,
101 (commented on others PR)
Should you put the null checks of the tags in the for loop instead?
102 (commented on others PR)
* Added use cases `UC10` and `UC15`.
103 (commented on others PR)
Will it be better to standardise to sentence case instead. If not, I think need to change all the subheaders to title case.
104 (commented on others PR)
* Store `Lesson` objects directly in `ModuleClass`.
105 (commented on others PR)
**Command:** The text typed in by the user as an instruction for Tutor's Pet.
106 (commented on others PR)
**Case-insensitive:** The treatment of uppercase and lowercase letters in the same way.
107 (commented on others PR)
**Tag:** A word or phrase that labels a student.
108 (commented on own PR)
Yup
109 (commented on own PR)
@junlong4321 yup, that is right.
@dextertanyj agreed, will remove a student not in any classes.
110 (commented on own PR)
Agreed. I was not so sure what exactly is to go into the Logic and Model components. That's why I switched to int
.
111 (commented on own PR)
Have included similar tests for JsonAdaptedModuleClassTest
and JsonAdaptedStudentTest
.
112 (commented on own PR)
I think I will stick with the space, because it follows the comma then space convention.
For example: new A(a, b, c)
. So it feels more natural to have the space after colon.
113 (commented on own PR)
Agreed. But I cannot do it for AddLessonCommand
as there is no list to 'compare' to.
114 (commented on own PR)
Changed to spaces before and after colons
115 (commented on own PR)
I think I will leave it like that for now, because I want to show Attendance
. Will clarify with Prof Damith or Clarence.
116 (commented on own PR)
Screenshot just the dropdown menu of the theme button?
@LeeMingDe
(103 comments)1 (commented on others PR)
Yup, we should standardize comments. I think we can just follow the style you suggested. Everyone okay? @raymondge @itssodium @chiamyunqing
2 (commented on others PR)
is it be better to use comment.trim().isEmpty() instead of comparing it to null?
3 (commented on others PR)
i think you can use the TODO function so its easier to check what you have to do next time
eg.
``
//TODO: your todo item here
``
4 (commented on others PR)
i'm not very sure, does the java doc require the parameter and the return value? eg.
/**
* Returns true if a given string is a valid age.
*
* @param test....
* @return boolean.....
**/
5 (commented on others PR)
same for the java docs here!
6 (commented on others PR)
okay can!
7 (commented on others PR)
is it better if we do addpatient
instead of addPatient
? just asking out of curiousity, no need to change if you think its fine
8 (commented on others PR)
i think this should be addPatient
instead of add
?
9 (commented on others PR)
do you think we should add in details like the temp must be 1dp or that the age must be in the range from 0-120?
10 (commented on others PR)
hmm, why do you need this variable? Essentially, the numofRoomsInString
is equal to Integer.toString(numOfRooms)
. so maybe you can just use that instead of declaring another variable?
11 (commented on others PR)
so for this, you can just use Integer.toString(numOfRooms)
12 (commented on others PR)
maybe you want to change the name to SearchPatientDescriptor? can rightclick, refactor
-> rename
13 (commented on others PR)
not sure if this will fail the checkstyle because of multiple empty lines
14 (commented on others PR)
i think you can change the Person's
to Patient's
15 (commented on others PR)
i think that this method might be a bit long, so maybe you want to extract out some lines of code into a new method? Its just a suggestion, it's fine without it also
16 (commented on others PR)
I think the one that was removed is correct? Might need to check
17 (commented on others PR)
is there a reason behind initializing the numerOfRooms
to -1?
18 (commented on others PR)
perhaps it might be good to catch the exception for negative integers inputted by the user?
19 (commented on others PR)
Sorry, I don't really understand the need for a PriorityQueue in this class, can you explain the rationale for ti?
20 (commented on others PR)
can i know whats the purpose of this constructor? because its empty but yet it takes in an integer parameter
21 (commented on others PR)
i think i saw the method below this comment in the RoomBook class, so there might not be a need for this method here?
22 (commented on others PR)
same as the previous comment, this method might be a duplicate?
23 (commented on others PR)
since you are creating a new room every time the user adds a room, i think the previous data in the room might all be wiped?
24 (commented on others PR)
this might be a duplicate method too?
25 (commented on others PR)
it's only null for now right?
26 (commented on others PR)
i think this might override the data of the previous rooms too?
27 (commented on others PR)
i think you might want to change your naming for the priority queue and not use rooms
? i got quite confused trying to read it
28 (commented on others PR)
since you are only counting the number of occupied rooms directly, will there be a problem with this? eg.
i have 3 rooms
room 1
room 2
room 3
So lets say room 1
and room 3
are occupied. so numberOfRoomsOccupied = 2
correct? But next time if you load the RoomBook
, it will give me room 1
and room 2
occupied since the numberOfRoomsOccupied
is 2?
29 (commented on others PR)
is the name of the file lol
?
30 (commented on others PR)
this indentation might be abit off?
31 (commented on others PR)
let's work with the naming together for the test cases next time!
32 (commented on others PR)
is there a purpose for this method?
33 (commented on others PR)
i think you can delete this method if it is not in use
34 (commented on others PR)
hmm, i dont really think there is a need to test if the priority queues are equal? or if you want to test, you can just do
int[] array1 = roombook1.toArray();
int[] array2 = roombook2.toArray();
Arrays.equal(array1, array2);
35 (commented on others PR)
i think better naming of the paths would be good? it's a little bit hard to understand/remember what the constructor of RoomOccupancyStorage is supposed to take in
36 (commented on others PR)
by accident? maybe a slip of the finger?
37 (commented on others PR)
hmm, but i think you can just chain the methods together? like .getRoomBook().getRooms()
etc
38 (commented on others PR)
hmm, i thought that this field not supposed to be here anymore?
39 (commented on others PR)
Hopefully we won't get merge conflict for this when we merge our UI hahaha
40 (commented on others PR)
thanks for helping me to change what i have missed!
41 (commented on others PR)
same here, thanks for catching this
42 (commented on others PR)
should we make it such that there cannot be patient with the same name?
43 (commented on others PR)
Is there a typo here? don't think we have UndoCommand and RedoCommand right? hahha
44 (commented on others PR)
if this part is not needed, then will it be better to just delete it?
45 (commented on others PR)
i think you can delete this line and subsequently, the convertPriorityQueue method
46 (commented on others PR)
can delete the method below. i dont think it's in use anymore. i only created it to bypass the need for an observablelist
47 (commented on others PR)
i'm not sure why it cannot be yyyyMd, is there a difference?
48 (commented on others PR)
i think he used it because it allows easier tracking of the tasks due date using DateTime instead of a string
49 (commented on others PR)
Very good use of ObservableList, this will help immensely in the integration into the UI!
50 (commented on others PR)
i think this should be null dateTime instead of email?
51 (commented on others PR)
i think this prefix is already used for periodOfStay in PatientCliSyntax.java, will it be affected?
52 (commented on others PR)
thanks for cleaning up my unused method from before! 👍
53 (commented on others PR)
i think its fine. It makes me wonder if I should convert my editroom prefixes to p/ instead of pn/ for patient name. hahahah
54 (commented on others PR)
Yup, adhering to abstraction principle is good, however i feel it might not be worth it to extract only 2 lines of code into a new method. maybe what wl can do is to perhaps give a name to the variable to make it clearer.
eg. String[] stringNames = searchPatientDescriptor.getStringName().split("\\s+"));
.
55 (commented on others PR)
same here, abstraction principle is good, however, it might not be worth it to extract them out into a new method
56 (commented on others PR)
yup! is there a reason why you are checking if the search result has only has one value? I'm referencing to the (patientNameList.size() == 1)
cuz your getListOutput(list)
method will just print out everything
57 (commented on others PR)
hmm, just curious ah, why dont want just String stringName = argMultimap.getPreamble().trim().toLowerCase()
? so eg. if you have searchpatient alex n/something
, your stringName
will be alex
.
58 (commented on others PR)
Also, what is the substring(2)
for ah? i think for very long but i still cant figure it out
59 (commented on others PR)
can consider Returns
instead of Return
? also, do we have to leave a line after line 70? i kind of remembered that it is in the coding convention but im not sure.
60 (commented on others PR)
might be good to have a java docs header before this!
61 (commented on others PR)
maybe you can use model.getUnmodifiableRoomList()
here? model.getUnmodifidableRoomList()
returns an ObservableList>Room> too. i discussed with yh last time about how the command
class shouldnt be interacting directly with the room class but rather through the model
class
62 (commented on others PR)
i changed the checkIfRoomPresent()
method to a static method because of the reason below. ideally, i feel that checkIfRoomPresent()
should be in RoomList.java
class. what do you think?
63 (commented on others PR)
should there be an empty line before this line of code in the java docs?
64 (commented on others PR)
should there be an empty line before this? also, there are some extra white spaces in line 23
65 (commented on others PR)
same for the empty line before this
66 (commented on others PR)
ah, i see i see, sorry!! hahaha
67 (commented on others PR)
do you want to consider removing this comment? is it needed?
68 (commented on others PR)
would be good to have a class header for java docs!
69 (commented on others PR)
you can consider renaming your test method to toModelType_returnsOccupiedRoom_success()
here.
70 (commented on others PR)
same here for the naming
71 (commented on others PR)
i think you can consider looking at the JsonAdaptedPersonTest
class for an example of what to test!
72 (commented on others PR)
hmm, why do you need this method? is it to get access to the ObservableList? If you are not planning to modify the elements in the ObservableList but planning to "look at" the elements in it, you can consider the asUnmodifiableObservableList() method in this class at line 84
73 (commented on others PR)
do you want to consider moving these few lines of code into the map function from line 55? you can just write a one liner val = trimmedDueAt
and i think it should do the trick?
74 (commented on others PR)
can consider val = trimmedDueAt
so that any whitespaces are removed
75 (commented on others PR)
let us know if you need help with writing json test cases! Although Json is unfamiliar to me too, i'm sure we can work something out
76 (commented on others PR)
consider adding a java docs header here
77 (commented on others PR)
consider adding a java docs header here. Looks good to me for the testcases!
78 (commented on others PR)
you might want to standardize the naming of methods, so maybe this method can be toModelType_sameModelType_success()
. same for subsequent methods below toModelType_sameModelType_throwsException()
, toModelType_sameModelType_failure()
79 (commented on others PR)
remember to remove println
statment here. you can consider adding a //TODO
before using println
statements, so you won't forget to remove them
80 (commented on others PR)
can remove instead of commenting if this is not going to be used in the future
81 (commented on others PR)
hmm for this right, why not just throw an exception in the method? why do you need to have a try-catch
block to catch the exception and throw the same exception? eg. public void setTask(Task target, Task editedTask) throws TaskNotFoundException {
Edit: Nevermind, i understood, its because its a void method
82 (commented on others PR)
would it be better to name the test parseCommand_editTask_failure()
or parseCommand_editTask_throwExceptions()
instead? Same for the tests at the bottom too!
83 (commented on others PR)
actually, do you need to wrap this part in a else statement?
84 (commented on others PR)
need fullstop here for java docs?
85 (commented on others PR)
full stop here too?
86 (commented on others PR)
i think you can unwrap from the else statement here too?
87 (commented on others PR)
i think you should be asserting if the roomNumber
is null
? Because if the roomNumber is >0 then it should be the user fault and not the system fault no?
88 (commented on others PR)
same here for what yq and i mentioned previously
89 (commented on others PR)
thanks for indenting!
90 (commented on others PR)
is this system println needed?
91 (commented on others PR)
will it be possible to add in java docs for these methods?
92 (commented on others PR)
i think there's already a method called setRoom()
93 (commented on others PR)
maybe can check if taskList.isEmpty();
94 (commented on others PR)
yup, i think it should be fine since you are doing unit testing to ensure that the function works
95 (commented on others PR)
if this is not needed, it can be removed?
96 (commented on others PR)
will this throw an Assertion exception
if the roomlist does not contain the room or is there a check to ensure that the roomlist contains the room before calling this method?
97 (commented on others PR)
is there a line separating the description and the @param
in the java docs?
98 (commented on others PR)
am not sure if there needs to be a line before @return
for java docs
99 (commented on others PR)
i think it would still be good to log the process though
100 (commented on others PR)
maybe you want to use a private static final int MAX_PHONE_NUMBER_LENGTH = 20
instead of using magic constant?
101 (commented on others PR)
yup, but what i'm thinking about is that it would be good to add a logger to keep track of the changes in the ui
102 (commented on others PR)
i think this should be {@code ReadOnlyList>Patient>}
instead of {@code ReadOnlyList>Room>}
?
103 (commented on others PR)
i think this should be {@code ReadOnlyList>Room>}
instead of {@code ReadOnlyList>Patient>}
?
104 (commented on own PR)
makes sense, let me change it later
105 (commented on own PR)
oh ya, i forgot. ill change it later
106 (commented on own PR)
okay, let me change it now and update the pr
107 (commented on own PR)
yup, i think i missed out on that, thanks!
108 (commented on own PR)
i thought its already editpatient?
109 (commented on own PR)
okay can can
110 (commented on own PR)
whoops, let me rectify that
111 (commented on own PR)
the - means that its deleted
112 (commented on own PR)
all the red lines are deleted lines!
113 (commented on own PR)
okay, will change it, thanks!
114 (commented on own PR)
okay can, I will change it
115 (commented on own PR)
i think instead of arraylist, it might be better to use ObservableList directly. ObservableList is what is passed into ListView (UI component) and allows the UI to be updated whenever there is a change in ObservableList.
116 (commented on own PR)
okayy, ill change that real quick
117 (commented on own PR)
yup, i will change the indentation. good catch
118 (commented on own PR)
alright man, i have reverted all the wildcards imports! thanks for pointing it out
119 (commented on own PR)
the "-" is to remove the patient from the room! so eg. editroom 1 pn/-
, it will remove the patient from room 1
120 (commented on own PR)
okayy, i will change it later! thanks for pointing it out
121 (commented on own PR)
yup, good idea
122 (commented on own PR)
i'm not sure how to use a switch here because the if
conditions are all different, maybe you want to give me some suggestions?
123 (commented on own PR)
yup sure! i will change it
124 (commented on own PR)
cuz i feel like its not really an index, so grouping it under the index class seems wrong
125 (commented on own PR)
okay, let me try it out
126 (commented on own PR)
yes
127 (commented on own PR)
because i have to check if the room is present in the ObservableList
. There is no way to access the RoomList
other than through the ModelManager.java
. i don't think its suitable to have a method in ModelManager.java
to check if the room exists and to return that room
128 (commented on own PR)
sure, i can move the room related methods to RoomParserUtil
129 (commented on own PR)
I'm allowing the users to set the room number already, so index might not be that great...
130 (commented on own PR)
yup, i just changed it!
131 (commented on own PR)
i initially used hasRoom()
and setRoom()
. i forgot why i didnt use hasRoom()
but i didnt use setRoom()
because roomList class already has setRooms()
, i feel that it will be quite confusing to have 2 methods named so closely to each other but does totally different things
132 (commented on own PR)
Yup, my test cases were failing, so I added a toString() to check. I thought about removing it, but I figured you might need it. Feel free to delete later. Don't think it matters
133 (commented on own PR)
Hmm, now thinking about it, it does seem like bad design. I'll change this later and update this pr. I will probably use the observablelist.stream().anyMatch to replace this (so it will stay in EditRoomCommand.java but won't have a method) . Do you think its a good idea?
134 (commented on own PR)
This is one of the dilemma I'm facing. Whether to have a static method in RoomList.java or have a method in EditRoomCommand.java (that is out of place). I think i will adopt the same method of just using the observablelist.stream.anyMatch() method and not create a new method. How does it sound?
135 (commented on own PR)
Since i have to change other parts, I think i will just update it in case I forget about it in the future
136 (commented on own PR)
thats true, let me shift the code there then
137 (commented on own PR)
i will shift this method to the model manager also
138 (commented on own PR)
okay sure!
139 (commented on own PR)
HAHAHAH, i wrote it that way so the method name not so long. will change it later!
140 (commented on own PR)
good catch on the ambiguity! i will make it clearer!
141 (commented on own PR)
there should only be one patient in a single room though. also, it doesnt move the patient, you have to clear the patient from the room first. maybe for v1.3, i can implement the auto remove and move feature
142 (commented on own PR)
yup, good catch. i removed it
143 (commented on own PR)
because the original css also have scrollPane in it, so i specified the css
144 (commented on own PR)
okay
145 (commented on own PR)
because initially it was just internalList.add(sth)
and it wasnt updating the UI unless i change it to setAll
146 (commented on own PR)
not really, kinda forced to do it this way unless i dont use Index
class for this method
147 (commented on own PR)
if i dont use Index
class right, then i'll be using integer
instead. cuz if i use roomlist.getObservableList.indexOf(getPatientWithName("some name here")
, it will return -1
if the patient is not found. but Index
class doesnt accept negative integer, so it will throw out an exception
148 (commented on own PR)
okay sure
149 (commented on own PR)
so its kinda like a comparison of using int vs using Index, because either way, i need the position of the patient from the list
150 (commented on own PR)
mayeb i will use this.roomList.getRoom...
, because getRoomList
returns the unmodifiable version
151 (commented on own PR)
yup. i dont really feel its a hack tho, cuz the ModelManager
is supposed to interact with the roomlist directly. We should make it so that other classes cannot interact with the roomlist directly and remove the getModifiableRoomList
though
152 (commented on own PR)
yup, wasnt really thinking sorz >>
153 (commented on own PR)
that is true, we can look into this for next week
154 (commented on own PR)
oki, i will do that next time HAHHAHA, didnt see
155 (commented on own PR)
thats true
156 (commented on own PR)
ya i think this one we dont have a choice but to couple them
157 (other comment)
You can take a look at the RoomListPanel.java
for references. I suspect the problem arose because you are calling patientDetailsPanel = new PatientDetailsPanel(patientToDisplay)
and patientDetailsPanelPlaceholder.getChildren().add(patientDetailsPanel.getRoot())
repeatedly. Perhaps you can move both these LOC from the handleMouseClick
and updateDetailsIfChanged
method into the constructor for PatientListPanel.java
158 (other comment)
i know its supposed to be like that, but i think we can include in the ug for better clarification?
159 (other comment)
we will probably delete this section
160 (other comment)
Can be taken into consideration for future design, will be closing this
161 (other comment)
i think it will take the last parameter
162 (other comment)
For 4, i will fix the RoomPanel by this Friday
@MarcTzh
(94 comments)1 (commented on others PR)
as of v1.2 there is no feature that requires the generation of reports
2 (commented on others PR)
interacting with GUI with a mouse* ?
3 (commented on others PR)
Again, no reports yet
4 (commented on others PR)
include date and time
5 (commented on others PR)
This is not in v1.2
6 (commented on others PR)
Don't edit the tutorial
7 (commented on others PR)
^
8 (commented on others PR)
Parameter name not changed
9 (commented on others PR)
Good
10 (commented on others PR)
uses '@' symbol
11 (commented on others PR)
Comment: 32nd not 32rd
12 (commented on others PR)
Comment needs to be updated
13 (commented on others PR)
Looks like you forgot to change these comments as well
14 (commented on others PR)
Comment should be day greater than 31 instead
15 (commented on others PR)
Is it supposed to be date or Date, previously it was Phone not phone
16 (commented on others PR)
KIV the prefix because this includes date and time
17 (commented on others PR)
Perhaps it should be named modelDateTime
18 (commented on others PR)
^
19 (commented on others PR)
Missed this out
20 (commented on others PR)
I personally feel that date and time should be separate, e.g. 01-01-2020 1200, we can discuss this in the team meeting tonight
21 (commented on others PR)
Should probably be on separate lines
22 (commented on others PR)
Should be named something more meaningful like status or taskStatus
23 (commented on others PR)
Shall discuss whether these fields should be optional in the team meeting later tonight
24 (commented on others PR)
Should be DATE_TIME
25 (commented on others PR)
does this prefix make sense or do we need to revise it since its date + time now, maybe it should be due:
for example
26 (commented on others PR)
What is the purpose of this design wise? Is this to act as a null value without throwing NPE?
27 (commented on others PR)
The rationale behind using java String#trim on Phone
was to remove leading and trailing whitespaces. When considering the user's dateTime
input do we need to consider white spaces inside the string as well? For e.g. "01-01-2020 1200" vs "01-01-2020 1200" if we are not going to trim it then perhaps we need to consider adding an exception for this and add the corresponding unit test.
28 (commented on others PR)
Remove this
29 (commented on others PR)
rename this
30 (commented on others PR)
rename the date
31 (commented on others PR)
why did you change this?
32 (commented on others PR)
can change to complete or incomplete
33 (commented on others PR)
has a state of incomplete
34 (commented on others PR)
state of incomplete
35 (commented on others PR)
May need to capitalise the first letter so that the UI is standerdized
36 (commented on others PR)
integers*
separated*
37 (commented on others PR)
Why is done not capitalised?
38 (commented on others PR)
Do we need to use String builder or is efficiency not important? @BobbyZhouZijian
39 (commented on others PR)
What does this return if the arg is empty @dearvae
40 (commented on others PR)
do not add all the white spaces
41 (commented on others PR)
no space needed here
42 (commented on others PR)
why are there so many empty lines
43 (commented on others PR)
^
44 (commented on others PR)
what about status
45 (commented on others PR)
Value of status* - this makes it easier for the user to determine what is wrong with their input if there are multiple attributes in a find command
46 (commented on others PR)
Remove space
47 (commented on others PR)
remove this space
48 (commented on others PR)
why do you need to specify "which is null" when the attributes are the default values?
49 (commented on others PR)
why cant the default desc be an empty string?
50 (commented on others PR)
is it necessary to add an extra boolean when there was nothing wrong with the prev implementation?
51 (commented on others PR)
fix this
52 (commented on others PR)
I believe this is where you use parser util, code like this will be repeated, better to abstract it out
53 (commented on others PR)
Too many checks, this is not ideal
54 (commented on others PR)
remove this space
55 (commented on others PR)
Where is the description for what an event is
56 (commented on others PR)
^ same as above
57 (commented on others PR)
^
58 (commented on others PR)
fix this
59 (commented on others PR)
hidden
60 (commented on others PR)
^
61 (commented on others PR)
list is missing
62 (commented on others PR)
shouldn't it be
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(DATE_FORMAT)
63 (commented on others PR)
might wanna check if its null, javadocs specifies that it cannot be null, not sure if NPE will be thrown
64 (commented on others PR)
hmm i already implemented this in lessonCommandParser, no repeated code, abstract this method out if needed
65 (commented on others PR)
Magic number
66 (commented on others PR)
MAX_INT = .....
then string format
67 (commented on others PR)
Why is this called isValidTitle??? Rename
68 (commented on others PR)
Test a few more values in each equivalence partition and especially near boundary values. Please include values such as 0, -1, some valid values and values near MAX_INT
69 (commented on others PR)
e.g.
70 (commented on others PR)
wont the user have to scroll down a lot to view the error message
71 (commented on others PR)
This is repeated code, just renamed in both deadline and events, since both are a sub class of task, implement these methods in task and you can override later on
72 (commented on others PR)
use the tags i have in commandTestUtil, do not use old tags from AB3
73 (commented on others PR)
maybe name the parameters timeSlot and editedTimeSlot
74 (commented on others PR)
timeSlot and editedTimeSlot
75 (commented on others PR)
Good catch
76 (commented on others PR)
Still valid?? awkward phrasing
77 (commented on others PR)
with proper callouts and markdown
78 (commented on others PR)
what about module tag and optional description?
79 (commented on others PR)
manage their tasks and visualise it on a calendar as well as time spent on tasks and lessons
80 (commented on others PR)
user with a lot of lessons
81 (commented on others PR)
why did you quote UC05 isnt this UC05
82 (commented on others PR)
and does not overlap
83 (commented on others PR)
Why is it UC08/09
84 (commented on others PR)
^
85 (commented on others PR)
It is optional*
86 (commented on others PR)
what does still valid mean? Maybe can specify that the task must not overlap with existing tasks or lessons after being edited
87 (commented on others PR)
or overlaps with tasks and lessons
88 (commented on others PR)
Remove
89 (commented on others PR)
I think the space before status is not intended right
90 (commented on others PR)
Hmm what about time or datetime
91 (commented on others PR)
Maybe you should include the test for time and desc as well? Test the regex
92 (commented on others PR)
Do lower case tags work?
93 (commented on others PR)
this date is not in the coming week
94 (commented on others PR)
not in the coming week
95 (commented on own PR)
added extension
96 (commented on own PR)
These are in addremark.md not actual code, not sure if it needs to be changed
97 (commented on own PR)
same reply as above
98 (commented on own PR)
ok undid changes in these documents, please review again
99 (commented on own PR)
ok undid changes in these documents, please review again
100 (commented on own PR)
not in this PR
101 (commented on own PR)
changed
102 (commented on own PR)
done
103 (commented on own PR)
changes reverted
104 (commented on own PR)
this method is to list out the message constraints, in order to have a nice grammatically correct message the last type of task in this String should not contain a comma after it
e.g. Acceptable types of tasks are: A, B, C.
instead of Acceptable types of tasks are: A, B, C, .
105 (commented on own PR)
excellent suggestion, it works as well and is more concise
106 (commented on own PR)
LOL i thought i deleted, it was for debugging 😃
107 (commented on own PR)
yes need, good spot
108 (other comment)
Does not LGTM. Please include markdown for important commands or things to note of. Thanks.
109 (other comment)
Please include your portfolio under team/GabriellaTeh.md
110 (other comment)
Resolved merge conflicts and created a new pull request from a different branch
111 (other comment)
Hi Zijian, I conducted some boundary value analysis and found that it works as intended for the positive test cases but when i put in find status: it does not throw any error, it says 0 tasks listed, following equivalence partitioning i shall stop further tests
112 (other comment)
A few problems I found:
find status: XXX
where XXX is an invalid input, returns 0 tasks found as well
Error message displayed should state that status can only be of 2 values: complete and incomplete.
find date:01-01-202
is also accepted and the date 01-01-2020 matches it, should this be considered an incorrect input
113 (other comment)
According to this method in Event.java this is not a bug @BobbyZhouZijian
114 (other comment)
@nuovonatura are you fixing this
@UncleGrandpa925
(90 comments)1 (commented on others PR)
I think you pattern did not match our command. Here is my suggestion:
(?>type>[A-Z]\s+)?(?>commandWord>\S+)(?>arguments>.*)
2 (commented on others PR)
Maybe we rename this class to Contact now?
3 (commented on others PR)
Ahh I see, just add another \ before each of the current
4 (commented on others PR)
I think this should be kept simple, for example: "Adds a contact to the app" . This applies to all of your messages
5 (commented on others PR)
You're missing the "T " prefix before the COMMAND_WORD here and at the example a few lines below too 😄 This applies to all 5 of your commands
6 (commented on others PR)
I think the example for time here should have hour:minute as well, we'll support that too
7 (commented on others PR)
As discussed, I think this should return a task's to string, and view it by Id! We won't have any find command
8 (commented on others PR)
After coding I think that all of these "notes" like things should be called "notes" with a prefix of "note/", and this field is purely optional. What do you think?
9 (commented on others PR)
for my iP I have written quite a nice date parser here, I think you can adapt it to this part (and add more supported format too)
10 (commented on others PR)
this comment here is quite obvious right? I think can just write it as "Parses a Remark"
11 (commented on others PR)
As I have commented on ViewTaskCommand, this should be modified accordingly
12 (commented on others PR)
Ah my bad, by index
13 (commented on others PR)
yeah I know, but like I want to create a special prefix for the note-like stuff, for users to throw anything they want into it
14 (commented on others PR)
Okay then maybe you create an issue for that?
15 (commented on others PR)
okay sure!
16 (commented on others PR)
okay!
17 (commented on others PR)
the Task.Type is missing here 😄
18 (commented on others PR)
Missing Tash.Type here too!
19 (commented on others PR)
should we merge Location into Remark now?
20 (commented on others PR)
Not Email right?
21 (commented on others PR)
Just wondering, is there any better way than manually checking 5 fields to see if they are null or not? I think there is a requireNotNull method as well right?
22 (commented on others PR)
not String right? desc has type of String but for the message it should be Description
23 (commented on others PR)
Not Double.class.getSimpleName() right? It should be Weightage
24 (commented on others PR)
Okay sure
25 (commented on others PR)
Yeah but for the message you can't output like "missing a double", better to just replace it by "Weightage" (a String) since the Double.class.getName() is basically get the name of that class
26 (commented on others PR)
Hmm should we edit the module by index? or should it be index?
27 (commented on others PR)
We haven't agreed on whether a task must be associated with a module or not right?
28 (commented on others PR)
Should we merge location into remark now?
29 (commented on others PR)
Should it be to switch to the module tab now?
30 (commented on others PR)
love this simplicity 👍
31 (commented on others PR)
actually it will like expand the task (view in greater details)
32 (commented on others PR)
Now I think we should rename it to view
33 (commented on others PR)
for this, is it better if we have the type like lec (for lecture), tut(for tutorial)?
34 (commented on others PR)
"the length of the Lesson list" sounds a little unnatural, maybe "the number of lessons"?
35 (commented on others PR)
not of that type right? now we changed to deleting by index already
36 (commented on others PR)
same here, maybe "the number of lessons"?
37 (commented on others PR)
why do you need to check Task.isValidString here? I thought only the latter check is necessary?
38 (commented on others PR)
I think the remark doesn't need any kind of validity checking right?
39 (commented on others PR)
Hmmm I think this is fine but later on probably I will abstract this thing to the "common" module
40 (commented on others PR)
LOL It just crossed my mind, I think this is better as isDone (shorter and more "grammatically" correct haha)
41 (commented on others PR)
hey this should be isComplete haha. A trick to faster change the name of a variable is to use Find and Replace haha
42 (commented on others PR)
I think this method can be named like "flipDoneStatus", I think it will be a more intuitive name right?
43 (commented on others PR)
yeah store it as an empty string is better
44 (commented on others PR)
I think this can be better done by adding a new method to task, like belongTo(code) so that we don't need to touch so deep into task
45 (commented on others PR)
Hmm is that SHOW_ALL? or show tasks that take place either today or after today
46 (commented on others PR)
Okay this I think is fine!
47 (commented on others PR)
Nicely done! Anw should we chain this together?
48 (commented on others PR)
I think the index is one-based right?
49 (commented on others PR)
I'm just thinking if it's better to put this logic in Model instead? I think Logic should only contain lightweight logic. Put it in Model will also make it more testable too!
50 (commented on others PR)
Actually we should sort the internalList and just return the internalUnmodifiableList (because it wraps the internalList)
51 (commented on others PR)
Any reason for this modification?
52 (commented on others PR)
I think this should be named TaskSorter / TaskSorterByTime
53 (commented on others PR)
Hmm yeah make sense! Maybe just keep it to see what the UI team will say 😄
54 (commented on others PR)
Ah okay! But the index to display is one-based?
55 (commented on others PR)
Ah I see
56 (commented on others PR)
Hmm I just realized, aren't we comparing tasks by time?
57 (commented on others PR)
this is a stub so it will always be like that
58 (commented on others PR)
lol what's this
59 (commented on others PR)
Not address book any more, it should be "Add a contact to the app"
60 (commented on others PR)
This should be "displayed on the screen"
61 (commented on others PR)
Can you look at Minh's new messages and standardise the message content?
62 (commented on others PR)
It should be in the form of [DONE] + Name + Date: .... right?
63 (commented on others PR)
we don't have the app-wide search anymore right? It will now be a contact tab?
64 (commented on others PR)
Heyy you still need to edit it here too!
65 (commented on others PR)
"basic operations" should be like "basic components"?
66 (commented on others PR)
"The task manager is a crucial feature in TrackIt@NUS" same as above? I think it can be written like "The task manager is an elemental part of TrackIt@NUS" or something like that
67 (commented on others PR)
Maybe also note that if a task doesn't belong to any module, it can only be viewed in the Upcoming section
68 (commented on others PR)
not only the add but also the edit command as well
69 (commented on others PR)
execute -> Execute
70 (commented on others PR)
Also, nice use of process diagram here!
71 (commented on others PR)
I think the CommandResult's label is missing, it should be "r"
72 (commented on others PR)
Hmm do you think the name of objects should be longer? like model & task instead of m & t
73 (commented on others PR)
Do you think we should highlight the self-call to createEditedTask?
74 (commented on others PR)
"all tasks that belong to the specified module code" I think we can delete the trailing "code"
75 (commented on others PR)
I think a better rationale(or at least better sounding haha) is that we implement all commands in a very similar way so that the logic is uniformed and also for better maintainability / less prone to bugs.
But I don't know should we place this here or put it in a more "general" section of this DG? And put more task-specific design consideration here?
76 (commented on others PR)
I think we should put the shorter type before the longer type!
77 (commented on others PR)
can you move all of these messages to commons/core/Messages.java?
78 (commented on others PR)
Hi, I think the address should be more realistic (throw in some sample zoom links, some venues at the school like COM1-0120....)
79 (commented on others PR)
hmm it's quite a big problem. Anyway, can you change the address to some random locations in NUS to make it more realistic? Because this is the sample data we will show the user too!
80 (commented on others PR)
I think we can edit this sentence to this: " Phone numbers have to consist of just digits only, and can be of any length!"
81 (commented on others PR)
Just a recommendation: I think the sample command should include 2 tags(same for edit contact) so that the user will immediately know! (Also, can you change the sample command in AddContacts & EditContacts as well?)
82 (commented on others PR)
I think we can add in that email & phone number are optional!
83 (commented on others PR)
Same as above!
84 (commented on others PR)
The INDEX
provided must be one of the contact' indexes being shown on the window? Does is sound better?
85 (commented on others PR)
I think the message should be more specific, like "There cannot be more than 10 modules at the same time" or smt like that
86 (commented on others PR)
Right now I think that this predicate section should be put in like a "general design consideration" section, because for lessons they will copy-pasted this exact thing, but on the other hand doing that will make our DG looks "shorter" and "less effort", so I'm not sure 😢What do you think?
87 (commented on others PR)
I think this section should have a dedicated section like "Code design consideration", and also we should add in a "Feature design consideration"
Like this:
88 (commented on others PR)
I think "to have everything" sounds "broad" and "big", maybe we should make it more specific or more reader-friendly?
89 (commented on others PR)
I suggest we can change this to something like: "want to have their personal todos integrated with the academic calendar"
90 (commented on others PR)
Hmm I think no need for this, because I think our app is good on its own and even with Internet there is nothing more we can improve 😄
91 (commented on own PR)
My bad😢
92 (commented on own PR)
True
93 (commented on own PR)
Hmm I have removed this class already?
94 (commented on own PR)
Ah okay not yet, my bad
95 (commented on own PR)
Can you take a look at my new PR?
96 (commented on own PR)
If that PR is good then can merge it first, so that there won't be too many commits in a PR
97 (commented on own PR)
Okay I forgot. Actually the original code doesn't explain the returned result too (maybe too obvious?)
98 (commented on own PR)
Yeah, since originally there were setContact and setContacts as well
99 (commented on own PR)
the original code base doesn't have that throw as well. What do you think? (Honestly I haven't read about when we should state that this method will throw something and when we can just omit it). Anyway, will read it later on after I finish developing these 3 classes
100 (commented on own PR)
I think we should best leave it as TrackIter (short,concise name). LOL It took me 1,5 hour to rename address book to TrackIter 😂 (And still there are a lot of leftovers)
101 (commented on own PR)
Fixed in the latest commit
102 (commented on own PR)
Okay lemme fix it now
103 (commented on own PR)
When I thought on how to handle the program's logic, I found out that putting lessons and tasks in Module will make it way harder to find/delete tasks & lessons. Instead, I think that we just keep lessons and tasks in separate lists and everytime we need to find lessons or tasks of a module, we can just do a O(n) search. This will make the program's logic much simpler and less prone to errors
104 (commented on own PR)
Yes. Is just a more detailed type of exception, so it doesn't need any implementation
105 (commented on own PR)
It will be fixed in the next PR!
106 (commented on own PR)
Wow I think this is a bug happend when I'm copying things
107 (commented on own PR)
fixed!
108 (commented on own PR)
Ah okay okay let's enable it
109 (commented on own PR)
@simonteozw Maybe you approve this PR first then I make another PR? I just run the code formatter and it changed like 80 files
110 (commented on own PR)
Actually I wrote the message for this exception already, but then deleted it because the exception caught on the very next line. Should I comment on why I leave that message empty or just write a message in it?
111 (commented on own PR)
done!
112 (commented on own PR)
this the auto toString method generated by IntelliJ. It will be used for testing only so I guess it's best to stick to the default format
113 (commented on own PR)
for testing only
114 (commented on own PR)
Sure
115 (commented on own PR)
There is a warning that the operator (like + for string concatenation) must be on a new line, but I haven't found a way to make IntelliJ auto-format for that, and it's really minor so I will just disable it for now
116 (commented on own PR)
Hmm because I haven't been able to get the IntelliJ to conform to this rule, and this is very minor (it's just the position of the operator) so I think it's best to disable it for now (if not forever)
117 (commented on own PR)
No it's a good thing to keep, why need to remove right?
118 (commented on own PR)
Yes, because as we have discussed this will be a "bonus" feature. I just leave it there so that later on we remember
119 (commented on own PR)
Sure!
120 (commented on own PR)
Ah yes, it's the formatter of IntelliJ, it auto-align the comments of params
121 (commented on own PR)
Okay
122 (commented on own PR)
Okay
123 (commented on own PR)
Hmm then should we rename the method to getAllTasks()?
124 (commented on own PR)
Yep I will remove that in an upcoming PR, but for now just edit it 😂
125 (commented on own PR)
Actually the current hasModule is doing exactly this 😆 two modules are consider "same" if they have the same code
126 (commented on own PR)
Actually I changed this so that it can be used for cases of module not exist in Lessons. The original version is only good for delete module
127 (commented on own PR)
It has been moved haha
128 (commented on own PR)
Fixed!
129 (commented on own PR)
because now missing phone is not an error any more, later on I will convert them to positive testcases
130 (commented on own PR)
Yeah I think we can!
131 (commented on own PR)
Optional.empty here is actually still valid! null will throw exception!
132 (commented on own PR)
Actually in the upcoming PR there will be several more TODOs, it's a common & quick way to note that there are things todo haha since IntelliJ can highlight all todos in the project when you want to!
133 (commented on own PR)
Fixed! For the commit I just pushed to fix this I have manually tested deleting phones & emails and it all worked well!
134 (commented on own PR)
fixed!
135 (commented on own PR)
Yeah I copied his name from SoC's website 😄
136 (commented on own PR)
because argMultimap.getPreamble() is actually to check if index is present, which is unnecessary in this case (in fact this is leftovers of copying from AB3 commands)
137 (commented on own PR)
Sure!
138 (commented on own PR)
it is very different because the IllegalArgumentException is an unchecked exception, which doesn't require the caller to try/catch for it. In other words, this function will crash the program (assert-like) if the provided date is invalid!
139 (commented on own PR)
Also I will capitalize the "a" now
140 (commented on own PR)
Done!
141 (commented on own PR)
done again!
142 (commented on own PR)
because I have added a very similar testcase to line 41-45
143 (commented on own PR)
because I have added a very similar testcase to line 41-45
144 (commented on own PR)
Ah this I copied from TaskTestUtil but realised it's not usable yet
145 (other comment)
Yes, I realised it too but I forgot to raise it up during yesterday's meeting! Will send Simon another PR.
Ah I resolved it already! Forgot to close this issue
146 (other comment)
@simonteozw can you review this commit then merge it for me so that the next PR won't be so huge
147 (other comment)
Actually "commons" in the name of one of the current module too! (seedu.address.commons)
148 (other comment)
Ah that checkstyle, I think it can be disabled for now, later on when I merge the later pull request I can enable it back again! Actually we can do cherry-pick there but I haven't had time to properly learn cherry-pick
149 (other comment)
@nguyendqminh can you take a look at my message above and provide me the deadline that you will resolve this? Thank you!
150 (other comment)
@simonteozw Hey can you take another look? If it's good then you can approve it so that I can make the final PR for Lessons
151 (other comment)
@nguyendqminh Hi, any updates on this?
152 (other comment)
@nguyendqminh Can you push your commits to the PR so that the team can know your progress? Thank you!
153 (other comment)
@simonteozw Hey. I think this PR is quite simple but I think it's best to have you do a quick review of it! Thank you!
154 (other comment)
@simonteozw this can be closed now right?
155 (other comment)
Closing #109
156 (other comment)
@simonteozw Hi Simon
So basically in this PR, I did the following things:
For Contact: Removed List & Clear commands
For Lesson: Removed List & View commands
For Module: Removed List & View commands
For Task: Removed View command
And I refactored all the common messages between commands to Messages.java + Standardised their names
Thank you for reviewing it!
157 (other comment)
Looks Good. I just want to check, if users edit and do
T edit 1 m/
is it still a valid command? It should change the module code to null
Yep it will change it to null
158 (other comment)
Is this ready to be merged? @simonteozw
159 (other comment)
Hi @simonteozw . In this PR I have made the following changes:
made Email & Phone to be optional (this took quite a lot of time but I have done some manual testing and it seems to be working well)
replaced the Task.isValidString by a simple call to String.isBlank (because I think your intention is to check if a string is blank or not)
Please help me review this PR! Thanks a lot (x100)!
160 (other comment)
@nguyendqminh please help me clarify this in the UG!
161 (other comment)
@simonteozw Can you please check for Modules / Lessons / Contacts as well? Thank you!
162 (other comment)
@UncleGrandpa925 Please update the UG to clarify this!
163 (other comment)
@nguyendqminh Hi, can you help me clarify in the UG that the entered Index must be one of the indexes that are appearing on the screen? Thanks!
164 (other comment)
@simonteozw Please help me clarify this in the top section of the UG! Thank you!
165 (other comment)
@simonteozw Can you help me clarify this in the UG? Thanks!
166 (other comment)
@simonteozw Please help me clarify it in the UG! Thank you!
167 (other comment)
Hi @simonteozw . Actually this PR is kinda simple and there is not much to review, yet I still request your review so that you can know about the newly added test skeleton! Thank you!
168 (other comment)
@nottiffchan Can you check discord?
169 (other comment)
After this is done, a new issue will be created to edit the UG
170 (other comment)
Hi @nottiffchan since you are in charge of the UG now I will transfer this issue to you! Thank you!
171 (other comment)
Hi @simonteozw I think this PR is good to merge immediately but I just want you to take a look to see what I have done in this PR (mostly for the refactor of Lesson's messages, I wasn't aware that Lesson's messages structure were quite messy)
@simonteozw
(90 comments)1 (commented on others PR)
Can you change this to docs/UserGuide.md
2 (commented on others PR)
Should we remove this *{More to be added}*
line?
3 (commented on others PR)
Can I ask what is gradeDist? Is it grade distribution?
4 (commented on others PR)
Can I check why we are checking if other is instanceof Name? We should only check if other is also a Location right
5 (commented on others PR)
Another instance here. I think should be other instanceof Location right?
6 (commented on others PR)
Should we use Address Class for Task as well? I am unclear if there is a difference between Location and Address class class haha
7 (commented on others PR)
Just curious, why did you remove the (String)
typecasting?
8 (commented on others PR)
Need to fill in return value here
9 (commented on others PR)
Can I check, what is the difference between setModule and setModules? They are for different use cases?
10 (commented on others PR)
Should ass throws ModuleNotFoundException, DuplicateModuleException
to the method declaration right? Same for several other methods.
11 (commented on others PR)
Just thinking. Shoudl we change this TrackItManager? Or TrackIt? haha. If it's too troublesome to change then nevermind.
12 (commented on others PR)
Ok then we just leave it first. If need be we will let the others add in these methods when they implement further
13 (commented on others PR)
Maybe we should add throws NullPointerException
in the method declaration? Or remove that line in comments.
14 (commented on others PR)
Can delete the @return
here as well, or add the return value
15 (commented on others PR)
Is this method supposed to be empty?
16 (commented on others PR)
Can I check why this is removed? Are we leaving it to later to implement?
17 (commented on others PR)
Why is @Override
removed? The getTaskList
method is from ReadOnlyTrackIter
so we should keep the @Override
right?
18 (commented on others PR)
Is this the final PR for concrete classes? If yes we should re-enable checkStyle
19 (commented on others PR)
Can remove this comment
20 (commented on others PR)
Same. Can remove this comment
21 (commented on others PR)
Here too. Remove comment
22 (commented on others PR)
Remove comment
23 (commented on others PR)
Should MESSAGE_USAGE be L list: sample
? Maybe change to another word like CS2100
to make it clearer?
24 (commented on others PR)
Remove Comment. Maybe change MESSAGE_USAGE to have a clearer keyword instead of sample
25 (commented on others PR)
Should be There is no module matched to the given module code
. Missing the to
.
26 (commented on others PR)
Maybe can add an example, like in AddContactCommand
27 (commented on others PR)
Same here. Maybe should add example.
28 (commented on others PR)
Same here. Maybe add example
29 (commented on others PR)
Same here. Maybe add example
30 (commented on others PR)
Same here. Maybe add example
31 (commented on others PR)
Just curious. Is there a need for PREFIX_TYPE
when there is already a PREFIX_NAME
? OR this is just for clarity when reading code?
32 (commented on others PR)
Since the function is parseTime
, maybe should change Lesson.DATE_MESSAGE_CONSTRAINTS
to Lesson.TIME_MESSAGE_CONSTRAINTS
? Just a suggestion haha
33 (commented on others PR)
Yes this sounds better
34 (commented on others PR)
Ok
35 (commented on others PR)
Should the ParseException be thrown with empty string? No message?
36 (commented on others PR)
Can remove the 2 lines of whitespace here
37 (commented on others PR)
Same here
38 (commented on others PR)
Hmm maybe write the new message on this line then in the following line you can write catch (ParseException pe) { throw pe }
39 (commented on others PR)
I meant here, lines 17 - 18
40 (commented on others PR)
Actually I meant here lines 17-18
41 (commented on others PR)
Maybe change the comment here address book
to app
or TrackIt
42 (commented on others PR)
What does this do?
43 (commented on others PR)
Why do we need this toString method? Maybe change to Code:
and editModuleDescriptor:
instead of code=
and editModuleDescriptor=
44 (commented on others PR)
Why do we need this? And Maybe change to Name:
is this for testing purposes?
45 (commented on others PR)
maybe can remove the @FXML private Label desc on top too
46 (commented on others PR)
Hmm I think we should enable it before merging right?
47 (commented on others PR)
Oh I didnt IntelliJ will autogenerate toString methods. Do you plan on removing this? Or keep it just for testing
48 (commented on others PR)
Ok, but I think before we submit v1.3 on Friday we should remove this
49 (commented on others PR)
Ok
50 (commented on others PR)
Is this supposed to be commented out?
51 (commented on others PR)
Should we specify this for Lessons?
52 (commented on others PR)
Maybe remove the (must be a positive integer)
since you already have the INVALID_INDEX_MESSAGE. To keep it consistent with Task and Module. Same for DeleteLesson Command too
53 (commented on others PR)
Should this throw an exception? Or is there another way to handle this?
54 (commented on others PR)
This will be changed in a later PR?
55 (commented on others PR)
Actually for this I wanted to check why you need this method here. Why not just sort the lessons in UniqueLessonList under the function asUnmodfiableList(). Then everytime UI calls for a list of lessons it will be sorted
56 (commented on others PR)
I think should change to Names should be a non-empty string and should not contain '/'
57 (commented on others PR)
Is the extra space supposed to be there?
58 (commented on others PR)
Actually this method just returns all tasks so lets change the comment to @return the list of all tasks
59 (commented on others PR)
I think change to @return the list of all tasks that take place on the specified date
60 (commented on others PR)
I think we can do this later. I believe UI team may feedback and we may need to refactor the method signatures abit anw
61 (commented on others PR)
Out of curiosity, why change this? I don't see anything wrong the old version
62 (commented on others PR)
Actually I thought we were going to remove the ListLessonCommand, or are we leaving that to a later PR?
63 (commented on others PR)
This works? hasModule
only checks based on code and not name?
64 (commented on others PR)
Why is this removed? Is it because not called at all? Minh wanted to keep this in initially so maybe should discuss w him before removing it
65 (commented on others PR)
Wouldn't it be better to keep the import so you dont need to type java.time.DayOfWeek
66 (commented on others PR)
If you remove this, how will we ensure that Lessons are always sorted?
67 (commented on others PR)
If you remove this, how will we ensure that Tasks are always sorted?
68 (commented on others PR)
I think for the messages about duplicates, all should end with already exists
, no need already exists in the app
.
69 (commented on others PR)
Can we shorten this to 1 else if {
instead of else { if {
?
70 (commented on others PR)
Same as phone
71 (commented on others PR)
Should this be Optional.empty()? Or maybe we should add another test case for that
72 (commented on others PR)
Why are these lines commented out?
73 (commented on others PR)
What if the contact originally has a phone number and the user wants to edit to remove it. This will ensure that if the user types C edit 1 p/
the phone number will remain unchanged when it should be changed to null
74 (commented on others PR)
I think we should create a github issue abt this so we dont forget about it. And include all the lines we commented out so we know what to replace.
75 (commented on others PR)
I think this should be changed to get index of
76 (commented on others PR)
Same here. get index of
77 (commented on others PR)
Sorry I just realised, should you update the predicate to show all Modules? Or doesn't matter. In task and lesson we will predicate first
78 (commented on others PR)
I think we should remove the dd/MM/yyyy hh:mm
. Or I can do that in my own PR later
79 (commented on others PR)
Why did you remove !argMultimap.getPreamble().isEmpty()
?
80 (commented on others PR)
Is the CHIA intended to be all caps? Haha
81 (commented on others PR)
Hmm Actually how is this different from the normal parseDate? And why not just use the same Messages.DATE_MESSAGE_CONSTRAINTS? In any case, I think the first letter should be capitalised: An invalid date...
82 (commented on others PR)
Sorry actually for grammar it should be "An invalid date has been passed into parseValidDate"
83 (commented on others PR)
Hmm why did you remove this test case?
84 (commented on others PR)
Should be The Class Diagram above
85 (commented on others PR)
Can I check how come suddenly need to add this?
86 (commented on others PR)
I think we can change this to COMPONENT_NAME Manager
class
87 (commented on others PR)
Just some grammar. Can change this part to clicks on a module tab
not click on a module tab
.
88 (commented on others PR)
Somehow the Note is not correctly displayed. But since we already have the information source I think we can just remove the Note completely. Also, change last line to due to a limitation in PlantUML, the lifeline continues to the end of the diagram
89 (commented on others PR)
I feel that this function should also check if the module alr exists in trackit? Or maybe rename the function to hasEnoughSpace
to make it clearer
90 (commented on others PR)
Why is this commented out?
91 (commented on own PR)
Ok I tried to change to this but err java gives me an error: Illegal escape character in String literal
92 (commented on own PR)
What do you mean by view it by Id. Task doesn't have ad id associated with it haha
93 (commented on own PR)
Hmm actually I think writing note/
will be very cumbersome, and may confused users because they are used all 1 letter not 1 word
94 (commented on own PR)
Hmm ok then can I suggest we stick to r/
for remark, I believe note/
is too cumbersome
95 (commented on own PR)
Hmm I am following the standard comment format. I think better to keep it this way for now
96 (commented on own PR)
Ok. I suggest for now we leave it as is. Since Lesson and Task have a date component, we can standardise once both have been merged in and refactor it to be one of the 'commons'. Then that will be cleaner. Maybe leave for v1.3
97 (commented on own PR)
Ok. I suggest for now we leave it as is. Since Lesson and Task have a date component, we can standardise once both have been merged in and refactor it to be one of the 'commons'. Then that will be cleaner. Maybe leave for v1.3
98 (commented on own PR)
I think that will require some refactoring. I suggest I create an issue for it and we settle in v1.3
99 (commented on own PR)
Yes but apart from checking not null, we must also check if the fields fit the specific requirements, which differs for each requirement. Maybe we can look into it, but probably for v1.3
100 (commented on own PR)
There is no description class. Description is stored as a string thats why I used String
101 (commented on own PR)
There is no Weightage class. Weightage is stored as a double thats why I used Double class.
102 (commented on own PR)
Yes ok I will change it
103 (commented on own PR)
I think we can just leave it for now
104 (commented on own PR)
This is to support the feature that when the user types c/
it will reset the code to null, in other words they can remove the module code. If only have the latter check c/
will throw error
105 (commented on own PR)
Same as above. I want to distinguish between storing remark as null vs storing it as an empty string. Unless maybe it is better to just store all null as empty string?
106 (commented on own PR)
Ok I will leave it first then
107 (commented on own PR)
Hmm ok I shall refactor this
108 (commented on own PR)
Hmm I did this because I wanted to show overdue tasks if there are any too haha. But ok I can change it
109 (commented on own PR)
We get the int based on indexOf, which is zeroBased, so when we return the Index object we should use the fromZeroBased constructor
110 (commented on own PR)
All these date changes are just to pass the test cases. Because the task list is automatically sorted by date
111 (commented on own PR)
Yup! But displaying it as one-based will be done by UI team
112 (commented on own PR)
Hmm yes I suppose. Will change it
113 (commented on own PR)
Ok I shall remove it then. There is already a Contact Manager section
114 (commented on own PR)
I considered that but I am not q sure how to draw that out in UML
115 (commented on own PR)
I think we can put this in th eArchitecture
section of the Dg
116 (commented on own PR)
Hmm yea I will change it to the general overview section
117 (commented on own PR)
Done
118 (other comment)
Just finished refactoring. I think we can merge this first then I can create another PR where I rename the files to AddContactCommand? and etc
119 (other comment)
Also rmb to fix issue brought up by Weihong. criminal lawyer
is not alphanumeric.
https://discordapp.com/channels/@me/763052081266950177/763128915186155520
120 (other comment)
Core issue is that All Edit and Add commands were designed to update the predicate to show all Contacts/Tasks/Lessons. This is not good for stuff like when you are adding a Task in the Module or editing a Contact/Lesson in the module. Hence, I removed this Predicate
121 (other comment)
Is this ready to be merged? @simonteozw
No don't merge yet. I will request a review when it is ready
@chan-j-d
(84 comments)1 (commented on others PR)
Could you change this instance of 'AddressBook' to 'Athena'?
2 (commented on others PR)
Change this instance of 'AddressBook' to 'Athena' as well
3 (commented on others PR)
Adds >i>an>/i> event instead of >i>a>/i> event
4 (commented on others PR)
Consider adding Javadocs to this method and the newly implemented methods below
5 (commented on others PR)
What exactly is this change?
6 (commented on others PR)
Please commit only relevant changes to the branch in the future. This is probably more relevant when adding the editEvent command
7 (commented on others PR)
Add class-level javadocs for this class
8 (commented on others PR)
Update this javadocs for the context of AddEventCommand
9 (commented on others PR)
Use the >code>// some comment>/code> for this instead of >code>/* some comment */>/code> as that is relevant only to the method/attribute right below it which in this case is >code>PREFIX_DESCRIPTION>/code>
10 (commented on others PR)
Please include class level Javadocs for this
11 (commented on others PR)
Consider placing this into the constructor?
12 (commented on others PR)
Update javadocs to specify calendar
13 (commented on others PR)
Update Javadocs to specify it is about events not persons
14 (commented on others PR)
Add class level javadocs to tell us about the class
15 (commented on others PR)
Add class-level javadocs to tell us about the class
16 (commented on others PR)
Add class-level javadocs to tell us about the class
17 (commented on others PR)
What is the difference between these two methods? Should the >code>setEvent>/code> method check 'equality' between two events and replace the one in the list with the one outside?
18 (commented on others PR)
I believe this replies to the wrong part of the review? Please use this only to reply to the specific comment above
19 (commented on others PR)
Consider adding this method and the test methods below to a separate class called >code>AddEventCommandTest.java>/code> to separate tests for Bangyi's >code>AddCommand>/code> and tests for your >code>AddEventCommand>/code>.
20 (commented on others PR)
Consider adding these messages as constants instead of magic literals
21 (commented on others PR)
Is the prefix necessary at all?
22 (commented on others PR)
Should be able to obtain the index directly similar to the Delete command for example
23 (commented on others PR)
This seems to be outdated compared to what is actually implemented
24 (commented on others PR)
Would be nice to have a brief Javadocs description of the class
25 (commented on others PR)
This Javadocs is outdated
26 (commented on others PR)
Should probably remove this as it is not used at all
27 (commented on others PR)
Should remove this from the interface and the implementing classes
28 (commented on others PR)
Should probably remove this as it is only used by the unused sortPersons method in AddressBook
29 (commented on others PR)
Should probably remove this as it is not used at all
30 (commented on others PR)
This method should probably take in a Comparator instead in line with how the updateFilteredPersonList
method works. Model Manager shouldn't need to know exactly which Comparators it needs
31 (commented on others PR)
The three comparators should probably declared as static constants within the SortCommand
class itself?
32 (commented on others PR)
This should probably be done in the SortCommand class itself. execute
chooses the appropriate Comparator in the execute command to pass to ModelManager
.
33 (commented on others PR)
Does each class really need to know the COMMAND_TYPE
string? It seems like it would be better to just have the AddressBookParser store the main COMMAND_TYPE
string variants. Either that, or these classes should be taking the AddressBookParser's COMMAND_TYPE
definition. Because right now, to change the COMMAND_TYPE
string, every single file has to be edited
34 (commented on others PR)
And it seems that the COMMAND_TYPE
String is largely not used except to reconstruct the equivalent user input
35 (commented on others PR)
I would suggest something like -c
and -e
instead of /c
and /e
as I believe we should differentiate field specifiers from object-type specifier. Especially since add /c n/some name
looks kind of strange
36 (commented on others PR)
My suggestion was actually to not have this at all. But the enum-type would probably be the second best alternative as both AddressBookParser
and the relevant commands will depend on the String specified in the enum-type. Because as is right now, the current implementation is the equivalent of the cyclic dependency you mentioned, just not strictly coded in. If you change AddressBookParser
's string to detect Contact
-type commands, then you'll still have to change those within each Contact
-type command class.
If you're removing references to the Command-type string inside the Command classes themselves, then the reconstruction of user input tests have to be moved to AddressBookParserTest
instead. The individual Command-types will handle only their own share of input (everything that is after {command name} {contact/event}
37 (commented on others PR)
I think only one enumeration is sufficient (CommandType). Because 'add' is a unique identifier for the AddContactCommand, or at least it was. But I feel like the reason both AddressBookParser
and the individual command classes should not hold the contact identifier's specific implementation within them is that it is a property that they all share and depend on. So a separate enumeration would fit this.
I change my mind regarding holding references within the command classes themselves to their CommandType. It does make recreating the command for testing easier.
i think there is merit in having the test cases remain in their current classes as they are intended to test certain classes.
I don't think this is really relevant to the discussion because the individual command classes don't actually use their own command word and command type for testing. Only AddressBookParserTest
uses them to recreate it.
38 (commented on others PR)
specifically, i believe it should be
public static final String COMMAND_WORD = CommandWord.SORT.toString();
public static final String COMMAND_TYPE = CommandType.EVENT.toString();
39 (commented on others PR)
would it be possible to add the 3rd line into a separate branch to continue working on? as you have mentioned that it is not quite implemented yet. So we should merge only things that fully work to master
40 (commented on others PR)
Related to the above comment, to add this to a separate branch and subsequent PR so it is obvious to us what the changes are in the future PR.
41 (commented on others PR)
although i think it would be better to have the detection of invalid inputs handled in SortEventCommandParser.parse.
the SortEventCommandParser.parse
is already implemented. But I do agree with the suggestion regarding the default branch. I think it is in-line with defensive programming to reserve the default block to throw an exception instead in order to protect others who might be using the code.
42 (commented on others PR)
This comparator does not seem to match the description specified in the indexMessage(Index)
and MESSAGE_USAGE
. This seems to compare the number of tag
s instead of the number of participants.
43 (commented on others PR)
This doesn't seem to have any indication of the actual number of participants though? It seems to mostly just compare the tagName string-wise. To get the actual number of participants from each tag, I believe you need to use the model.getPersonsWithTag(Tag)
method to get the actual Set>Person>
44 (commented on others PR)
but tags are not the same thing as participants?
Also the comparison itself seems kind of strange. If o1 has 5 tags and o2 has 10 tags, this falls under the last branch which compares only the first name of the first tag found in the set. Also, I believe this is prone to changing as Sets do not have a well-defined order.
45 (commented on others PR)
I was under the impression Events would hold a Set>Person>
(added without any specific tagging) as well as a Set>Tag>
(of groups of participants identified by the tags). The total number of participants would then be a conjunction of all the participants found from the Set>Person>
and each Set>Person>
belonging to each Tag
.
46 (commented on others PR)
I believe this is a typo
47 (commented on others PR)
It seems to me that this comparator has some issues. In particular, the tags are actually stored in Java's Set
which has no guarantee of order preservation. So this could result in different comparator results on different calls of the compare method.
48 (commented on others PR)
I believe this might be related to the same Comparator in SortContactCommand
49 (commented on others PR)
Additionally, consider creating a PersonsComparator
class which stores all these comparators as public static constants so that both sort commands can refer to the same Comparator
object.
50 (commented on others PR)
consider using case 1: return NAME_COMPATOR;...
and throw a CommandException
for the default branch. This can potentially safeguard the code from misuse by other developers.
51 (commented on others PR)
Will this fail if a sort is performed on an empty Athena? Perhaps, it should instead just not do anything if the list size is 0.
52 (commented on others PR)
I believe the name of the method would be more appropriate as something like permSortContacts
or permSortPersons
as we will eventually need to remove instances of 'addressbook' within the code. Additionally, I believe the argument name would be more appropriate as something like comparator
as chooseComparator
sounds more like a method name.
53 (commented on others PR)
Would be nice to include test cases that check against the permanently saved file to see if using the command changes it.
54 (commented on others PR)
Is there a guarantee that the first tag being displayed in the GUI is the same as the first tag found in the set.iterator()
?
On a related note, I wonder if this comparator is necessary because it seems quite arbitrary. I was going to suggest perhaps some sort of way to request sorting in the reverse order, so the name comparison would put Z at the front etc. In this case, I think a comparator that allows sorting by number of tags might fit this better. Though I am unsure how this might be useful as well.
55 (commented on others PR)
Do reflect these changes within the origin SortContactCommand as well. Thanks!
56 (commented on others PR)
There is an additional '9' here. Also consider leaving a line between the class declaration and the first javadocs
57 (commented on others PR)
Consider changing the description to be something more explicit like: "Permanently sorts and edits the underlying save person-list save file" to clearly say that this changes the save file.
Also consider changing the argument name to just comparator
instead of chooseComparator
58 (commented on others PR)
This internalList assertion seems slightly problematic. Given an invalid json save, the json save would be wiped out and replaced with an empty json save. This will create an internalList with size 0 which seems common enough to not warrant an assert. Perhaps a simple assert c != null
would suffice.
59 (commented on others PR)
"A window similar to the one below should..." instead of "The GUI similar to the below should..."
60 (commented on others PR)
ContactTagIntegrationManager
has a method for deleting a tag and all contacts with the tag. I think it's called deleteTagAndDirectContacts
method that does that. I think you should use that instead as it properly preserves the tag relations in the tagTree
as well. Can implement it in Model
61 (commented on others PR)
If it can't throw, the method should not have a throws keyword. Any other method that uses this are forced to implement catching the exceptions or throwing them again. Which is not the same as "this method cannot throw a CommandException or a ParseException, handling can be ignored".
you realise that any command that uses execute
has to either catch and deal with a CommandException
and ParseException
or it has to throws
it as well?
62 (commented on others PR)
Also, it would be really helpful to say why something isn't a good implementation instead of brushing it aside as one.
63 (commented on others PR)
I don't think this is quite right. More specifically, the term used here should be Command Line Interface.
64 (commented on others PR)
i second this
65 (commented on others PR)
I second this.
contact at the specified
INDEX
is more precise as it denotes that we are referring to the contact instance occupying that INDEX
at the moment.
66 (commented on others PR)
same as above
67 (commented on others PR)
This does not seem to follow the general example format of other commands. The format usually goes as
"{command}
Sorts all currently ... " starting with a capitalized verb
68 (commented on others PR)
This does not seem to follow the general example format of other commands. The format usually goes as
"{command}
Sorts all currently ... " starting with a capitalized verb
69 (commented on others PR)
In markdown, the difference is significantly more prominent. I do not think this is a necessary change.
70 (commented on others PR)
In the context of markdown, the change does not make any difference.
71 (commented on others PR)
"There is no need to save manually." is more succinct and less awkward than "There is no need to manually save the data.". The inherent meaning is the same.
72 (commented on others PR)
I would argue that where the save files are located should come before what the save files are. Would like to hear your thoughts on this.
73 (commented on others PR)
I believe only Tag
s have the view
command. Event
s might have one in the future but it is not implemented yet.
74 (commented on others PR)
perhaps this should return a list of accepted CommandType
s? Otherwise, I think the name is slightly misleading. Maybe something like getAcceptedTypesString() {..}
75 (commented on others PR)
Besides the MESSAGE_INVALID_SEARCH_FIELD
, the rest seem to overlap with the ViewTagCommand
. can consider abstracting these out to a general TagUtil
class.
76 (commented on others PR)
I believe this method is also shared in ViewTagCommand
. Can consider abstracting it out as well
77 (commented on others PR)
Pretty daring to change the sample test tree. But I guess maybe the original one might not have been comprehensive enough.
78 (commented on others PR)
great catch!
79 (commented on others PR)
The 'This' is not necessary here. Adding it here would only confuse the reader as 'This' could refer to multiple things in this context.
80 (commented on others PR)
Please leave the original. If you want to change this, it would be more precise to say 'Tag removal is done before tag addition'.
81 (commented on others PR)
I think we should default to the one without a space.
82 (commented on others PR)
'Indices' instead of 'indexes'
83 (commented on others PR)
My point is that adding 'This' is a language error. Adding 'This command' is redundant because the entire statement is about the command.
84 (commented on others PR)
'This command' is really not necessary. It is implied at the start of both sentences
85 (commented on own PR)
As it turns out, private comment Javadocs are not really standardised throughout the code. I think this is not a big issue
86 (commented on own PR)
it is a runtime exception. I do not believe it is necessary. Especially since there should be no reason why this exception occurs at all if Person
changes are done through AddressBook.
87 (commented on own PR)
Is there a difference in wrapping in an Optional? It would still be
Optional.ofNullable(tagPersonSetMap.get(tag)).orElse(Set.of())
which I don't think is much better
88 (commented on own PR)
Ok, as it turns out it's only one instance from the original. The description of the getFilteredList()
from the Model
interface. I'll change it
89 (commented on own PR)
This was supposed to be 'contains only tag-person mappings from the persons
list.' The original message was not written very well. Thanks!
90 (commented on own PR)
yes, thank you very much.
91 (commented on own PR)
or would be appropriate, thanks for pointing this out
92 (commented on own PR)
I think the individual behaviors have to be explicit. In this case, the upcoming editTagCommand
will specify tags to add and tags to remove as two separate tag sets. As such, I wanted to be clear here on the behavior of the method for each case.
93 (commented on own PR)
The documentation of these methods' purpose is in the TagTree
abstract class. I wanted to leave open the implementing class in the event someone could come up with a better underlying system for it. Admittedly though, many classes do depend on associate with TagTree
and as such, depend on TagTreeImpl
anyway.
94 (commented on own PR)
i am genuinely unsure about this. Perhaps you could decide and tell us? I do believe the original JsonAddressBook
class uses json instead of JSON.
95 (commented on own PR)
yep. the requirement for a tag
to exist is that it must have at least one contact with the tag
or the tag
has at least one child-tag.
96 (commented on own PR)
tagtree
handles tag
to tag
relations. addressbook
handles tag
to person
relations. As such, one can be in one without being in the other as the requirement to exist in either is that it has at least one object assigned to it.
97 (commented on own PR)
I believe so. This is for when someone performs ctrl+f "parent-tag". I could restate the same thing for "parent-tag" but I think the two are close enough in proximity unlike in the glossary in UG.
98 (commented on own PR)
instead of using "and also", i changed it to "..., then ..." which is closer to the actual implementation anyway.
99 (commented on own PR)
I changed it to "if available" to say that not every method related to tags and contacts is inside this class. Only those that might affect both at once. Some other methods will still need to be done with AddressBook
and TagTree
.
100 (commented on own PR)
I believe it's "the" set. I thought about this and settled for "the". "a" seems to imply that there exists multiple sets containing different number of Person
objects that have the tag.
101 (commented on own PR)
Well, I would argue that ModelManager
is a Facade class. Having two methods implies that ModelManager
is now handling logic that should be implemented elsewhere.
Also, as mentioned in the PR, deletePerson
does in fact affect Tag
s as well. It could possibly remove a Person
that has Tag1
. And Tag1
might have only one contact which is this Person
. This causes Tag1
to be deleted. If Tag2
is a parent-tag that only has Tag1
as its only child tag and no direct contacts, then Tag2
should also be deleted. Thus, I believe this, and the other edited methods should be implemented in ContactTagIntegrationManager
. Given a choice, I would have refactored the entire AddressBook
and TagTree
into ContactTagIntegrationManager
but it seems a little too late to do that.
This was the cause of a bug that I found that I believe is the cause of the issue attached to this PR.
102 (commented on own PR)
Thanks for pointing it out anyway. Appreciate the review!
103 (commented on own PR)
good point, thanks
104 (other comment)
Issue has been fixed! Thanks for the notification. I ticked the 'Require status checks to pass before merging' option without realizing that I had to specify which CIs I wanted passed before being able to merge. This has been addressed and our CI is now passing.
105 (other comment)
Is the sort method supposed to sort the current shown list? Or is it supposed to sort the full list of contacts before showing it? Because the former would be much easier to implement and I believe is what we intended to do originally? There is the model.getFilteredPersonList()
method which gives the last shown list.
Also, I agree with the Hendey's comment about the sortPerson method. I do not think that all the model classes need to have such a method.
106 (other comment)
Please settle the merge conflicts by including both methods for the two different conflicts. Then it'll be good to merge. Thanks!
107 (other comment)
Looks good to me. I'm just wondering how the TagManager class helps to keep track of the participants (persons) of a particular event without implementing necessary changes in Calendar class or respective events class?
This was done mostly with the context of supporting Bangyi's delete by tag and add to events by tag. Shouldn't the Event
's class have references to the Tag
s it contains similar to the Person
s it contains? Anyway I believe someone else is implementing this. This was just to help support that.
108 (other comment)
I don't really agree with this. I believe that we should limit the options the user has in this case. Otherwise, suppose a user creates a tag Cs2103
and starts assigning things to it. This tag will be permanently stuck at Cs2103
and unless we give them a new command to change the specification of the tag name to either CS2103
or cs2103
.
Not to say that forcing upper-case is definitely a better solution than what you suggested, but I do feel that enforcing capitalization is a more agreeable policy as opposed to someone not realizing that they can't change the capitalization of their tags after adding hundreds of contacts under the tag.
109 (other comment)
Upon further deliberation, I realize that an edit tag name-type command is inevitable. As such, this should cover whatever I was concerned with initially. Thanks for the suggestion!
110 (other comment)
On further further deliberation, I realize there is still a necessity to standardize the capitalization of tags. When two separate Persons are added with tags cs2103
and CS2103
, should a lookup of the tag produce both? Otherwise, if yes then why not standardise how the tags themselves look. If no, then I personally feel that it kind of beats the point of implementing search by tags to begin with.
111 (other comment)
I don't think this is the way to do it. We should probably refactor and separate it out into separate interfaces like CalendarModel
, ContactModel
and a final CombinedModel
so that we do not need to keep adding to the AddContactCommandIntegrationTest
model stub and keep having to change other test cases
112 (other comment)
Hi, could you clarify the purpose of FauxPerson
and why you chose to use it instead of a direct association with Person
?
113 (other comment)
The bug description isn't very helpful.
I'm not saying that there isn't a bug but perhaps doing a list -t
to show us if there are any left over tags that were not properly deleted from related interactions. And a view -t t/family
would be helpful too.
114 (other comment)
This seems trivial. The idea is that if and when we add more terms into the glossary, these definitions will be separated from each other. We can still click on the glossary links to view the related definitions.
Also, I can't believe this person put severity.Medium for this.
115 (other comment)
This also seems trivial. Anyone feels that we should implement unique email address?
116 (other comment)
As a team, we intended for tagging to provided extended functionality for experienced users. Perhaps, we could add that to the user guide to specify that tag-level commands are only relevant for experienced users who are dealing with greater number of contacts.
117 (other comment)
The point of the list command was to give a brief summary of what tags exist and who is under which tag. An issue already exists that if they were too many contacts under 1 tag, it would fill up the panel. As such, we reduced the information present to only what is immediately relevant and required, with the supertag
notation denoting that a tag in fact has child-tags.
The view -t
command already exists to view full details of a tag including all child-tags, all other sub-tags, and all related contacts.
Additionally, regarding the last point, it was an explicit choice to not do that. The idea being that there exists groups of people of a parent-tag that are not part of any of the child-tag groups. We did not want deleting a tag to suddenly add 20 child-tags to a contact that once had the tag.
The reconnection of deleted tags was more a way to preserve the top-down hierarchy. As deleting a tag in the middle of the tree should not immediately disconnect all child tags as they are still technically a sub-tag.
118 (other comment)
Just a comment regarding single responsibility principle
My understanding of this is that ModelManager
class should definitely not handle the logic of both removing the Person
and editing the TagTree
.
@yongping827
(84 comments)1 (commented on others PR)
Tertiary student
instead of Tertiary students
2 (commented on others PR)
expenses/incomes
instead of expenses/income
3 (commented on others PR)
Manage
instead of manage
4 (commented on others PR)
* Responsibilities: Scheduling and Tracking, User Interface
5 (commented on others PR)
/**
* Parses input arguments and creates a new AddExpenseCommand object.
*/
6 (commented on others PR)
Add the full stop. The corresponding comment in AddIncomeCommandParser
should have a full stop as well.
7 (commented on others PR)
assertParseFailure(parser, "1" + INVALID_TITLE_DESC, Title.MESSAGE_CONSTRAINTS); // invalid title
8 (commented on others PR)
* @throws ParseException If the user input does not conform to the expected format.
9 (commented on others PR)
Either
INCOMES,
EXPENSES,
or
INCOME,
EXPENSE,
10 (commented on others PR)
public void parseCommand_unrecognizedInputWhenOverviewTab_throwsParseException() {
Also in other similar places.
11 (commented on others PR)
Is it possible to not hard-code the value 7
? Same as in ListIncomeCommandTest
and ListTransactionCommandTest
12 (commented on others PR)
assertEquals(model.getFilteredExpenseList().size(), getTypicalExpenses().size());
This together with an additional import statement:
import static ay2021s1_cs2103_w16_3.finesse.testutil.TypicalTransactions.getTypicalExpenses;
13 (commented on others PR)
// ensures that outOfBoundIndex is still within bounds of finance tracker list of expenses
14 (commented on others PR)
// ensures that outOfBoundIndex is still within bounds of finance tracker list of incomes
15 (commented on others PR)
Line 73
// ensures that outOfBoundIndex is still within bounds of finance tracker list of transactions
16 (commented on others PR)
- Add a class to store frequent expenses/incomes (such frequent expenses/incomes will be in a separate list)
17 (commented on others PR)
- In Analytics, make use of `YearMonth` instead of `LocalDate`
18 (commented on others PR)
- Investigate feasibility of UI testing. If not viable, then remove it from the testing suite.
19 (commented on others PR)
Expense editedBubbleTea = new TransactionBuilder(BUBBLE_TEA)
20 (commented on others PR)
public static final Expense TUITION_FEES_2 = new TransactionBuilder().withTitle("Tuition Fees")
21 (commented on others PR)
public static final Income TEACHING_ASSISTANT_2 = new TransactionBuilder().withTitle("Teaching Assistant")
22 (commented on others PR)
public static final Expense BUBBLE_TEA_2 = new TransactionBuilder().withTitle(VALID_TITLE_BUBBLE_TEA)
23 (commented on others PR)
public static final Income INTERNSHIP_2 = new TransactionBuilder().withTitle(VALID_TITLE_INTERNSHIP)
24 (commented on others PR)
assert (transactionToEdit instanceof Income);
return new Income(updatedTitle, updatedAmount, updatedDate, updatedCategories);
Since the previous assertion was removed, maybe an assertion here might be necessary? Same for similar occurrences.
25 (commented on others PR)
assertTrue(transactionToEdit instanceof Income);
editedTransaction = editedTransactionBuilder.buildIncome();
26 (commented on others PR)
assertTrue(lastTransaction instanceof Income);
editedTransaction = editedTransactionBuilder.buildIncome();
27 (commented on others PR)
assertTrue(transactionInFilteredList instanceof Income);
editedTransaction = editedTransactionBuilder.buildIncome();
28 (commented on others PR)
* On app launch: Initializing the components in the correct sequence, and connecting them to each other.
29 (commented on others PR)
public static final String COMMAND_WORD = "convert-frequent-expense";
30 (commented on others PR)
public static final String COMMAND_WORD = "delete-frequent-expense";
31 (commented on others PR)
* Deletes a frequent expense identified using its displayed index from the finance tracker.
32 (commented on others PR)
Remove unnecessary newlines.
33 (commented on others PR)
public static final String COMMAND_WORD = "edit-frequent-expense";
34 (commented on others PR)
Should FrequentExpense
be a subtype of Expense
? Consider the fact that they appear in different lists, and are treated very differently. Moreover a method to convert a FrequentExpense
to an Expense
is implemented .Also note that FrequentExpense
should not have a Date
field, since its date is undefined. Only the Expense
that it converts to should have a date.
35 (commented on others PR)
public class FrequentExpenseList implements Iterable<FrequentExpense> {
This follows from the class TransactionList
and the deprecated ExpenseList
and IncomeList
. This will account for the method iterator
in line 82.
36 (commented on others PR)
With reference to the comment on line 11 in FrequenceExpense
, date should not be present.
37 (commented on others PR)
* Constructs a {@code JsonAdaptedFrequentExpense} with the given frequent expense details.
38 (commented on others PR)
* @throws IllegalValueException if there were any data constraints violated in the adapted frequent expense.
39 (commented on others PR)
These lines are repeated in lines 106-107.
40 (commented on others PR)
Remove extra newline.
41 (commented on others PR)
This class seems debatable. Note that TransactionBuilder
was used to cover both Expense
and Income
. Should the same be done here? i.e. FrequentTransactionBuilder
to cover FrequentExpense
and the upcoming FrequentIncome
.
42 (commented on others PR)
Similar to the issue in FrequentExpenseBuilder
, should a class TypicalFrequentTransactions
cover for both FrequentExpense
and FrequentIncome
?
43 (commented on others PR)
* Returns an unmodifiable view of the frequent expense list.
Same with similar Javadocs in this class.
44 (commented on others PR)
This method seems to be taken from getFilteredExpenseList
and getFilteredIncomeList
, which are found to be buggy. Please modify it to be an ordinary getter.
45 (commented on others PR)
/** Returns an unmodifiable view of the filtered frequent expense list. */
46 (commented on others PR)
"The transaction index provided is invalid.";
47 (commented on others PR)
Is it possible to just have equals
since these two methods are exactly the same?
Also, for the sake of consistency, use:
getTitle().equals(otherFrequentExpense.getTitle())
Similar for other places.
48 (commented on others PR)
Unnecessary use of super
.
49 (commented on others PR)
This method is repeated in AddExpenseCommandParser
and AddIncomeCommandParser
. Perhaps in a future PR this method could be placed somewhere else, then imported into classes that require it?
50 (commented on others PR)
Remove unnecessary newlines.
51 (commented on others PR)
These Index
objects are repeated from those above. I would suggest reusing those above rather than create multiple repeats of the exact same object. Perhaps maybe rename the three indexes above to something more general, like INDEX_FIRST
and so on.
52 (commented on others PR)
A more appropriate name should be used.
53 (commented on others PR)
* Converts this Jackson-friendly adapted frequent expense object into the model's {@code FrequentExpense} object.
54 (commented on others PR)
FrequentExpense validFrequentExpense = new FrequentTransactionBuilder().buildFrequentExpense();
55 (commented on others PR)
Undescriptive variable name
56 (commented on others PR)
Undescriptive variable name
57 (commented on others PR)
Undescriptive variable name
58 (commented on others PR)
There is a similar method in TypicalTransactions
. Moreover, the FinanceTracker
object returned by this method has no transactions while the other one in TypicalTransactions
has no frequent expenses. Consider putting these two classes together so that getTypicalFinanceTracker
will return a FinanceTracker
object that has at least one item in each of its lists.
59 (commented on others PR)
.iml
files should not be committed. Also, there should not be an .iml
file here in the first place, unless you did something you were not supposed to do.
60 (commented on others PR)
return internalFrequentIncomeList.iterator();
61 (commented on others PR)
FinanceTracker sampleFt = new FinanceTracker();
62 (commented on others PR)
@JsonProperty("categories") List<JsonAdaptedCategory> categories) {
For some reason checkstyle accepts indentation level 8, though according to the textbook in this case it should be indentation level 12.
63 (commented on others PR)
@JsonProperty("categories") List<JsonAdaptedCategory> categories) {
64 (commented on others PR)
@JsonProperty("incomes") List<JsonAdaptedIncome> incomes,
@JsonProperty("frequentExpenses") List<JsonAdaptedFrequentExpense>
Follow this indentation for the lines below as well.
65 (commented on others PR)
* Returns an unmodifiable view of the list of {@code FrequentExpense} backed by the internal frequent expense list of
66 (commented on others PR)
* Returns an unmodifiable view of the list of {@code FrequentIncome} backed by the internal frequent income list of
67 (commented on others PR)
Remove unused field.
68 (commented on others PR)
Shouldn't this test mirror FrequentExpenseListTest
? There are less tests here than in FrequentExpenseListTest
.
69 (commented on others PR)
public <T extends Transaction> FrequentTransactionBuilder(FrequentTransaction<T> frequentTransactionToCopy) {
title = frequentTransactionToCopy.getTitle();
amount = frequentTransactionToCopy.getAmount();
categories = new HashSet<>(frequentTransactionToCopy.getCategories());
}
70 (commented on others PR)
Missing Javadocs
71 (commented on others PR)
Not all methods from FrequentExpenseList
are mirrored here.
72 (commented on others PR)
* Edit filtered frequent expense list where index is larger than size of filtered frequent expense list,
73 (commented on others PR)
* Edit filtered frequent income list where index is larger than size of filtered frequent income list,
74 (commented on others PR)
Use a more descriptive variable name.
75 (commented on others PR)
EditFrequentTransactionDescriptor editedFrequentTransactionDescriptor =
76 (commented on others PR)
Not all tests in FrequentExpenseListTest
are mirrored here.
77 (commented on others PR)
return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd), Tab.EXPENSES);
Same for AddFrequentIncomeCommand
as well.
This will remove the need to have an Index
field to specify which Tab
to switch to.
78 (commented on others PR)
.anyMatch(keyphrase -> StringUtil.containsIgnoreCase(transaction.getTitle().toString(), keyphrase));
79 (commented on others PR)
Remove duplicate code. Same for other places within this class.
80 (commented on others PR)
Missing Javadocs
81 (commented on others PR)
Model expectedModel) {
This should be the more appropriate indentation level, according to the standard. Ignore the indentation IntelliJ gives you.
82 (commented on others PR)
Model expectedModel, boolean isCalculateBudgetInfo) {
83 (commented on others PR)
Model expectedModel, boolean isCalculateBudgetInfo, Tab tabToSwitchTo) {
84 (commented on others PR)
Redundant field.
85 (commented on own PR)
Glossary terms shall remain unformatted. Edits will be made.
86 (commented on own PR)
Yes, it will remain unchanged.
87 (commented on own PR)
Agree. This will be handled in a future PR.
88 (commented on own PR)
Removing this comment fails checkstyle.
89 (other comment)
PR has been recorded by the grading script.
90 (other comment)
ModelManager::filteredTransactions
was ideally supposed to contain both expenses and incomes from FinanceTracker::expenses
and FinanceTracker::incomes
, through the methods FinanceTracker::getExpenseList
and FinanceTracker::getExpenseList
while completely omitting FinanceTracker::transactions
. Thus, ModelManager
would have 3 lists while FinanceTracker
would have 2.
However, the implementation of the class FilteredList
is that one of its fields (source
) is an ObservableList
object, and constructing a FilteredList
as such:
ObservableList<E> observableList = FXCollections.observableArrayList()
FilteredList<E> filteredList = new FilteredList(observableList);
would result in source = observableList
.
In essence, a FilteredList
object needs to keep track of an ObservableList
object.
Thus, filteredTransactions
needs to keep track of its own ObservableList
object, and cannot track both expenses
and incomes
together. Therefore, FinanceTracker::transactions
cannot be removed, and neither can the class TransactionList
.
91 (other comment)
Possible solutions:
Add a switch statement that refreshes the tab after every command.
Modify CommandResult
to indicate any changes.
Make use of listener, somehow.
Add additional getters for the lists or for the transactions based on index.
92 (other comment)
FinanceTracker::resetData
does not account for frequent incomes. This stems from FrequentIncomeList
class missing some methods. Reference FrequentExpenseList
for these missing methods. From there, FinanceTracker
and ModelManager
should have similar methods as well.
@chiamyunqing
(81 comments)1 (commented on others PR)
Can consider renaming function to execute_invalidPersonName... instead of Index since we are editing by name now.
2 (commented on others PR)
Just a side note, can consider "editPatient" as command word in case we want to have an "editTask" command in future. Up to you! 😃
3 (commented on others PR)
Good use of Optional here!
4 (commented on others PR)
Typo @code instead of @cod
5 (commented on others PR)
I like how you included this test!
6 (commented on others PR)
Your implementation of editpatient supports editing multiple fields in 1 command. Can consider adding an example of this. E.g. editpatient Alex Yeoh c/Add comment d/20200303-20200315
7 (commented on others PR)
In the example, should be editpatient not edit haha >>
8 (commented on others PR)
Perhaps you want to consider changing the message to "Search for patients who fulfill the given criteria in Covigent." since the output may be a list of patients.
9 (commented on others PR)
Personally, I think including an example for search via temperature range may be better since this may be more difficult for users to understand how to use.
10 (commented on others PR)
Actually you can remove the isPersonFound attribute totally. if (personName.equals(nameToSearch) can just return new CommandResult(String.format(MESSAGE_SEARCH_PERSON_SUCCESS, personFound)) directly. If the execution of code proceeds beyond this for loop, can just throw new CommandException outside. Just a suggestion to keep your code shorter 😃
11 (commented on others PR)
Good test coverage!
12 (commented on others PR)
Good to include an attribute string for message usage (similar to the other commands)
13 (commented on others PR)
Will be good to include a MESSAGE_SUCCESS attribute or something similar for the string " rooms are added in a hotel" (can refer to the other command classes to see what I mean).
E.g. in addPatientCommand your have the attribute String MESSAGE_SUCCESS = "New person added: %1$s";
So what you return is return new CommandResult(String.format(MESSAGE_SUCCESS, numPersonToAdd)) instead of the hardcoded string.
14 (commented on others PR)
Just to clarify, this exception is thrown if the user did not call the command addnumberofrooms right?
15 (commented on others PR)
This attribute was what I was referring to for MESSAGE_USAGE earlier. Perhaps you may need to shift this attribute to AddNumberOfRoomsCommand class instead to keep it consistent with the formatting of other command classes.
16 (commented on others PR)
Ok actually I am kind of confused of the flow and purpose of the addNumberOfRooms command. I thought for first time user we will get them to initialise the number of rooms and that will be fixed through out the usage of the app. So addNumberOfRooms in this case should be for initialisation? It doesn't make sense if halfway throughout the usage of the app I suddenly call addNumberOfRooms command again unless I built more rooms for my facility. 😕
17 (commented on others PR)
Actually why do you need to add code for room under AddPatientCommand?
18 (commented on others PR)
Just curious, why did you choose to use PriorityQueue instead of something simpler like ArrayList? 😛
19 (commented on others PR)
Good test coverage for Room!
20 (commented on others PR)
Remember to delete this!
21 (commented on others PR)
This will be handled by allocate person command no worries.
22 (commented on others PR)
Nice!
23 (commented on others PR)
If we have to convert to priority queue, do you guys think if it's better to use array list directly instead of priority queue for room list?
24 (commented on others PR)
Right, that's true!
25 (commented on others PR)
Should be after search patient command but it's okay for now. We will do a massive UG clean up in future as a group 😃
26 (commented on others PR)
Will be starting with an empty "room list" or something instead of AddressBook. Just to clean up traces of address book from the code haha.
27 (commented on others PR)
I agree with this too. There may be errors if we forget to update this variable when needed.
28 (commented on others PR)
Neat class that adheres to format of the existing codebase!
29 (commented on others PR)
I was just wondering why you need to have a date time created attribute for task 😛
30 (commented on others PR)
Neat I like this!
31 (commented on others PR)
Good test coverage.
32 (commented on others PR)
As in I meant the attribute "DateTimeCreated" haha, like why do you need to know when the task was created 😛 . The tracking of tasks due date is by attribute "DateTimeDue".
33 (commented on others PR)
Sounds good!
34 (commented on others PR)
Thanks for spotting this :X
35 (commented on others PR)
Good! We will need to add test codes for patient addition for editRoom command too.
36 (commented on others PR)
Very neat!
37 (commented on others PR)
Do you think it is better to write "Lists all the rooms in the application." instead? I got confused with the word 'available' thinking it meant like empty rooms without patients.
38 (commented on others PR)
Do you want to standardise the MESSAGE_SUCCESS with that of list patient command? Like "Listed all rooms."
39 (commented on others PR)
To add on, can even add a "Please initialise the number of rooms using initRooms command".
40 (commented on others PR)
Allocates*, edits* and existing*. Can change only when we do our massive UG clean up also.
41 (commented on others PR)
Removes*. Comprehensive examples given here!
42 (commented on others PR)
Do you think we should put this function under EditRoomCommand class or should it be the responsibility of RoomList class?
43 (commented on others PR)
Nice check! Thank you for adding this 😃
44 (commented on others PR)
I am not sure if it is a good idea to make this function static and expose it to the outer world, considering how you also need to call the getRoomList() function from the model to get the ObservableList>Room> as your parameter for this method so the roomList will be from your existing RoomList class anyway 😕. Just a thought to consider!
45 (commented on others PR)
Very comprehensive test cases in this class. Well done!
46 (commented on others PR)
Just curious why we need this toString() method. Is it for testing haha? But can keep it anyway.
47 (commented on others PR)
Hmm I was thinking of having the function "isPatientAssignedARoom" in the Model interface instead. Since the Model contains roomList and the patientRecords, Model knowing whether isPatientAssignedARoom kind of makes sense (essentially it will call on another isPatientAssignedARoom method in the roomList class to get the result).
I think the key here is that the command should only know of Model and should not be accessing roomList directly. (like the Law of Demeter that we learn for this week) That's what I intend to improve for my deletePatientCommand because I also accessed the patient list directly from model, but I think it's not very well designed since there's a deletePatient command directly from model (original code from address book).
48 (commented on others PR)
Yep no worries!
49 (commented on others PR)
Typo: "tasks with"
50 (commented on others PR)
Can consider "Searches all tasks before the given date."
51 (commented on others PR)
Searches task(s)* -> I think the output may be more than 1 task right?
52 (commented on others PR)
MESSAGE_SEARCH_TASK_SUCCESS
53 (commented on others PR)
I think you will have to display the output in the "Tasks" tab instead. So you shouldn't be returning the result in the bot's response.
54 (commented on others PR)
Good!
55 (commented on others PR)
Can consider adding some success test cases and check if the output tasks are as intended.
56 (commented on others PR)
Is it better to use the prefix_room_number from RoomCliSyntax instead since room number is an attribute of room?
57 (commented on others PR)
Seems like success cases are covered in equals() method test.
58 (commented on others PR)
Comparing patient to null is not very elegant, maybe check if roomObservableList.get(i).isOccupied() instead? (presumably isOccupied = true means patient != null)
59 (commented on others PR)
Thanks for removing the duplicated messages!
60 (commented on others PR)
Actually now I'm wondering if you do your assertion early on in the constructor, then the app will directly crash and will never reach here :X
61 (commented on others PR)
Same issue, if you assert in constructor, will this Message Invalid room number be received by user?
62 (commented on others PR)
If the task to delete is null, the app will just crash?
63 (commented on others PR)
Will this crash the app?
64 (commented on others PR)
Should we change the Message_Duplicate_Room to make it clearer? I believe this message is sent when the patient is already allocated to the room and the user calls the command to allocate the same patient to the room again. Maybe the message should be "The patient is already allocated to this room." instead of "This room already exists..." to make it clearer?
65 (commented on others PR)
Do we still need this case since previously it was meant for change room number?
66 (commented on others PR)
Same for this, do we still need this case since previously it was meant for change room number?
67 (commented on others PR)
Should we use the PREFIX_PATIENT_NAME in PatientCliSyntax instead of RoomCliSyntax?
68 (commented on others PR)
I personally don't really like this method because it's kind of weird to call this method in the command classes. But I'm not sure how else to go about it either 😕
69 (commented on others PR)
I think this line should be added back cos it's meant for the next function removePatientFromRoom()
70 (commented on others PR)
and this line should be removed.
71 (commented on others PR)
Mmm just wondering what this function and occupiedRooms() function is for? Do we need to know the list of empty and occupied rooms? Unless it's to find the first unoccupied room which I think your priority queue will have been able to find?
72 (commented on others PR)
Can remove this System.out.println()
73 (commented on others PR)
I think you may need to change this json file back to the original one since this json file should follow the rooms set in getTypicalRoom() from the TypicalRooms class. The getTypicalRoom() function is being used by other test cases for task and patient commands which heavily depends on the order in the room list so I am not sure if changing this file will propagate errors to those test cases for tasks and patients. 😕
74 (commented on others PR)
I think it's fine to have so few rooms in the test cases since we are just testing that the functions work as expected rather than testing if the app works on a large scale. What do you think?
75 (commented on others PR)
Remove the System.out.println?
76 (commented on others PR)
Good use of logger here.
77 (commented on others PR)
I think the command is "initroom" and not "addRooms" anymore?
78 (commented on others PR)
Do we still need this for listroom since our implementation for listroom and listpatient ignores the excess words?
79 (commented on others PR)
I was thinking if we should reduce the maximum number of rooms further since our target audience is small boutique hotels?
80 (commented on others PR)
Not sure if you still need these 2 lines of code since you commented out, but if you don't need it anymore, don't forget to delete it!
81 (commented on others PR)
Good!
82 (commented on own PR)
Sounds good. I've changed the names to AddPatient instead of AddPerson for better clarity. However, if we are going to implement Staff, maybe can extend from Human instead of Person because there will be too many changes required to replace Person to Patient.
83 (commented on own PR)
There's a possibility that comment may be a null object (since it's an optional field) and .trim() method exists for String class so it wouldn't work if comment is a null object 😛
84 (commented on own PR)
That's a very good suggestion, will use this function in future! 👍
85 (commented on own PR)
I followed their existing format. 😛 Since checkstyle doesn't give error, I assume it's fine?
86 (commented on own PR)
Yes!
87 (commented on own PR)
Yep I will change to add patient instead!
88 (commented on own PR)
Thanks for pointing out!
89 (commented on own PR)
I think the temp should write but the age probably no need haha.
90 (commented on own PR)
Yes, good suggestion. We definitely should adhere to this in the next UG update!
91 (commented on own PR)
Yep, should take note of the standardisation in UG.
92 (commented on own PR)
I agree with Ming De I think we should stick to making sure patient does not have the same name. If we delete by index, in the case of 1000 entries, the user may have to scroll too much to find the patient (using searchpatient command doesn't show the index also 😕).
If we just ensure patient cannot have the same name, then all we need to change is the isSamePatient(...) function (to guard against duplicate patient being entered). If we need to check for the age and phone number identifiers, then we may need massive changes for deletepatient and editpatient command 😕.
Well, we can justify that the odds of patients having the same name is really very slim haha (https://www.quora.com/What-is-the-probability-of-two-people-having-the-same-name-and-also-living-in-the-same-city)
93 (commented on own PR)
Yep yep the search room command is incomplete as I've mentioned haha. The main thing in this PR is just refactoring.
94 (commented on own PR)
I think we will have to shift checkIfRoomPresent() to Model class also. But I will fix that in my next PR for SearchRoomCommand. The key for this PR is just refactoring.
95 (commented on own PR)
I will change all the empty line thing. Thanks for pointing out!
96 (commented on own PR)
Sure, I will change to "All patients are listed."
97 (commented on own PR)
I realised search room for now is just search by room number. So it only returns 1 room haha.
98 (commented on own PR)
Oh the whole populatePanel function is deleted haha so the logger is gone.
99 (commented on own PR)
Roger that sir.
100 (other comment)
I realised I should be making the pull request from my fork instead of editing directly in this repo for UG.
101 (other comment)
Incorporated with editRoom command.
102 (other comment)
Not sure why Java CI failed even though it passed on my end.
103 (other comment)
Can be closed.
104 (other comment)
Duplicated issue.
105 (other comment)
Bro that was spot on. Error was in the handleMouseClick
106 (other comment)
This issue will have been fixed since we added the step-by-step usage with step 1 being "navigate to the ____ tab".
107 (other comment)
We didn't mention that phone number must be 8 digits since we allow for international numbers too. Not an issue.
108 (other comment)
Updated the UG with 0 (inclusive) to 120 (exclusive). Not an issue now.
109 (other comment)
@raymondge I will fix this for my temperature side first then you check if it affects your temperature range. (by right, if I fix temperature already, you shouldn't need to do anything).
110 (other comment)
I think he was referring to the line "If the number of rooms is less than the number of patients error is thrown when decreasing the number of existing rooms." ?
111 (other comment)
For this, I think we need to state explicitly in the UG that if multiple same parameter inputs are included, we only take the first.
112 (other comment)
I will fix the temperature class first.
113 (other comment)
Since our target audience is small hotel owners, number of rooms shouldn't be that many. We should state clearly in UG that target audience is small boutique hotel owners.
114 (other comment)
Can only link up to max. 10 issues. Once this PR is closed, to close this following issues too : #208 #188 #193 #201 #158
115 (other comment)
Already mentioned in UG that duplicate names are not allowed.
116 (other comment)
Already mentioned in UG that duplicate names are not allowed.
117 (other comment)
Updated UG under Command Format section
118 (other comment)
@LeeMingDe I've already made the relevant changes. Let me know if you think the temperature message needs to be changed some more. If you think it's fine, can just close the issue.
119 (other comment)
Not a bug in my opinion. Still fulfils the functionality of listpatient and the presence/absence of those additional words will not affect the functionality.
120 (other comment)
Section has been updated in UG.
121 (other comment)
RoomPanel fixed
122 (other comment)
Will make this PR to master branch instead.
@JinHao-L
(81 comments)1 (commented on others PR)
Maybe the patients should be caps (for standardisation)
2 (commented on others PR)
I think there is a double spacing between Nuudle
and shows
3 (commented on others PR)
Would delete an appointment
be clearer?
4 (commented on others PR)
Would mark an appointment
be clearer?
5 (commented on others PR)
I think appointments
here should be singular?
6 (commented on others PR)
Maybe it will be better to use the specified appointment
?
7 (commented on others PR)
Seeing that appointment is dependent on the patient, should it be clear all appointment entries instead? What do you think?
8 (commented on others PR)
I think this should be person or nurse instead
9 (commented on others PR)
Should AssignLoaderBuilder be DateTimeLoaderBuilder instead?
Because there is no AssignLoader object.
10 (commented on others PR)
Should there be a closing square bracket?
11 (commented on others PR)
The boolean isAll
seems to be unused.
Maybe instead of using a boolean can consider using PREDICATE_SHOW_ALL_APPOINTMENTS
in Model.java then there is no change in the implementation
Lemme know what you think about this! 😄
12 (commented on others PR)
I think that he handled this under NuudleParser
but I think it would be better to do the argument checking in this file instead?
Maybe can try doing the isEmpty
check before tokenize
?
13 (commented on others PR)
Maybe can rephrase this to Mark the specified appointment as done
or Mark the appointment specified by the date and time as done
(more specific version).
Lemme know what you think! 😄
14 (commented on others PR)
I am not really sure if we should create an appointment without a patient for checking purpose. I made a PR to remove the optional field of Patient so an appointment cannot be made without a Patient (see #90)
Maybe for the filter
in line 60, can change it to check if an appointment has the same date and time? (hasDate
and hasTime
) Do you think this works?
15 (commented on others PR)
It seems wrong to use a nested class in AssignCommand for non-assign related command.
Should we abstract out the DateTimeLoader into a class on its own? Maybe this can be addressed in future PRs.
16 (commented on others PR)
editedPatient
should be editedAppointment
instead.
17 (commented on others PR)
For this can just add throw new AssertionError("This method should not be called.");
similar to above
18 (commented on others PR)
The check should probably be !target.startAtSameTime(editedAppointment) && hasOverlaps(editedAppointment)
instead. (If the edited version is different from the target, make sure that there is no overlap with the rest of the appointment.)
I think that the else {
part can also be removed so that the happy path is made more prominent. 😄
19 (commented on others PR)
This should still be AddressBook?
20 (commented on others PR)
This should still be AddressBook?
21 (commented on others PR)
Should it be Exiting Nuudle
instead
22 (commented on others PR)
Should it be Nuudle
instead?
23 (commented on others PR)
Should it be Nuudle
instead?
24 (commented on others PR)
Should it be Nuudle
instead?
25 (commented on others PR)
I think Updates all appointments with the given {@code Patient target} with the given {@code editedPatient}
would be better as it implies that multiple appointments will be updated.
26 (commented on others PR)
I think this is correct.
I believe that the check is if target
and editedAppointment
does not overlap, check to ensure that the editedAppointment
does not overlap with any other appointments.
If the target
and editedAppointment
do overlap, you are sure that there will be no problem adding the editedAppointment
as it can safely replace the target
.
27 (commented on others PR)
Actually for simplicity, we can also consider this: call remove
on target, then call add
on editedAppointment
. If it throws OverlappingAppointmentException
, then we add
back target
28 (commented on others PR)
Yes. It will still throw an exception.
29 (commented on others PR)
Good effort on updating the user guide! Thanks for correcting the cancel
and view
documentation too! 👍
30 (commented on others PR)
Just a comment: Should we include a constraint on the date
and time
not being in the past for cancel
and done
? It's not implemented currently, but I guess we can add it in the next milestone.
31 (commented on others PR)
I think that the DATE and TIME
should be DATE
and TIME
instead? Same for the documentation for cancel
.
32 (commented on others PR)
I agree with Wanlin actually, I think that it should be ParseException
instead. Although IllegalValueException
is the parent class, we expect parseIndex
to only throw ParseException
and if it throws anything else we know that this is unexpected behaviour that we should fix.
33 (commented on others PR)
I think this can be removed as it's not used in the program?
34 (commented on others PR)
I think remark should be added here too for the requireAllNonNull
35 (commented on others PR)
For now, the only possible constraint I can think of is the word length, otherwise, a user can add a whole paragraph to a remark. What do you think?
36 (commented on others PR)
Ohh I was comparing it with the other command parsers and they were using ParseException
. So shd be ok to change it to ParseException
37 (commented on others PR)
Yep this looks much better! 👍
But is it abit long? Maybe can shorten the last part to refer to help
instead?
38 (commented on others PR)
Should be a
{@code Remark} here
39 (commented on others PR)
Hahaa nice effort! 👍
40 (commented on others PR)
Do you think it is better if we include the index directly in the tests instead of here?
Because currently it seems a bit inconsistent with the rest.
Not really a big issue tho. Let me know what you think
41 (commented on others PR)
I think the link should be updated to our group repo
42 (commented on others PR)
I don't think there is a VersionedPatientBook
here
43 (commented on others PR)
The appointment should not be created when called with lastShownAppointmentList.filter
.
toMark.markAsDone
should call the markAsDone
method in toMark:Appointment
which in turns call the constructor of doneAppointment
44 (commented on others PR)
The link here should also be updated?
45 (commented on others PR)
The phrasing seems a bit off.
Would it be better if we phrase it as The 'DURATION' is measured in minutes and will be defaulted to 60 minutes if omitted
?
Do add on if the phrasing can be improved further. 👍
46 (commented on others PR)
I think the second line can be omitted. (Addressed in the 5th point)
47 (commented on others PR)
Should it be parses
instead?
48 (commented on others PR)
This shd be adds
instead
49 (commented on others PR)
Sorry just a bit curious about this function, this is currently not used right?
50 (commented on others PR)
Yes I agree with Wanlin, isPresent()
would be better. The user can change to a specific date, time or duration without changing the rest.
51 (commented on others PR)
I think that !(appointmentToEdit.startAtSameTime(editedAppointment) && model.hasAppointment(editedAppointment))
would be a better form of checking.
This checks if the 2 appointments are "equal" first before checking if the edited appointment has any complete overlaps with the other existing appointments
52 (commented on others PR)
Remember to edit this part 👍
The logic for setting appointments can be handled in UniqueAppointmentList
and this part can be edited to catching OverlappingAppointmentException
and throwing the relevant CommandException
.
53 (commented on others PR)
Might be good to add JavaDocs for the class
54 (commented on others PR)
Similar to above, might be good to add JavaDocs to the class
55 (commented on others PR)
Might be a bit repetitive since VersionPatientBook
also has the same exceptions.
56 (commented on others PR)
Hmm because this is edited using drawio, the class UML diagram is not consistent with the other diagrams. (The colouring and the font) Maybe it might be better to use plantUML to ensure consistency?
57 (commented on others PR)
Currently, there is a gap number between 3 and 4. Maybe it's better to shift this to 5. (before XZ's implementation)
58 (commented on others PR)
Good activity diagram!
59 (commented on others PR)
Would Activity diagram
be better than Architecture diagram
?
60 (commented on others PR)
Not sure if there will be implementation of AddCommand
and EditCommand
tho, cos its not really implemented by us. 😆
61 (commented on others PR)
Would Sequence diagram of remark command
be better?
62 (commented on others PR)
We can use the UML diagram similar to the current diagrams in our DG architecture.
You can refer to LogicClassDiagram.puml
and ModelClassDiagram.puml
for the labels and the multiplicity.
Because your current diagram looks very similar to what we have in our DG, just that the font size and colors are not standardised. Let me know what you think! 😄
63 (commented on others PR)
Should this be updated to Finds patients by name, NRIC or phone numbers
?
64 (commented on others PR)
Would this sound better?
The search requirements cannot be left empty, at least one search requirement (by name, Nric, or phone number) has to be provided
65 (commented on others PR)
Thanks for updating the UG!
66 (commented on others PR)
Would it sound better if and displays them as a list with index numbers
is removed?
What do you think?
67 (commented on others PR)
I'm not sure about this but wouldn't the assertion fail if certain prefix is not used?
E.g. if name prefix is unused, wouldn't there be no namePredicate?
68 (commented on others PR)
Would it be better if its abit more straightforward?
Alternatively, you can also use the edit command to add or edit remarks if you wish to change multiple
?
69 (commented on others PR)
It feels abit long-winded to me. I think can remove the left side
part?
Lemme know what you think about it? 😄
70 (commented on others PR)
Would it be better if we refer to the original appointment as the first appointment in the appt list?
71 (commented on others PR)
Just some Java trivia.
You can also take a look at the isBlank() method for String. It returns true if the string is empty or only contain trailing whitespaces. 😄
72 (commented on others PR)
Would it be better to give a more direct message rather than a generic one? (Since this msg is only used once)
Maybe we can use: "Cannot view appointments from the past. Past appointments are archived and can be accessed from the archive folder" ?
Let me know what you think! 😄
73 (commented on others PR)
Maybe it would be better if the check is done in ParserUtil.parseDuration
instead? This way the check will apply to ChangeCommandParser
too. (Can just compare the duration with CLOSING_TIME - OPENING_TIME
)
Lemme know what you think about it?
74 (commented on others PR)
Hmm, true. Then I guess this will work 👍
75 (commented on others PR)
Would the following phrasing be better?
undo
command cannot reverse a command execution from the previous Nuudle session.
76 (commented on others PR)
Same as above. This can be rephrased to:
redo
command cannot reverse an undo
execution from the previous Nuudle session.
77 (commented on others PR)
This comment is for line 346.
For the line:
redo
will reverse multiple undoable command execution, starting from the most recent command.(should be undo
instead of redo
)
78 (commented on others PR)
Should the JavaDocs be updated too?
79 (commented on others PR)
Should also update line 173: 1. User types done d/DATE t/TIME into the app.
Should also remove line 169 (about DateTimeLoader
)
Ps: Writing here bcos I cant comment on other lines.
80 (commented on others PR)
Hmmm, I don't think this should be edited. An invalid command format message shd be shown if the index is missing.
I took a look at the current code in ChangeCommandParser
and I think that the message for line 42 (throw ParseException) should be MESSAGE_INVALID_COMMAND_FORMAT
instead of MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX
.
81 (commented on others PR)
Do you think it would be good to add a comment on top to explain the numbers? or it's quite self-explanatory
82 (commented on own PR)
Oh yeah. I missed that out. Thanks 👍
83 (commented on own PR)
Oh I forgot to change it to INDEX. Thanks for spotting it 👍
84 (commented on own PR)
Hmmm, do you think if something like that will be good? See
85 (commented on own PR)
Oh I missed that out! I'll update it to "hour". Thanks 👍
86 (commented on own PR)
Ohh yeah. I have updated this on my side. Thanks for spotting it 👍
87 (commented on own PR)
Agreed 👍
88 (commented on own PR)
I think this is auto-correct on my part! It should have a tab right?
89 (commented on own PR)
I have edited this on my side. 👍
90 (commented on own PR)
Edited! Thanks for spotting it! 👍
91 (commented on own PR)
1.
is actually a markdown format for numbering bullet point. They will automatically assign the number to it, this way don't have to manually update the numbering everytime a point is added or removed.
Can take a look at this for the markdown preview: Dev Guide
92 (commented on own PR)
Ok I will add it in and update the helpMessage image
93 (commented on own PR)
Ok added
94 (commented on own PR)
Thanks for spotting it!
95 (commented on own PR)
Thanks for spotting it!
96 (commented on own PR)
For this, I follow the documentation style of the writeToFile
method above. So I think Writes
will be better?
97 (commented on own PR)
Good catch! 😄
98 (commented on own PR)
Yep, I missed that out! Good catch 👍
99 (commented on own PR)
Good catch 👍
100 (commented on own PR)
Agreed! 👍
101 (commented on own PR)
Good catch 👍
102 (commented on own PR)
Added! 👍
103 (commented on own PR)
Thanks! 😄
Thanks for the review!
104 (commented on own PR)
Yep, I agree. Already updated it on my end.
105 (other comment)
Patient details refers to basic information such as phone number, email, address, etc
106 (other comment)
Same as #18
107 (other comment)
Will implement together with #31
108 (other comment)
Addressed in #95
109 (other comment)
Is this similar to #7?
110 (other comment)
Implemented as tag during the creation of patient with add
111 (other comment)
Will be solved by #21
112 (other comment)
Chaining of multiple commands. Unlikely to do for current iteration
113 (other comment)
Nuudle app is developed with typing preference in mind
114 (other comment)
Similar to #12
115 (other comment)
@erisjacey
(78 comments)1 (commented on others PR)
Shouldn't the text name for this be matriculationNumber
?
2 (commented on others PR)
Maybe INVALID_MATRIC_NO
could be changed to INVALID_MATRIC_NUM
instead?
3 (commented on others PR)
Shouldn't there be a method call withMatriculationNumber(...)
as well?
4 (commented on others PR)
Perhaps MATRIC_NO_*
could be changed to MATRIC_NUM_*
?
5 (commented on others PR)
Should there be an awkward line break right after MATRIC_NO_BOB
? Same issue with the other test cases.
6 (commented on others PR)
Shouldn't there be a method call withMatriculationNumber(...)
?
7 (commented on others PR)
Shouldn't the message be ATAS has deleted all students!
or something like that?
8 (commented on others PR)
Perhaps these could be renamed to ACCEPT_COMMAND_FULL
, ACCEPT_COMMAND_SHORT
, REJECT_COMMAND_FULL
and REJECT_COMMAND_SHORT
?
9 (commented on others PR)
Perhaps comments could be added to explain what you're testing for each statement (+ expected result)?
10 (commented on others PR)
I noticed a similar issue previously. Maybe more comments explaining each test case could be added?
11 (commented on others PR)
Do you think it would make more sense to include the use of the abstracted wrapper class Index
here?
12 (commented on others PR)
Would this make more sense to put in an if-else
block (with comments to describe the else
block)?
13 (commented on others PR)
Should this unncessary extra line break be removed?
14 (commented on others PR)
Maybe these could be renamed to PREFIX_SESSION_NAME
and PREFIX_SESSION_DATE
?
15 (commented on others PR)
Shouldn't the form be dd/MM/yyyy
?
16 (commented on others PR)
Maybe some comments could be added here to more clearly explain the thought process?
17 (commented on others PR)
Unnecessary additional line break?
18 (commented on others PR)
Maybe these two if
blocks could be merged into one?
19 (commented on others PR)
Maybe these two if
blocks could be merged into one?
20 (commented on others PR)
Would it make more sense if all instances of SESSIONNAME
got changed to SESSION_NAME
? (same for SESSIONDATE
and SESSION_DATE
?
21 (commented on others PR)
Unnecssary whitespaces?
22 (commented on others PR)
Unnecssary whitespaces?
23 (commented on others PR)
Unnecessary whitespaces?
24 (commented on others PR)
Unnecessary whitespaces?
25 (commented on others PR)
Unnecessary whitespaces?
26 (commented on others PR)
Unnecessary extra line break?
27 (commented on others PR)
Unnecessary line break?
28 (commented on others PR)
Unnecessary line break?
29 (commented on others PR)
Unnecessary line break?
30 (commented on others PR)
Unnecessary whitespaces?
31 (commented on others PR)
Unnecessary whitespaces?
32 (commented on others PR)
Shouldn't this be renamed to Editing a student
to fit the rest of the item naming?
33 (commented on others PR)
Maybe this class could be made public
?
34 (commented on others PR)
Shouldn't the command participate be in all small letters?
35 (commented on others PR)
Shouldn't this be enterses
?
36 (commented on others PR)
Shouldn't this be presence
?
37 (commented on others PR)
Shouldn't the command here be editses
?
38 (commented on others PR)
Maybe you could add a TODO
for next time?
39 (commented on others PR)
Should this be something like saveStudentList
?
40 (commented on others PR)
Maybe change this to JsonSerializableStudentList
and correspondingly ReadOnlyStudentList
?
41 (commented on others PR)
addressBook
-> studentList
?
42 (commented on others PR)
AddressBook -> StudentList?
43 (commented on others PR)
addressBook -> studentList?
44 (commented on others PR)
Maybe this could be changed to Clearing the student list
?
45 (commented on others PR)
Maybe this could be changed to Delete Student
, seeing as we are deleting one student at a time?
46 (commented on others PR)
Perhaps the last comma could be changed to a full stop?
47 (commented on others PR)
Maybe this comment could be deleted?
48 (commented on others PR)
Maybe this comment could be deleted?
49 (commented on others PR)
Maybe this comment could be deleted?
50 (commented on others PR)
Maybe this comment could be deleted?
51 (commented on others PR)
Maybe this comment could be deleted?
52 (commented on others PR)
Maybe this comment can be updated since we're no longer using a hash map?
53 (commented on others PR)
Maybe this comment could be deleted?
54 (commented on others PR)
Maybe this line could be removed?
55 (commented on others PR)
Perhaps some Javadocs could be added here?
56 (commented on others PR)
Perhaps the starting word for each Javadoc comment could be "Recalculates"?
57 (commented on others PR)
Perhaps the comment could start with "Updates"?
58 (commented on others PR)
Maybe this comment can start with "Recalculates"?
59 (commented on others PR)
Maybe each comment could start with "Replaces" instead?
60 (commented on others PR)
Return -> Returns?
61 (commented on others PR)
Obtain -> Obtains?
62 (commented on others PR)
Replace -> Replaces?
63 (commented on others PR)
Perhaps there could be a space between "below" and the opening paranthesis after it (last few words)?
64 (commented on others PR)
Maybe Memo
could be de-capitalized? Same issue in line 728.
65 (commented on others PR)
Perhaps Features#Students
could be renamed to features#students
? Same comment for line 322.
66 (commented on others PR)
Perhaps this could be renamed to features#current_session
?
67 (commented on others PR)
Perhaps this could be renamed to command_summary#students
?
68 (commented on others PR)
Maybe the opening "(" at the end of this line could have a space between the word "student" preceding it?
69 (commented on others PR)
Perhaps a comment could be added to provide a brief description as to what tracker is for? The name isn't as clear atm.
70 (commented on others PR)
Perhaps a comment could be added here to describe what happens?
71 (commented on others PR)
Perhaps you could rename this package?
72 (commented on others PR)
Maybe this could be renamed to student list to more accurately reflect the naming convention used?
73 (commented on others PR)
Perhaps another extension could be added to highlight what happens if the user tries to enter the same session he is already in?
74 (commented on others PR)
Maybe "Should" should be de-capitalized here?
75 (commented on others PR)
Maybe pictures could be provided for at least one positive test case and one negative test case each?
76 (commented on others PR)
Perhaps these parts could be wrapped in their respective div boxes for better organisation of info?
77 (commented on others PR)
Perhaps these parts could be wrapped in their respective div boxes for better organisation of info? Noticed the same issue in other areas as well.
78 (commented on others PR)
Perhaps these parts could be wrapped in their respective div boxes for better organisation of info? Noticed the same issue in other areas as well.
79 (commented on own PR)
Thanks for pointing this out, as well as in other places!
80 (commented on own PR)
This implementation is under the ModelStub and this method is not used at all, so I thought returning null wouldn't make much of a difference either way.
Do you have any alternative suggestions for this part?
81 (commented on own PR)
Same as above:
This implementation is under the ModelStub and this method is not used at all, so I thought returning null wouldn't make much of a difference either way.
Do you have any alternative suggestions for this part?
82 (commented on own PR)
Did I not add it in? Lines 22-24.
83 (commented on own PR)
Ok thanks, will do!
84 (commented on own PR)
Thanks for the suggestion, will be refactoring some methods to make this possible!
85 (other comment)
Not an issue because Alt+F4 is a thing
86 (other comment)
Not sure about this. Will look into it and discuss with teammates
87 (other comment)
Will look into this
88 (other comment)
Will look into this
89 (other comment)
Will look into this
90 (other comment)
Will look into this
91 (other comment)
Will look into this
92 (other comment)
Will look into this
93 (other comment)
Will look into this
94 (other comment)
Will look into this
95 (other comment)
Will look into this
96 (other comment)
Will look into this
97 (other comment)
This is intended. There are two types of commands: those that commit (save data in the app) and those that don't. Even if you perform a command that does not commit after a command that does, you will still be able to undo the command that committed.
98 (other comment)
Will look into this
99 (other comment)
Will look into this
100 (other comment)
Will look into this
101 (other comment)
This is intended
102 (other comment)
Will look into this
103 (other comment)
Intended
104 (other comment)
Will look into this
105 (other comment)
Will look into this
106 (other comment)
Will look into this
107 (other comment)
Will look into this
108 (other comment)
This is intended
109 (other comment)
Will look into this
110 (other comment)
Will look into this
111 (other comment)
Will look into this
112 (other comment)
Will look into this
113 (other comment)
Will look into this
114 (other comment)
Will look into this
115 (other comment)
Irrelevant as Alt+F4 is a thing
116 (other comment)
Will look into it
117 (other comment)
Will look into it
118 (other comment)
???
119 (other comment)
Will look into it
120 (other comment)
Further thoughts:
I think a better design would be to treat memo as a separate entity from sessions and students.
undo
should only work for commands related to sessions and students; memo already has built-in undo features in Ctrl+Z.
I will make this distinction clearer in the UG.
121 (other comment)
Further thoughts:
Could not find situations wherein just numbers are not allowed.
Will be disregarding this issue
122 (other comment)
Perhaps it'd be better if you could maybe list out the specific bug fixes for easier referral in the future though?
123 (other comment)
Should the naming of the images be x.x.x.x-desc instead of xxxx-desc?
@YuunoKun I've made the relevant changes to the naming!
@luo-git
(77 comments)1 (commented on others PR)
Maybe you can use an empty line instead of using >br>
2 (commented on others PR)
There is an extra >br>
at the end, which will increase the gap between this line and the Acknowledgement
. Is it intended?
3 (commented on others PR)
Should there be an extra white line here?
4 (commented on others PR)
Maybe there shouldn't be a >
here?
5 (commented on others PR)
I think you broke some of my parts. You can review this markdown file again to find out more.
Before
After
6 (commented on others PR)
I have night mode enabled so it is more obvious.
7 (commented on others PR)
There's still something wrong here.
8 (commented on others PR)
Did you change the package name to fileAddress?
9 (commented on others PR)
Shouldn't it still be tag?
10 (commented on others PR)
Maybe can replace person with tag in the message as well.
11 (commented on others PR)
Should the person
package be renamed to tag
?
12 (commented on others PR)
This may not work later because of the FileAddress
field. Maybe add a //Todo
here for reminder.
13 (commented on others PR)
JsonAdaptedTag was used to store tags for person. For now shouldn't it be deprecated since we do not have that functionality?
14 (commented on others PR)
Is it really person details?
15 (commented on others PR)
Is this println for debugging?
16 (commented on others PR)
Should this be "Tags list contains duplicate tag(s)."?
17 (commented on others PR)
Is this for debugging?
18 (commented on others PR)
This may not work. But for now it's okay.
19 (commented on others PR)
This may not work. But for now it's okay.
20 (commented on others PR)
For now it's okay. This will be looked at again by the Logic team.
21 (commented on others PR)
Are these tests no longer working?
22 (commented on others PR)
Extra spaces here.
23 (commented on others PR)
Are these 3 variables no longer independent Ui parts?
// Independent Ui parts residing in this Ui container
24 (commented on others PR)
Maybe the name of the variables here could be changed?
25 (commented on others PR)
Maybe "valid" file path?
26 (commented on others PR)
Could this be changed to a more sensible tag name?
27 (commented on others PR)
Should there be empty lines here?
28 (commented on others PR)
"Person" should be predicate here?
29 (commented on others PR)
Method name should be test_keywordMissing_returnsFalse
?
30 (commented on others PR)
This validation regex is for names. Should this be dropped?
31 (commented on others PR)
Should this class be named ObservableFileList?
32 (commented on others PR)
The file can be changed to HelloFile.jar?
33 (commented on others PR)
Displays
34 (commented on others PR)
managed tag names -> managed tags?
35 (commented on others PR)
"Renames a tag's name"?
36 (commented on others PR)
Typo in design?
37 (commented on others PR)
Absolute path is already ensured in TagCommand, but its still okay to get absolute path again here I think.
38 (commented on others PR)
I get it now.
39 (commented on others PR)
This part should not be changed. This are the default tags when HelloFile is launched the first time. We might want to keep this list empty?
40 (commented on others PR)
Should there be an empty line here?
41 (commented on others PR)
This edit is not correct? TagCommand do check if the file is present using java.io.File.exists()
.
42 (commented on others PR)
What?
43 (commented on others PR)
Is this a wrong JavaDoc?
newTagName
44 (commented on others PR)
Is label command left out?
45 (commented on others PR)
Nice after that can merge alr
46 (commented on others PR)
Should you do nothing here? Maybe indicate the error by changing the text in ResultDisplay?
47 (commented on others PR)
Again as before
48 (commented on others PR)
Okay I understand now. Everything looks good then👍
49 (commented on others PR)
Wrong comment here?
50 (commented on others PR)
Happy path is not prominent here. Maybe you should change this to
if (!labels.isEmpty()) {
...
}
return new CommandResult(String.format(MESSAGE_SUCCESS, editedTag));
51 (commented on others PR)
Add another UnlabelCommand with same label but different TagName for 100% coverage.
Test for this case:
this.tagName.equals(((UnlabelCommand) other).tagName))
52 (commented on others PR)
Test for non-empty preamble (parse with a string starting with "unlabel") for 100% coverage?
Test with new UnlabelCommandParser.parser("unlabel ...")
.
Testing this condition: !argMultimap.getPreamble().isEmpty()
53 (commented on others PR)
I'm not sure if you can change this only. You can refer to the rest of the file. I'm not sure why storage test can pass if you only changed this label but not the rest.
"tagName" : "myfile 3",
"fileAddress" : "c:\\a\\b\\myfile3.txt",
"labels": ["testLabel"]
}, {
"tagName" : "myfile 4",
"fileAddress" : "c:\\a\\b\\myfile4.txt",
"labels": ["testLabel"]
}, {
"tagName" : "myfile 5",
"fileAddress" : "c:\\a\\b\\myfile5.txt",
"labels": ["testLabel"]
54 (commented on others PR)
Actually it will pass. But do you have a reason for changing this?
55 (commented on others PR)
If you do not use withLabels, it will still have a label called "testLabel"
56 (commented on others PR)
Perhaps don't change this since it won't be consistent with TypicalTags?
57 (commented on others PR)
Alrighty👍
58 (commented on others PR)
I think Find Command does not distinguish between tag and label. So this will find any tag with tag name or label that contain "tagname1" or "label1"?
59 (commented on others PR)
Redo can actually be undone.
60 (commented on others PR)
I don't know if show
and exit
screenshots are necessary. Perhaps remove them?
Also maybe extra spacing will be nice.
61 (commented on others PR)
Grammatical error here: Command history will be deleted once the app is closed!
62 (commented on others PR)
Same as above.
63 (commented on others PR)
Should be "is closed"?
64 (commented on others PR)
Same as above.
65 (commented on others PR)
This screenshot is a bit sensitive?
66 (commented on others PR)
Missing :
. Should be **:warning
?
67 (commented on others PR)
Same as the previous one.
68 (commented on others PR)
Will this be really valid for CdCommand?
69 (commented on others PR)
This does not create a new addressbook, so the same addressbook is used through out all testcases. Is this intended?
70 (commented on others PR)
Should the method name be removeTag_tagInAddressBook_success
? Since the result of the method being tested is not actually returning false.
71 (commented on others PR)
Should the method name be removeTag_nullTag_throwsNullPointerException
?
72 (commented on others PR)
Should the method name be removeTag_nullTag_throwsNullPointerException
?
73 (commented on others PR)
Should the method name be setTag_tagInAddressBook_success
?
74 (commented on others PR)
setLabel_labelInTag_success
?
75 (commented on others PR)
As in the addressbook will be reused so all the tags that you have added previously will persist across all testcases.
76 (commented on others PR)
Maybe can set up an empty addressbook by using @beforeEach
.
77 (commented on others PR)
Shouldn't this still be showing help for tag?
78 (commented on own PR)
Roger that
79 (commented on own PR)
We need to change all the entities in testUtil.
80 (commented on own PR)
It's not a typo, it's a real word =)
conform
/kənˈfɔːm/
verb
comply with rules, standards, or laws.
81 (commented on own PR)
I find that without "\n" the format is very hard to read, so I added them.
82 (commented on own PR)
That's going to be more readable in my opinion.
Right now the tag command is like this. You cannot distinguish tag name and file address easily.
83 (commented on own PR)
Ok will change that
84 (commented on own PR)
I don't think we will be doing manual testing anymore. Moreover, this appendix is for us to read and probably not suitable to be included in DG.
85 (commented on own PR)
I think writing equals()
this way is very clear and easy to understand, like a pipeline.
86 (commented on own PR)
It's thrown afterwards, so that all tags that can be opened are opened.
87 (commented on own PR)
Done!
88 (other comment)
test
89 (other comment)
Resolve #36
90 (other comment)
Hi Heinrich, could you make a stub so that we can use it to work on Logic? Thanks.
91 (other comment)
Yes! I think that will be good.
92 (other comment)
Looks good. Is it possible to have a toggle for this theme?
You mean something to switch to different themes?
Yup
93 (other comment)
Cd can change current address.
Format:
cd f/absolute address
cd p/
cd c/child_folder_name
94 (other comment)
Getter and setters
95 (other comment)
FindCommand can have t/, d/ or (t/ and d/).
96 (other comment)
Alternative
cd f/absolute address
cd ../
cd ./
97 (other comment)
Can't really check the UML..but LGTM!
You can use "view file" at the top right corner to see the markdown file.
98 (other comment)
Command format:
label t/tag l/label [l/label]
Append labels (accept multiple)
99 (other comment)
Only redo commands Clear, Tag, Untag, Retag, Label, Unlabel.
100 (other comment)
Only undo commands Clear, Tag, Untag, Retag, Label, Unlabel.
101 (other comment)
like AB4
102 (other comment)
Open command only takes 1 label or 1 tag but not both.
103 (other comment)
Maybe this is a feature?
104 (other comment)
Introduction
Basic workflow
Command Format -
Command Summary
Glossary
105 (other comment)
Accepted as normal
106 (other comment)
Add a note for Linux/MacOS users at the front of UG. "/Users/user/Desktop".
Add some examples for MacOS/Linux
107 (other comment)
Add a scenario and a screenshot.
108 (other comment)
Change UG to dark theme. Change light theme (default) to light theme.
109 (other comment)
Add a warning in UG to say only the last prefixed parameter is accepted.
110 (other comment)
As far as possible, use setTag instead of delete + add
111 (other comment)
What if we do not undo for 10 years. Will take 10GB.
112 (other comment)
Add in UG. Redo and Undo do not work after app has been restarted.
113 (other comment)
Update CdCommand
cd ..
cd ./
cd f/
114 (other comment)
good suggestion
115 (other comment)
Use setTag
116 (other comment)
setTag
117 (other comment)
Change argument prefix from / to >.
118 (other comment)
Update UG too.
119 (other comment)
Looks good to merge!
120 (other comment)
LGTM! Have you tested the minimum window size? How does it look?
I tested a bit, at the minimum size, the window doesn't look good, but I think maybe shouldn't make the minimum size too big.
Good to go then👍
121 (other comment)
Looks good. The words in galaxy theme is a bit hard to read though.
Another thing, could you update the UG as well?
Sure, I try to add theme switching to UG
Ooo, just found it's already added, then I will update the images.
The changing theme
section is not updated to reflect your changes. Could you also update the screenshot if possible?
Changing themes
HelloFile comes in light and dark themes. ...
122 (other comment)
How do I modify the color to make it consistent?
Doesn't matter for now. We probably need to change those screenshots later because the words are too small...😢
@sebastiantoh
(76 comments)1 (commented on others PR)
Edits an existing tag in StonksBook to the specified tag name. All entries previously associated with this tag will be updated to associated with the updated tag.
I think we can remove the
here
2 (commented on others PR)
* All contacts that have been previously associated with this tag will be updated automatically to be associated with the updated tag.
3 (commented on others PR)
Should we mention friends
here? I think it may be better if you just mention that it updates the name of the first tag (as per tag list
)
4 (commented on others PR)
Same comment for here (about whether to mention friends
)
5 (commented on others PR)
Maybe we should consider switching to an ordered list if we're going to make reference to other points
6 (commented on others PR)
Think you're missing a Use case ends.
here and in some other portions below as well
7 (commented on others PR)
Can this be indented to be the same level as 2a
? Likewise for the remaining use cases
8 (commented on others PR)
2. StonksBook adds the provided tag.
9 (commented on others PR)
| `* * *` | efficient salesman | list all sales of a contact | see all sales made to a contact easily |
10 (commented on others PR)
I think here we're assuming that contacts are sorted before sales right? Should we add a comment stating this assumption?
11 (commented on others PR)
Can we write this section into an if-else
block with the above? Then we can also remove some duplicate code
12 (commented on others PR)
Hmm, is associations
a bit hard to understand here? Would it be better to be more verbose here and say something like Note that all items that have been previously associated with this tag will be updated automatically to be associated with the updated tag.
as per the user guide?
P.S. May also need to update the user guide: it currently says contacts
when it's supposed to be generic right?
13 (commented on others PR)
Same feedback here as in DeleteCommand
14 (commented on others PR)
Is this comment still relevant? If I'm not wrong it refers to the tags
stored in the persons/sales right?
15 (commented on others PR)
Javadocs here is inaccurate
16 (commented on others PR)
Javadocs here is inaccurate
17 (commented on others PR)
Would it be better to initialise a new HashSet with the original tags, remove the target, then add the editedTag in order to prevent arrowhead-style code? Same can be done for the removeContactTag
18 (commented on others PR)
This should be equivalent tag instead of person right?
19 (commented on others PR)
Should be tags here instead of persons
20 (commented on others PR)
Is this javadoc accurate?
21 (commented on others PR)
p.s. i think these 2 lines are common across the conditionals. maybe we can extract it out of the conditional? same for EditCommand
22 (commented on others PR)
Is this part relevant?
23 (commented on others PR)
Is this description accurate? I think the javadocs you have in AddressBook.java
would be better here!
Based on the name of the method, I am inclined to think that this method returns a list of contacts. Maybe you want to rename it so it's clearer? Idk. But I think updating the javadocs would be good!
Same for findBySaleTag
24 (commented on others PR)
Should this be be model.findBySaleTag
?
25 (commented on others PR)
* Lists all sale items associated with {@code target} tag.
26 (commented on others PR)
ps still got the parameter here that needs to be updated as well
27 (commented on others PR)
Does using ++count
instead work? Same for below
28 (commented on others PR)
Maybe can replace this with just AddCommand
instead of the fully qualified name?
29 (commented on others PR)
30 (commented on others PR)
Maybe can use AddCommand
here instead?
31 (commented on others PR)
Just checking, but what's the desired behaviour if a user supplies both c/
and s/
?
32 (commented on others PR)
P.S. I think I extracted this out into a method in ParserUtil
. Maybe can import it from there instead of duplicating?
33 (commented on others PR)
* Returns true if all the tags of the provided {@code sale} item exist in StonksBook.
34 (commented on others PR)
* Returns true if all the tags of the provided {@code sale} item exist in StonksBook.
35 (commented on others PR)
Is this part necessary? The part where you throw an exception, then catch it, and throw it again
36 (commented on others PR)
I think this javadocs here is inaccurate?
37 (commented on others PR)
Maybe can add a note here that the default reminder list is based on reminder find st/pending
?
38 (commented on others PR)
Maybe can replace 'find' with 'filter' in this section
39 (commented on others PR)
st/STATUS
is optional right? So should it be reminder list [st/STATUS]
instead?
40 (commented on others PR)
Think this part is missing the prefix
41 (commented on others PR)
P.S. for this section, is it possible to change such that you create a sorted list from the filtered list? So that it's more consistent with how the other models behave since the other models also filter first, then sort.
42 (commented on others PR)
Then this can remain as getSortedReminderList
43 (commented on others PR)
44 (commented on others PR)
45 (commented on others PR)
* Deletes the contact tag or sales tag at the specified `INDEX`. The `INDEX` refers to the index number shown in the list displayed by the `tag list` command.
46 (commented on others PR)
* `tag find st/3 cl/` displays all contacts who have purchased items associated with the third sales tag.
47 (commented on others PR)
I think this can be deleted?
48 (commented on others PR)
Would prefer if you use the PREFIX constants here and in line 32 as well
49 (commented on others PR)
I think this part should be PREFIX_CONTACT_TAG + INDEX or PREFIX_SALE_TAG + INDEX?
50 (commented on others PR)
51 (commented on others PR)
3. The **Result Box** will display a message noting that the command was successful, as well as a list of contacts who are tagged with friends.
52 (commented on others PR)
I think can remove my name here haha since you wrote most of this section
53 (commented on others PR)
5. Type `sale delete s/3` in the command box, and press <kbd>Enter</kbd> to execute it.
54 (commented on others PR)
55 (commented on others PR)
2. Suppose the sale to be edited is at the third index in the sale list. Then, type `sale edit s/3 q/20` in the command box, and press <kbd>Enter</kbd> to execute it.
56 (commented on others PR)
3. You should see that the sale has been updated to reflect this new quantity.
57 (commented on others PR)
Does this backslash affect anything?
58 (commented on others PR)
5. Type `sale delete s/3` in the **Command Box**, and press <kbd>Enter</kbd> to execute it.
59 (commented on others PR)
2. Suppose the sale to be edited is at the third index in the sale list. Then, type `sale edit s/3 q/20` in the **Command Box**, and press <kbd>Enter</kbd> to execute it.
60 (commented on others PR)
StonksBook will not remove a contact from the archive if it is not in the archive!
61 (commented on others PR)
I think this sets the icon to be permanently white even in the dark theme. By right the icon should be green when the reminder is complete, and red when the reminder is overdue.
In the light theme, the text doesn't reflect the colours as well.
62 (commented on others PR)
Past meetings should be "greyed out" but this doesn't seem to be the case in the light theme
63 (commented on others PR)
Can we capitalize the first sentence of each step and use <kbd>Enter</kbd>
to denote keystrokes? Also, for all UI components that we make reference to, can we capitalize and bold them?
1. Type `contact find alx yo` in the **Command Box** and press <kbd>Enter</kbd>.
64 (commented on others PR)
I took a look at your images, and I'm not sure why your aspect ratio is different from mine. Mine is a rectangle which is longer horizontally than it is vertically. Maybe we can check with the rest how their apps look, and standardise it? Otherwise our screenshots will look very inconsistent. After which, we can decide on a width that we should all follow for images. 400px looks too small for mine. So right now, most of my images are set to 900px
65 (commented on others PR)
1. Type `help` in the **Command Box** and press <kbd>Enter</kbd>.
66 (commented on others PR)
1. Type `meeting stats 6` and press <kbd>Enter</kbd>.
67 (commented on others PR)
1. Type `sale list m/8 y/2020` in the **Command Box** and press <kbd>Enter</kbd>.
68 (commented on others PR)
1. Type `contact sort s/ desc` in the **Command Box** and press <kbd>Enter</kbd>.
69 (commented on others PR)
2. The contact list now contains contacts whose name is similar to alx yo.
70 (commented on others PR)
Just checking, should UniqueMeetingList#removeMeetingsWithContact
be updated as well? Likewise for UniqueSaleList
and UniqueReminderList
71 (commented on others PR)
* An additional `cl/` (stands for 'client') field can be provided when performing searching on sales tags. If provided, instead of displaying sales associated to this tag, StonksBook will display the clients who have purchased items with this tag.
72 (commented on others PR)
Should this be updated in the command summary table in the UG as well?
73 (commented on others PR)
Based on your screenshots, this should be lowercase right?
private Path addressBookFilePath = Paths.get("data" , "stonksbook.json");
74 (commented on others PR)
I see. Thanks for clarifying! I'll leave Jin Ming to do the approving!
75 (commented on others PR)
:bulb: Tip: You can learn more about the `contact find` command in [locating contacts by name](#locating-contacts-by-name-contact-find-aaron-seah).
76 (commented on others PR)
Nice! Can help perform this change for reminder edit
as well?
77 (commented on own PR)
Thanks for pointing that out!
78 (commented on own PR)
Oh, my bad. I didn't know the new line would affect the formatting. Thought it was just code styling. Will remove it!
79 (commented on own PR)
Not yet! Just adding this in here so that I won't forget. Sorry for the confusion
80 (commented on own PR)
This just prevents the loop from flagging meetingToCheckAgainst
as conflicting (if it does) if it's in the excluded list. But anyways, I've updated this method to return a list of conflicting meetings so that I can display it in the command feedback!
81 (commented on own PR)
Thanks for pointing that out!
82 (commented on own PR)
Yep, I think so. I plan to do them over the weekend, don't think I can finish it by tonight lol
83 (other comment)
@Asthenosphere ps can help resolve the merge conflicts?
84 (other comment)
LGTM
Thanks!
85 (other comment)
Think we're all done with this. Nice work all!
86 (other comment)
LGTM! Could you merge the updated master and push again though? Renaming
CONTACT_INDEX
toCONTACT_INDEX_SECOND
might affect some of the test cases that have been merged.
Sure!
87 (other comment)
Not really relevant to this PR, but I think the parameter and example for editing a tag is missing the updated tag name. Example should be something like tag edit 1 t/furniture
. Feel free to merge this PR if you want to resolve this in another PR.
88 (other comment)
Tested locally, LGTM! Good idea to abstract ModelStub out to another class.
Can I just check: whether a reminder is overdue or not is evaluated at program startup, are there any plans to either have the reminder display update immediately when the reminder time has passed, or to have a command to manually refresh the reminder display (like perhaps on
reminder list
?
Good point! I've added a force-refresh at the end of every command. Idk if this would be too inefficient though...
89 (other comment)
See #127
90 (other comment)
Done in #114
91 (other comment)
Yep, sure!
92 (other comment)
Also, I was initially thinking that the filtering should be implemented as part of the reminder list
command. Similar to sale list
.
93 (other comment)
LGTM besides the minor things pointed out!
Just an idea, I think it would be helpful to print the conflicting meeting to the user when the error is thrown!
Makes sense. Thanks for the suggestion, I've included the above!
94 (other comment)
When testing, something interesting happened: I created an upcoming meeting and used
meeting list
to display all meetings. After the meeting was over, I retypedmeeting list
, and the meeting was greyed out, but still present. I think there's a need to refresh the contents of the list in this case?
Other than this issue, the code looks good! Great decision to use ListMeetingDescriptor
Great catch, fixed! Thank you!
95 (other comment)
That's weird.
Just to confirm, the steps to reproduce are as follows: (assuming current time is 26 Oct 2020, 18:32)
Open up app
Execute meeting add c/1 m/fnakldsnlk d/2020-10-26 18:32 du/1
Execute meeting list
Wait for 18:34
Execute meeting list
96 (other comment)
I'll review this in more depth after the other PR has been merged, but looking from the screenshots, would it be better if you merged the contact and sales tag list into one, and have some other form of differentiation between the two? I just feel that the way the sale tags' numbering doesn't start from 1 is quite jarring especially when it's presented as being a separate list. Not sure what you think about this but I think we can leave it as it is now first.
Also, regarding your other PR, I've submitted a PR to your branch on your repo. Not sure if you've had the chance to take a look at it yet?
97 (other comment)
Result Box
Command Box
Contact List
Sale List
Sales Tag
Contact Tags
Meeting List
Reminder List
Any reference to the above should be in bold and capitalized accordingly. Feel free to call them something else, just need to make sure it's consistent throughout
Should be before the introduction
Must be numbered (OK to have bullets)
Ensure proper casing (for simplicity, I suggest that we all stick to sentence case - capitalise ONLY first word, with the exception of proper nouns)
Check that links are working
Parallel structure for each feature
I suggest the following format:
___ing ____: command word
E.g. Adding a contact: contact add
Note that extra parameters to the command are omitted
Overview of Product - first statement tells you what the app is, next statement tells you target audience, followed by main features + how it is designed using CLI with GUI (explain these technical jargon - CLI and GUI. Should also be written out in full the first time you mention in instead of abbreviating them)
Purpose of Document
Section explaining how to read the guide
Note: Anything not marked with a name will be considered a team effort. So do indicate your names to the respective sections that you've written.
Ordering of features within each section: let's standardise it to: List, Add, Delete, Edit, followed by other miscellaneous commands that are related to that particular model.
Steps must be numbered and start with a verb. For results, should be “The result box will …”
For each step, explain what needs to be done first, then display an image. Ensure that the image matches what you say needs to be typed. Image after the step.
To explain features which require some form of INDEX, first tell the user to type the list command and explain why this is necessary. Then, "Let's assume that ... has index ..."
Let's standardise the format for writing each feature:
### Reminders
<include preface statement>
#### Adding reminders: `reminder add` \[Sebastian Toh Shi Jian\]
<include preface statement that follows the below form - "Adds ..." >
Adds a reminder scheduled on a particular date that is associated with the specified contact to StonksBook.
<any notes if applicable - should be wrapped in a div tag with the appropriate classes so that it gets rendered as a note>
**Format**: `reminder add c/CONTACT_INDEX m/MESSAGE d/DATETIME`
* Adds a reminder associated with the contact at the specified `CONTACT_INDEX`.
* The index refers to the index number shown in the displayed contact list.
* The index must be a positive integer 1, 2, 3, …
* The datetime must be in the format `yyyy-MM-dd HH:mm`
**Example**:
Suppose you want to .... This is what you need to do:
<EACH STEP SHOULD END WITH A FULL STOP>
1. Type ____ in the **Command Box** and press <kbd>Enter</kbd>.
<IMAGE FOR STEP 1 - WIDTH SHOULD BE 900>
<figure>
<img src="images/meetingListMockup.png" alt="result for 'meeting list'" width="900px">
<figcaption>Fig. **{TODO}** - Meeting List Mockup.</figcaption>
</figure>
2. ....
<image for step 2>
3. ...
4. The **Result Box** will ... and the **Reminder List** will ...
Let's split our command summary based on how we split the Features
section in our UG. So we'll have multiple command summary tables. Remember to add a preface between the headers for each section!
Within each section, the command summary table should be sorted in ascending order alphabetically.
SEE: FitBiz's Command Summary
I also propose splitting the examples into a third column of it's own:
Here's the template:
| Command | Summary | Example (if applicable) |
|---------------------------------------------------------------------------|------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| `contact add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…[r/REMARK]…` | Adds a contact to StonksBook | `contact add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague r/birthday: 20 August` |
| | | |
| | | |
Avoid excessive paragraphing (should not have multiple paragraphs with only 1 sentence each)
Should refer to the reader directly.
MUST always have a preface between headers
Informal diagrams, which follows right after the text, need not be labelled.
Insert page numbers
Be as concise as possible.
Let's use <kbd></kbd>
to denote keystrokes. e.g. <kbd>Enter</kbd>
to get Enter
Labelling of figures: I think we should KIV this first, until we're all done with the UG, otherwise if we were to all add labels, we might have to constantly update the label numbers.
Sections should be numbered - let's not worry about this for now too. I think there are tools available to automatically number it for us. I don't think it's necessary for us to manually write the numbering in your headers
Let's use red for any image annotations, and rounded rectangles over sharp-cornered rectangles
Any screenshots of the UI should omit the top menu (so that the images look consistent regardless of OS)
98 (other comment)
Sorry, didn't expect that you would have to refactor all the tag commands. Anyways, I tested and it works well!
I think you need to update the examples for the tag commands as well. Also, maybe can update tag add
to also use ct
and st
just for standardisation? (p.s. don't have to do it if you don't think it's worth changing / you're busy atm)
Haven't really looked at the code yet, will do so once the other PRs are merged
99 (other comment)
LGTM! Just a few tiny changes. Also, for the screenshots, perhaps can remove the top menu (just keeping the UI) so that they look the same for all OSes?
Thanks for pointing those changes out! I've amended them, as well as standardised some formatting stuff throughout the document
100 (other comment)
Closed in #150
101 (other comment)
Can't seem to reproduce this. I suspect that the tester has already created a separate meeting called Talk show
on 29 Feb 2020 that is not displayed in the list. That is, the two meetings pointed out in the images are different meetings as evident by the different capitalization of the message: Talk show
in the output vs talk show
in the displayed list.
@jeffreytjs
(73 comments)1 (commented on others PR)
To check with prof regarding the changes to be made to monitor code coverage
2 (commented on others PR)
Minor issue, remember to capitalize Supplier and line 276 and 280 as well.
3 (commented on others PR)
Same issue, minor typo for Supplier
4 (commented on others PR)
Capitalize also
5 (commented on others PR)
Similar to comments left on UniqueWarehouseList, should this be removed instead?
6 (commented on others PR)
Similar to comments left on UniqueWarehouseList, might want to change to replaceSupplier
7 (commented on others PR)
Minor issue, capitalise Suppliers
8 (commented on others PR)
Capitalise Suppliers here
9 (commented on others PR)
Would this mean that 0 is acceptable? Or is isNonZeroUnsignedInteger
meant to be a stricter check?
10 (commented on others PR)
Oh I see that it is being used for index and quantity separately in another file.
11 (commented on others PR)
Alright got it!
12 (commented on others PR)
Message should be "Deleted Warehouse: %1$s"
instead
13 (commented on others PR)
In the 3rd sentence:
edit
In the 4th sentence:
The rest are well described.
14 (commented on others PR)
I cant figure out why this paragraph is bold in the file. (Can click the three dots at the top right then click view file
)
Minor issue:
Can make warehouse plural as well in this sentence - "Furthermore, another alternative considered would be to create separate commands for warehouse and suppliers respectively."
15 (commented on others PR)
Will there be a {@code userMacros}? I'm not too sure about how this component of the code.
16 (commented on others PR)
Maybe "Problem encountered while reading..." or "Unable to read from..." would be better here
17 (commented on others PR)
Same as above
18 (commented on others PR)
I think there is missing a word here, should be "original input string when no macro is used"
19 (commented on others PR)
Can remove extra line here
20 (commented on others PR)
Oh {@code UserMacros} exist here, the one on top can include too!
21 (commented on others PR)
Represents 'an' alias
22 (commented on others PR)
Oh alright! 👍
23 (commented on others PR)
Minor typo, should be "product or remark" instead
24 (commented on others PR)
Should it display the biggest warehouse with any PANADOL product or SUSP product instead?
25 (commented on others PR)
Not sure if it's helpful but one way to make it more concise is to initialize all nameKeywords, productKeywords and remarkKeywords to Optional.empty() then only keep 3 if statement to update them if necessary
26 (commented on others PR)
Same as above
27 (commented on others PR)
Can consider renaming the function name to contain Supplier and Warehouse for better readability
28 (commented on others PR)
Should be "name, product or remark" instead
29 (commented on others PR)
Should be Updates I think
30 (commented on others PR)
Have to discuss this later, how to handle it efficiently since not every command takes in email/address/name and like in FindCommand we have to add this to check for "/".
31 (commented on others PR)
Minor typo, should be "workflow of a" instead
32 (commented on others PR)
Can consider removing "it is" too
33 (commented on others PR)
What does this do? Expand the width of md?
34 (commented on others PR)
Should be removes
35 (commented on others PR)
Should be removes
36 (commented on others PR)
"product in a supplier" sounds a bit weird, maybe "a product managed by a supplier or warehouse" is better
37 (commented on others PR)
Add warehouse or supplier to a supplier?
38 (commented on others PR)
Should be add "warehouse or supplier" instead
39 (commented on others PR)
Same as above, "product managed by a supplier or warehouse" would be better
40 (commented on others PR)
Here too, we should review it if these are retrieved from our individual commands
41 (commented on others PR)
I forgot a full stop after "e.g" previously, should be "e.g."
42 (commented on others PR)
Maybe could be like "at least one of the parameters with its corresponding prefix"
43 (commented on others PR)
Should have a space between i/2' and :
44 (commented on others PR)
Should I include this in AddCommand as well? Since it's the first touch for users
45 (commented on others PR)
Minor typo, should be "from"
46 (commented on others PR)
Consistency across all log messages, should we be keeping the full stop? It concerns the above files as well.
47 (commented on others PR)
Should be EditSupplierDescriptor instead of Warehouse
48 (commented on others PR)
Is this meant to be an additional level of check?
49 (commented on others PR)
Extra line here
50 (commented on others PR)
Wow nice addition for these
51 (commented on others PR)
I think it's alright here because it's easier to take just the first word which would be the command word, in the parser we can ignore everything that comes after since there are no params to process.
52 (commented on others PR)
Could include the file format in front like TxtCommandHistoryStorage if appropriate
53 (commented on others PR)
Can consider directing the user to the function and class that does the saving since it is being mentioned here.
54 (commented on others PR)
Will try to help resolve this test case
55 (commented on others PR)
Are the blank spaces meant to be?
56 (commented on others PR)
I think is typo cos the rest don't have it
57 (commented on others PR)
Sentence can be quite long. Can have a line break for "Furthermore" onwards, should be a full stop instead of comma too.
58 (commented on others PR)
Minor issue but two blank space between the comma and last part of the sentence.
59 (commented on others PR)
Or a suggested phrasing could be:
The user frequently updates a specific warehouse and decides to create a new macro with the alias "uwm" for the command string "update ct/w n/MainWarehouse" so as to shorten subsequent command inputs.
60 (commented on others PR)
If the above were to be adopted,
If the user no longer needs the macro with the alias "uwm" and decides to remove it, it can be done by executing the removemacro uwm
command.
61 (commented on others PR)
Should we standardise whether to use correct or valid?
For data and format
62 (commented on others PR)
Same as above, should it be invalid or incorrect?
63 (commented on others PR)
Small issue but extra space here, commenting in case I miss it later
64 (commented on others PR)
Should be missing a space here
65 (commented on others PR)
Omg this is a lot of effort you put in. I'm thinking if we can use regex on this to pick out all the invalid prefixes
66 (commented on others PR)
Good work including comments for better readability
67 (commented on others PR)
Very good work abstracting all these out, it's still a headache that within each command there are so many different things to check for.
68 (commented on others PR)
Well explained
69 (commented on others PR)
Undone and redone sounds off, maybe can say Undo/Redo can only be used for commands that modified the CLI-nic data
70 (commented on others PR)
Can use 'if you' or 'the user'
Can include in the example that the user wants to undo an edit command for example.
Otherwise the second half can consider changing to 'the command executed will be 'undo'.
71 (commented on others PR)
Should there be more undoable commands?
72 (commented on others PR)
Good one including these comments for better readability
73 (commented on others PR)
Are these left empty intentionally?
74 (commented on own PR)
Hmmm... Okay I'm including these line breaks,
75 (commented on own PR)
Thanks for pointing it out, I do agree with you and have specified in the next commit!
76 (commented on own PR)
Oh yes good spot, these were written before we finalized the changes in our commands
77 (commented on own PR)
Yea this is outdated now, I have fixed it earlier. No wonder I couldn't find it hahaha
78 (commented on own PR)
Okay as per user guide, we only have Tag for products so yes this should be Remarks!
79 (commented on own PR)
It shouldn't be remarks either, it would look like this now and should be pretty straightforward without explanation. We can improve on it at a later time because UML is still rather unstable.
80 (commented on own PR)
Fixed!
81 (commented on own PR)
I'll update accordingly depending on how we are integrating Macro feature into all other features!
82 (commented on own PR)
I've broke it up to two parts so the warehouse only doesn't cover the front few prefixes.
83 (commented on own PR)
I've put it in tildas as it is a param
84 (commented on own PR)
This makes sense, I've edited it accordingly thanks!
85 (commented on own PR)
Hmmm... I'm not sure what you mean by that, do we have to implement a command class for logger? Aren't we using the in-built logger?
86 (commented on own PR)
I wrote it the way as you mentioned initially, then intellij prompted me that it will always return true and thus suggested to change to != null instead
. I'm not sure which is better coding practice but I could change it back and ignore the warning if we standarize it across out code
87 (commented on own PR)
Yup, because it is now an optional field and to make UI a lot less painful I've decided to set optional fields to "".
Unless we want to remove missing fields from UI which can be quite a headache.
88 (commented on own PR)
Oh yea you're right, I'll look into what I can abstract out without violating SLAP
89 (commented on own PR)
Oh yea I tried to use Type.supplier and Type.wareshouse but ran into some difficulty when testing for invalid input. I would have to create false input of Type format to do testing. I'll look into this again to see how we can resolve it, same as for the one below.
90 (commented on own PR)
Yea definitely!
91 (commented on own PR)
Thanks for the spot!
92 (commented on own PR)
I've made the change, thanks!
93 (commented on own PR)
I've changed it to use one of the pre-created descriptor!
94 (commented on own PR)
Oh yes, thanks for the good spot!
95 (commented on own PR)
Took me a good minute of staring hahaha, good spot here too!
96 (commented on own PR)
Good idea, will add in more comments
97 (commented on own PR)
Undo and redo should be fine and I'll add listmacro after it is merged in
98 (commented on own PR)
Oh yes I'll fix this, good catch!
99 (commented on own PR)
Hmmm okay I shall standardise them, another improvement is to display the help message when users select the autocomplete message
100 (commented on own PR)
Got it thanks!
101 (commented on own PR)
Yup, i was in the midst of editing both and got distacted by my UML hahahaa
102 (commented on own PR)
I've resolved this as well as standardise it with adding supplier! Good catch!
103 (commented on own PR)
Opps it wasn't meant to be changed but I forgot to change it back
104 (other comment)
Approve for testing purpose to see the badge shows CI fail
105 (other comment)
Test successful, icon changed to failing.
@zhengweii Revert back to pass CI
106 (other comment)
Updated to the following issues:
Issue #86 - As a standard user, I want to add my suppliers’ information and products
Issue #88 - As a standard user, I want to add details of warehouses and stocks for each product
107 (other comment)
Updated to the following issues:
Issue #88 - As a standard user, I want to add details of warehouses and stocks for each product
Issue #94 - As an intermediate user, I want to update the stock of a specific product in warehouses
108 (other comment)
Updated to the following issues:
Issue #91 - As a standard user, I want to delete a supplier/warehouse entry
109 (other comment)
Updated to the following issues:
Issue #93 - As I standard user, I want to view the information of a specific warehouse or supplier
110 (other comment)
Updated to the following issues:
Issue #92 - As a standard user, I can find medical products associated with warehouses or suppliers
111 (other comment)
Updated to the following issues:
Issue #90 - As a standard user, I want to access the command list/user guide
112 (other comment)
Updated to the following issues:
Issue #91 - As a standard user, I want to delete a supplier/warehouse entry
113 (other comment)
Associated to the following issues:
Issue #93 - As a standard user, I want to view the information of a specific warehouse or supplier
114 (other comment)
Updated to the following issues:
Issue #93 - As I standard user, I want to view the information of a specific warehouse or supplier
115 (other comment)
Updated to the following issues:
Issue #96 - Adds product information to a supplier
116 (other comment)
Closing issue as it is meant for week 7 tutorial.
117 (other comment)
LGTM
118 (other comment)
Closing deprecated issue.
119 (other comment)
Closing deprecated issue.
120 (other comment)
Closing deprecated issue.
121 (other comment)
Closing deprecated issue.
122 (other comment)
Issue resolved by Yu Ting in PR #108.
123 (other comment)
Issue resolved by Zheng Wei in PR #107.
124 (other comment)
UML Diagram can be accessed via this link to diagram.net stored on gdrive
125 (other comment)
Issue resolved by me in PR #112 .
126 (other comment)
Issue resolved by me in PR #113 .
127 (other comment)
Good thoughts, I believe handling upper/lower case conversion on our end would improve user experience instead of making it case-sensitive. Especially when they are not able to correct minor typo by retrieving last typed command using the up arrow key like we do in terminals.
You're right, I just tried for add command and it process everything but only keeps the results from the last occurrence. This is a bug and should be resolved unless a command explicitly takes in 2 of the same prefix. Good catch Zhen Lin.
I would think that redundant arguments can be safely ignored if they do not interfere with the given command. We can set up a response that notify them of the random string
while letting the command run through. This would be even more useful when we implement undo and redo commands.
128 (other comment)
Snapshot of what the current UI looks like
129 (other comment)
Will be including proper assertions in the next update instead.
130 (other comment)
In my PR I have addressed validation for names, addresses and remarks. Do we want to validate emails as well?
131 (other comment)
AddCommand, EditCommand and UpdateCommand have checks in place to ensure no duplication of entries (by name).
132 (other comment)
This could be similar to saving Macros preference.
It can be an enhancement to allow user to select themes for their app UI that will be added in #131
133 (other comment)
Good spot, I think we could standardise these two methods.
But it depends on how much flexibility we want to offer to users.
For now, supplier do allow for the same name but different phone and email while warehouse strictly do not allow for entries with same name.
134 (other comment)
Then we don't really need to change because it's more possible that suppliers can have a common name and the code now does an additional check on their phone number to make sure that they are not the same person. Whereas warehouse just dont allow name clash at all
135 (other comment)
I would think it complements with this "different suppliers/warehouses can have the same address/email/phone if they are subsidiary companies of an organisation" but I'm thinking more of allowing more than one supplier named "George" with different phone rather than warehouses named "George Ptd Ltd".
136 (other comment)
Correct me if I made a mistake in understanding,
Current implementation:
Supplier:
Same name, different phone and email - allowed
Same name, same phone or email - not allowed
Warehouse:
Same name, different phone and address - not allowed
Same name, same phone or address - not allowed
I think it does make sense that warehouse names should not be allowed to have same name even though they can share common phone and address(maybe same building?)
However, if we disallow name clashes for suppliers it might inconvenient users because they have to manually rename the supplier instead of writing the differences under remarks. (E.g. "George Lim, 987654321" vs "George Lim, 91234567" which are two different person)
137 (other comment)
It would depend on how we write the user guide actually. but I figured supplier would be a contact person but users are free to interchange between company name and contact person in name and remarks. By my understanding it would be better to keep things as they are, but let's get the opinions of others as well!
138 (other comment)
Resolved by Yu Ting in PR #146
139 (other comment)
Resolved by Qin Liang in PR #138
140 (other comment)
Resolved by Qin Liang in PR #138
141 (other comment)
Resolved by Qin Liang in PR #138
142 (other comment)
Product quantity not showing bug resolved
143 (other comment)
Deprecated after the implementation of REDO and UNDO function by Zhen Lin in PR #210
144 (other comment)
Thanks for the catch, we have resolved it in #212.
145 (other comment)
Thanks for the report, the documentation for update is present which is found by tester.
146 (other comment)
Thank you for the suggestion, this is currently being worked on and will be resolved in PR #222.
147 (other comment)
Thanks for the catch, we are now aware of this and will be fixed in PR #211.
148 (other comment)
Thank you for the suggestion, we will be updating it to adopt a more consistent format across our commands in PR #214 .
149 (other comment)
Thanks for the report, it's not a bug and we are still improving on the UI.
150 (other comment)
Thanks for the catch, single character names should be allowed and will be fixed in PR #211.
151 (other comment)
Thanks for trying, the definition of INDEX is included in the screenshot.
152 (other comment)
Thanks for the catch, duplicated issue of Name as in issue #183.
153 (other comment)
Thanks for the catch, duplicated issue of Name as in issue #183.
154 (other comment)
Thanks for the report, pairing means that the alias
will be associated with the command_string
and in this case typing the alias
would have the same effect as typing the command_string
. You can give it another try to see it at work. Phrasing has been improved in PR #211
155 (other comment)
Thanks for the report, the type in this case is indeed incorrect as the command is currently parsed by prefixes of interest. However, the error message is incorrect in the sense that it prompts the user that the type can be ps/pw but it shouldn't.
But thank you for for this report as we also noted an issue with incomplete commands which we will be fixing.
Edit:
This issue is covered by PR #216. Thanks once again.
156 (other comment)
Thanks for the report, we will be specifying this in PR #213
157 (other comment)
Thanks for the report, our team has discussed and decided that this is not needed now since we only have 1 example.
158 (other comment)
Thanks for the report, we will be making it clearer by having a screenshot to accompany each example which will be implemented in PR #213
159 (other comment)
Invalid as the screenshot left out the second example.
160 (other comment)
Thanks for the catch, duplicated issue of Name as in issue #183.
161 (other comment)
Thanks for the catch, duplicated issue of Name as in issue #183.
162 (other comment)
Thanks for the catch, but this should not affect usage and do refer to the CS2103 guide for the severity levels. Reassigned to low according to the follow:
severity.Low : A flaw that is unlikely to affect normal operations of the product. Appears only in very rare situations and causes a minor inconvenience only.
163 (other comment)
Thank you, duplicate issue similar to issue #195.
164 (other comment)
Thank you for the report, we did not set any validation for address as the variations are plenty and it may very well become a bug if we restrict the address pattern to Singapore-based only but the user wants to save an overseas address.
165 (other comment)
Good eye! Will be fixed in PR #213
166 (other comment)
Thanks for the report, similar to issue #186
167 (other comment)
Thanks for the report, will be updated as in issue #180
168 (other comment)
Thanks for the heads up, we will be implementing a way to view existing aliases in PR #222
169 (other comment)
Thanks for the catch, will be reviewed and fixed in V1.4
170 (other comment)
Thanks for the report, we have taken note and will be changing it to index in PR #214
171 (other comment)
The app is optimised for CLI users but it still can have the benefits of GUI.
We will look into implementing automatic drop down or upon certain keyEvent/commands in the future.
Edit:
This report is resolved in PR #225. Thank you once again for the report.
172 (other comment)
Deprecated due to requirement to keep the app functional offline. Can be reconsidered for future implementation.
173 (other comment)
Deprecated due to requirement to keep the app functional offline. Can be reconsidered for future implementation.
174 (other comment)
This functionality comes with AB3, adapted in PR #100.
175 (other comment)
Not as advanced as to offer command correction but minimally autocomplete functionality reduce the chances of typing mistakes.
176 (other comment)
Thanks for your report, the view
command has been reviewed and modified in V1.4 through PR #225. The view
command now displays the information in the response box.
Your suggestion is aligned with our find
command.
177 (other comment)
This user story is satisfied by both view
and find
commands.
Where find
is able to filter for suppliers/warehouses of interest and view
is able to quickly access the details of a particular supplier/warehouse.
178 (other comment)
Deprecated as we are only storing product quantity and not prices for now. Can be reopened for development in the future.
@gabztcr
(73 comments)1 (commented on others PR)
Maybe change the sections (deliverables, contacts, meetings) to their respective epics, following our meeting docs? E.g. this line of code can be "[EPIC] As a Product Manager, I can track my product’s development so that I can work better towards production deadlines. (Deliverables)"
2 (commented on others PR)
Noticed you left out type of Product Managers in here and elsewhere (e.g. "Product Manager who needs to be aware of changes in description of deliverables"). I believe we can leave these out for now. Just a note.
3 (commented on others PR)
For consistency, can we change to just "mark deliverables as completed"? (I'll update the changes on the docs)
4 (commented on others PR)
Can we change to small caps 'm' for 'Minimise'?
5 (commented on others PR)
In here and elsewhere, should we follow the user stories as closely as the gdoc since it's more or less cross-checked among ourselves? i.e. for this line of code, can it be 'contact the right person if needed'? Alternatively, 'locating the right person easily' would work, since this user story is about editing the POC.
6 (commented on others PR)
Should we take out "(completed deliverables / total deliverables)" since it may lead to confusion? It may be misunderstood as completed deliverables or total deliverables instead of over. Alternatively to explicitly state "completed deliverables out of total deliverables".
7 (commented on others PR)
For consistency, can we have "keep them up-to-date" for the 'so that' portion?
8 (commented on others PR)
Can we have back the 'remember and retrieve important information' under 'so that' portion?
9 (commented on others PR)
Can we capitalise the 'i' in 'keep any data that i want'?
10 (commented on others PR)
Can we have plural 'contacts' instead of 'contact' under 'so that' portion?
11 (commented on others PR)
Did you miss the epic "As an inexperienced or forgetful Product Manager, I can refer to a user guide as I’m using the app so that I am able to use it as intended"? The user stories in this epic are not reflected.
12 (commented on others PR)
Here and elsewhere, noticed the numbering isn't correct, but I believe markdown solves this automatically. Have to check again? Just a note.
13 (commented on others PR)
In here and elsewhere, for consistency, can we ensure all the lines end with periods (.)?
14 (commented on others PR)
Can we ensure the use case IDs are in consecutive order, i.e. this should be UC11 and delete contact should be UC12?
15 (commented on others PR)
Can we change to singular 'Deliverable'? (side note: we may need to redefine this keyword. Personally it sounds slightly vague though I know this definition was taken from online).
16 (commented on others PR)
Should we leave this keyphrase out since I don't think we use it anywhere?
17 (commented on others PR)
Can periods be included for all the epics too?
18 (commented on others PR)
Have seen that the rest have periods now. How about this line too?
19 (commented on others PR)
I believe you added the 'so that' portion wrongly here. It should be for the "view my contacts and their relevant details" user story under EPIC B. Could you help to change that?
20 (commented on others PR)
Could we change this to "view a helpful popup"? Just a small grammar error.
21 (commented on others PR)
I think your suggestion would work for now.
22 (commented on others PR)
Can we fix the typo here? Maybe in the next big commit for UG. Just to note.
23 (commented on others PR)
Maybe a more meaningful description?
24 (commented on others PR)
Perhaps we can include setDeliverableInView(target) for marking a deliverable done as well.
25 (commented on others PR)
Can we have the JavaDoc edited to fit Deliverables? 😸
26 (commented on others PR)
Would hyperlinking just once in the first find
code in line 156 and deleting the entire line 157 be better for succinctness? Here and elsewhere.
27 (commented on others PR)
Can we use more "you" language, i.e. "in your deliverable list"?
28 (commented on others PR)
Can we stick to "Shows a list of all meetings in your meeting list" for consistency? (or is this too repetitive?)
29 (commented on others PR)
#151 Does the first line imply that other codes are acceptable? I also think that tips should be kept short. Here is an alternative suggestion:
Put "PHONE
should only contain numbers, and must be at least 3-digits long" under Format
Tip can be "Leave out the + sign for PHONE
s with country codes"
30 (commented on others PR)
Example email is incorrect: should be jordanwoods@glutter.com.
31 (commented on others PR)
Order is incorrect: should be "edits the email address and phone number ...."
32 (commented on others PR)
Tag for description should be "d/"
33 (commented on others PR)
May want to include the comment for the sub-test case here? i.e. //same name, same email, different role -> returns true
.
Same for the following case.
34 (commented on others PR)
I got a different impression about the reasoning for this overlapping issue.
I thought that the reason should be "Meeting timings may overlap as you may wish to send a representative for your clashing meetings". Something along these lines.
May want to consider putting this as a Note
(i.e.
35 (commented on others PR)
Lower case 'b'
36 (commented on others PR)
Reversed information: should be "MODE
can be db
(dashboard), dv
(deliverable), ..."
37 (commented on others PR)
Just a mental note that we may need to explain the main components in our GUI (command box, feedback box, navbar, left panel, right panel) at the start of the UG with a screenshot
38 (commented on others PR)
May want to consider replacing "used" with "as shown"/"as seen"?
39 (commented on others PR)
Missing fullstop?
40 (commented on others PR)
Consider using You are already in this mode!
or Mode is presently displayed!
so it appears more like the user made a mistake.
41 (commented on others PR)
Does this mean users will get something like Mode switched to: dv
? Are we able to convert into Mode switch to: deliverable
(along with the other models) instead? 😨
42 (commented on others PR)
Missing exclamation mark? (Just ensure the message punctuations are consistent throughout the models)
43 (commented on others PR)
Think we agreed previously that the messages should be from the perspective of the app. Here and else models, Viewing contact
should be Displayed contact: %1$s
.
Also, I think list command should be Listed all contacts!
if it is not already. Clear should be Cleared all contacts!
.
44 (commented on others PR)
Suggest to edit to Chrystal's phrasing: You cannot add a contact with the same name and email as another existing contact
. Here and elsewhere for the other commands/models.
45 (commented on others PR)
May want to leave out the example to keep the Note
short. What do you think?
46 (commented on others PR)
Did we edit the code to validate this when we parse the datetime?
47 (commented on others PR)
May want to consider leaving out examples as mentioned previously.
48 (commented on others PR)
May want to change to LogicManager
s
49 (commented on others PR)
May want to change to PE-D according to 2103T website
50 (commented on others PR)
Is there intentionally added for future reference?
51 (commented on others PR)
May want to change to Address
and Tag
52 (commented on others PR)
Missing words?
53 (commented on others PR)
Punctuation issue. May consider either:
-Contacts can have a role—developer or stakeholder—and also a description
-Contacts can have a role (developer or stakeholder) and also a description
54 (commented on others PR)
May consider using Find
, Name
and Description
55 (commented on others PR)
May consider "Person
to Contact
"
56 (commented on others PR)
May consider "Person
to Contact
"
57 (commented on others PR)
Should be "...delete a meeting from displayed meeting list." ("displayed" is optional).
Same for line 19 under edit command
58 (commented on others PR)
Might want to standardise the periods at the end of all your bullet points in this file. Currently some have and some don't. [I personally suggest taking out all periods]
59 (commented on others PR)
Capital M
60 (commented on others PR)
All first words should be past tense. Here and elsewhere ("included", "stardardized", "updated", etc.)
61 (commented on others PR)
Should be lower case 'glossary'
62 (commented on others PR)
Should be "(#general)" I think?
63 (commented on others PR)
should be "title" instead of "name"
64 (commented on others PR)
is this trailing whitespace intentional?
65 (commented on others PR)
Based on ur UG edit, should this be "Finalise design and plan"?
66 (commented on others PR)
should be British English "Finalise" instead of "Finalize"
67 (commented on others PR)
Based on ur UG edit, should description be just "Works at Johnson & Johnson"?
68 (commented on others PR)
Here and every example in the UG: Is it safe to assume that there exist seed data in the app that corresponds to the UG so users can immediately work with them?
69 (commented on others PR)
Can paraphrase to "...update the UI to only show information related to the new mode."
70 (commented on others PR)
May want to paraphrase to "Takes longer to type the user commands."
71 (commented on others PR)
May want to reorder to deliverable > meeting > contact files
72 (commented on others PR)
Can edit to "only deliverablebook.json
is created."
73 (commented on others PR)
Do you mean: "The easiest way is to add a dash (-
) to a saved deliverable's milestone."?
Also, not very sure if "easiest way" may imply other ways. May want to skip to just "Add a dash (-
) to a saved..."
74 (commented on own PR)
I made two fields for Deadline class. One a String, and another a LocalDateTime. We can use the latter for comparison, and leave the former as it is for string rendering (y)
75 (commented on own PR)
I just tried and the whitespace doesn't get reflected on markdown. The current implementation should work alright (there's an illusion of whitespace). Thanks for the suggestion 😸 !
76 (commented on own PR)
🦆
77 (commented on own PR)
Message will be removed later on, so will not be making extra changes.
78 (commented on own PR)
Message will be removed later on, so will not be making extra changes.
79 (commented on own PR)
Reworded to "As CONTACTS
is not related to your contact list, you can include those not present in it."
80 (other comment)
Will create another PR for this commit.
81 (other comment)
No need to review/merge.
82 (other comment)
Checks failing due to Edit command not available yet.
83 (other comment)
Fixes #3 and #5
84 (other comment)
Change the "/dead" token to "/by" and "/desc" to "/d"
85 (other comment)
Amend to use the correct constructor
86 (other comment)
We shall look into the succinctness of all our documentation again in the future. LGTM!
87 (other comment)
Fix the code conditions for isSameMeeting & isSameDeliverable (and reflect in UG)
-Meeting: Title, from, to
-Deliverable: Title, deadline
@shadowezz
88 (other comment)
Need to edit the width of the status column abit. By default, the completed
tag is truncated.
89 (other comment)
Will not be renaming packages based on Prof Damith's announcement
90 (other comment)
Moved to issues #201 #204
91 (other comment)
Concluded that such a command should remain possible and accepted.
92 (other comment)
@chrystalquek, have to allow repeat of switch db
command, along with the other modes
@samlsm
(72 comments)1 (commented on others PR)
would it be better to remove tutorial slots part cause we don't really have a tutorial?
| `* * *` | Tutor | Delete student entries | Update my list of students if a student were to drop the module |
2 (commented on others PR)
| `*` | Tutor teaching modules that require many written assignments | View my student's written submissions | Mark/review their homework |
3 (commented on others PR)
+ PREFIX_TAG + "CS2103 Tutorial "
+ PREFIX_TAG + "Experienced";
4 (commented on others PR)
**Edit Student** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG]…`<br> e.g.,`edit 2 n/James Lee e/jameslee@example.com`
5 (commented on others PR)
I think someone forgot to change this previously...
* `edit-student 1 t/@johndoe e/johndoe@example.com` Edits the telegram handle and email address of the 1st student to be `@johndoe` and `johndoe@example.com` respectively.
6 (commented on others PR)
Hmm... I think putting it at the top would be more convenient for users to just take a quick look... But the word 'summary' makes it feel like we concluding something so its weird for it to be at the top... Why not change the heading to like 'Command List' or something equivalent?
7 (commented on others PR)
I think keeping the previous would be better also... The previous formatting was based on the original user guide we got for the address book... so i think it is fine that the table and commands not consistent.
8 (commented on others PR)
I think clear
is used to clear all students though... delete
is meant to delete a specific student...
9 (commented on others PR)
#### Listing all students : `list`
10 (commented on others PR)
#### Clearing all students : `clear-student`
11 (commented on others PR)
#### Editing a student : `edit-student`
12 (commented on others PR)
#### Clearing all classes : `clear-class`
13 (commented on others PR)
Perhaps it might be good to follow the same format as DeleteStudentCommandTest
to be consistent?
* Contains integration tests (interaction with the Model, UndoCommand and RedoCommand) and unit tests for
* {@code EditStudentCommand}.
14 (commented on others PR)
I like how you specify that clear
removes all students!
15 (commented on others PR)
public void addStudent(Student student) {
students.add(student);
}
16 (commented on others PR)
Would this be a better name?
public void resetData_withDuplicateModuleClasses_throwsDuplicateModuleClassException() {
// Two moduleClasses with the same identity fields
ModuleClass editedCS2103T = new ModuleClassBuilder(CS2103T_TUTORIAL).withStudentIds().build();
List<Student> defaultStudents = TypicalStudent.getTypicalStudents();
List<ModuleClass> newModuleClasses = Arrays.asList(CS2103T_TUTORIAL, editedCS2103T);
TutorsPetStub newData = new TutorsPetStub(defaultStudents, newModuleClasses);
assertThrows(DuplicateModuleClassException.class, () -> tutorsPet.resetData(newData));
}
17 (commented on others PR)
Would this be a better name?
//// Student related tests
18 (commented on others PR)
'''suggestion
/**
Wraps all data at the application level.
Duplicates are not allowed (by .isSameStudent and .isSameModuleClass comparison).
*/
19 (commented on others PR)
Perhaps a line break here will make it look less cramp?
Index outOfBoundIndex = INDEX_SECOND_ITEM;
// ensures that outOfBoundIndex is still in bounds of Tutor's Pet list
assertTrue(outOfBoundIndex.getZeroBased() < model.getTutorsPet().getModuleClassList().size());
20 (commented on others PR)
should this be
// identity fields
21 (commented on others PR)
same for the data fields comment
22 (commented on others PR)
Perhaps this comments and the few below should start with lower caps?
// one keyword
23 (commented on others PR)
would it be better to leave a line here?
// manually link first class to first student
ModuleClass moduleClass = model.getFilteredModuleClassList().get(0);
Student student = model.getFilteredStudentList().get(0);
Set<UUID> studentUuids = new HashSet<>(moduleClass.getStudentUuids());
studentUuids.add(student.getUuid());
ModuleClass modifiedModuleClass = new ModuleClass(moduleClass.getName(), studentUuids);
24 (commented on others PR)
perhaps this comment should start with lowercase?
private TypicalModuleClass() {} // prevents instantiation
25 (commented on others PR)
perhaps this should start with lowercase?
// manually added
26 (commented on others PR)
Perhpas this is missing a full-stop?
// Manually added - Student's details found in {@code CommandTestUtil}.
27 (commented on others PR)
perhaps this should start with a lowercase?
public static final String KEYWORD_MATCHING_MEIER = "Meier"; // a keyword that matches MEIER
28 (commented on others PR)
Perhaps this would be a better naming?
''' suggestion
public void execute_indexSpecifiedListIsNotFiltered_showsStudentsInClass() {
29 (commented on others PR)
public void execute_invalidIndexSpecifiedClassListIsNotFiltered_throwsCommandException() {
30 (commented on others PR)
Would it be good to specify which list?
/**
* Removes all {@code studentUuids} from each and every {@code ModuleClass} in the class list.
*/
31 (commented on others PR)
Perhaps student manager would be a better name?
/**
* Removes all {@code Student}s from the student manager.
* Also removes all {@code UUID}s from each {@code ModuleClass}.
*/
32 (commented on others PR)
I am not sure about this... But should the full-stop be after the example?
/**
* Ensures that Tutor's Pet will not be able to boot up given an incomplete {@code UUID}
* (e.g "0c527a3f-8a6f-4c16-b57d-").
*/
33 (commented on others PR)
Perhaps it will be a good idea to keep the formatting consistent with the subsequent tests?
'''suggestion
/**
* Ensures that Tutor's Pet will not be able to boot up if two or more {@code Student}s are found with the same {@code UUID}.
*/
34 (commented on others PR)
"something is wrong" feels a little generic.. Perhaphs it is good to specify?
// Check that the set of student UUIDs within a class is a subset of that of
// all student UUIDs in uniqueStudentUuids. Otherwise, Tutor's Pet would not
// boot up due to data corruption.
35 (commented on others PR)
would canUndo_noPrevState_returnFalse()
be a better name for this test so as to keep it consistent with the other namings?
36 (commented on others PR)
would undo_noPrevState_throwsUndoStateException()
be a better name for this test so as to keep it consistent with the other namings?
37 (commented on others PR)
should this use case resume at step 1 instead? since user will need to request to edit a specific lesson again..
38 (commented on others PR)
should this use case resumes at step 1?
39 (commented on others PR)
should this use case resumes at step 1?
40 (commented on others PR)
should this be attendance record?
41 (commented on others PR)
Perhaps to keep it consistent with other constraints message we can use
public static final String MESSAGE_CONSTRAINTS = "Days should only contain capital letters.\n"
42 (commented on others PR)
Perhaps it is a good idea to keep the javadoc comment consistent with JsonAdaptedModuleClass..
'''suggestion
/**
* Converts a given {@code Lesson} into a {@code JsonAdaptedLesson} for Jackson use.
*/
43 (commented on others PR)
Perhaps it is a good idea to keep javadocs consistent?
'''suggestion
/**
* Every field must be present and not null.
* Creates a new lesson with the specified parameters.
*/
44 (commented on others PR)
Perhaps it would be good to use another class index here instead of both 1s so that it is clear the last index is accepted?
45 (commented on others PR)
Is it possible to static import this?
46 (commented on others PR)
as well as the few below...
47 (commented on others PR)
70 feels like a magic number... Do u mind changing it to the constant VALID_PARTICPATION_SCORE_80
?
48 (commented on others PR)
same for the ones below... and the 1000 could be change to INVALID_PARTICIPATION_SCORE_101
...
49 (commented on others PR)
Not sure if this would sound better...
A `TutorsPetState` object contains a Tutor's Pet state, along with a message that describes the changes relevant to this state.
50 (commented on others PR)
Is there extra spacing here?
51 (commented on others PR)
Not sure if this would be better...
It contains the `Attendance`s of all `Student`s who have attended the particular lesson.
52 (commented on others PR)
not sure if this sounds better...
* After finding the class CS2103T and student Alex, you wish to view all your students and classes.
Hence, you type in the command `list` and and press <kbd>Enter</kbd>.
53 (commented on others PR)
just a suggestion...
* Now you can see all your students and classes.
54 (commented on others PR)
Should we put these few points under a Constraints:
section?
55 (commented on others PR)
Would this sound better?
* Alex is a student in your CS2103T class. After your lesson in week 1, you wish to give him a participation score of 45.
56 (commented on others PR)
should we specify that the score is for participation?
* Now you have successfully edited Alex's participation score from 35 to 45 points.
57 (commented on others PR)
Not sure if this would sound better...
* If the {@code studentToRemove} does not exist in the {@code attendanceRecord}, the {@code attendanceRecord}
* remains unchanged.
58 (commented on others PR)
Not sure if this is correct but I referred to ur previous javadoc for inspiration...
/**
* Returns a {@code Lesson} where the {@code Attendance}s of the {@code studentToRemove} have been removed.
*/
``
59 (commented on others PR)
/**
* Returns a {@code Lesson} where all {@code Student}s have been removed.
*/
60 (commented on others PR)
Not sure if invalidStudentToRemove
or targetStudentToRemove
would sound better...
61 (commented on others PR)
Perhaps this would be better?
'''suggestion
/**
* Creates a {@code Lesson} with the given {@code lesson} and {@code displayedIndex}.
*/
62 (commented on others PR)
// try saving when the file exists
63 (commented on others PR)
Should this be static import?
64 (commented on others PR)
Not sure if organise is a good word to use here as technically, all they can do is link...
65 (commented on others PR)
Should this be numbered?
66 (commented on others PR)
Same for this...
67 (commented on others PR)
Perhaps it might be good to specify class here?
* Overlapping lessons are detected by calling the {@code isOverlapLesson} method in {@code Lesson} class.
68 (commented on others PR)
Perhaps it would be good to explain what "copied properly" means here?
69 (commented on others PR)
Not sure if this would sound more user-centric(?) and more consistent with your other commands like add-class
1. You type `delete-class 2` and press <kbd>Enter</kbd>.
70 (commented on others PR)
same for the commands below...
71 (commented on others PR)
Perhaps it would be better to keep the format same as the previous few?
1. Other incorrect commands to try:
* `find-student`
Expected: The displayed student list does not get updated. Error details shown in the status message.
72 (commented on others PR)
1. Editing a lesson while all lessons are displayed.
73 (commented on own PR)
I guess the refactor cant detect that... THANKS!
74 (commented on own PR)
HAHA cause dexter added that in his i think
75 (commented on own PR)
That test was missing so i just added it and made it consistent with what was in EditStudentCommandTest
76 (commented on own PR)
Issue #156.
I am going to do another PR to change the rest but since I was in that document I thought maybe could change that first...
77 (commented on own PR)
not sure if thursday 2pm - 4pm: weeks 1 2 3 4 5 would look better?
78 (commented on own PR)
Hmm.. maybe we just seperate into two sections since we plan to follow the ordering of UG
79 (commented on own PR)
Not sure... Perhaps it can be removed at the end if no one adds anything?
80 (commented on own PR)
isnt our target users nus cs tutors tho... wouldn't luminus be something the users are familiar with..
81 (other comment)
Manually copy from the result display box
82 (other comment)
Change number of occurrence to number of weeks in UI
@BobbyZhouZijian
(71 comments)1 (commented on others PR)
UPPER_CASE shoudnt be in markdown
2 (commented on others PR)
There is no line breaking here.
3 (commented on others PR)
LGTM
4 (commented on others PR)
quick start should start with ##
5 (commented on others PR)
The contents should be hyperlink
6 (commented on others PR)
I will add the hyperlinks
7 (commented on others PR)
the list should have the ``
8 (commented on others PR)
I think there should not be indentation here
9 (commented on others PR)
Should it be "the list of all tasks"?
10 (commented on others PR)
should it be "list all tasks"?
11 (commented on others PR)
Same as above
12 (commented on others PR)
are we going to skip displaying or just display an empty list? If we are just displaying an empty list, is it still considered an extension?
13 (commented on others PR)
list all tasks
14 (commented on others PR)
the list of all tasks
15 (commented on others PR)
same as above. i'll ignore it for the following parts
16 (commented on others PR)
Is 'exit' inside the use cases? should we add it?
17 (commented on others PR)
This is still not changed
18 (commented on others PR)
The class here is still not changed to Task
19 (commented on others PR)
Why extra indent here?
20 (commented on others PR)
Why extra indent?
21 (commented on others PR)
same here
22 (commented on others PR)
^
23 (commented on others PR)
nice!
24 (commented on others PR)
Should we use trimmedTitle instead of trimmedName?
25 (commented on others PR)
Do you wanna change "address book" to "PlaNus" now or do it later?
26 (commented on others PR)
Does the name "fullTitle" make sense?
27 (commented on others PR)
Why extra indent?
28 (commented on others PR)
just to check, the corresponding UI class variable is also changed right?
29 (commented on others PR)
What's the rationale of changing it to Amy?
30 (commented on others PR)
agree. and better put date as yyyy-mm-dd
31 (commented on others PR)
the attribute in the userguide says date: tho
32 (commented on others PR)
Should have clearer documentation here
33 (commented on others PR)
^
34 (commented on others PR)
Clearer documentation pls.
35 (commented on others PR)
Why is this private variable in between to public variables?
36 (commented on others PR)
I think a better documentation is : construct an empty Description when user didn't provide the description field. Caveat: Only called when the user didn't key in this field.
37 (commented on others PR)
Same. private variable in between public variables.
38 (commented on others PR)
Same. I think the documentation can be better.
39 (commented on others PR)
I would recommend making this documentation clearer as well. Add another line to specify that this is only used to construct an empty Phone when the field is not in the task.
40 (commented on others PR)
^
41 (commented on others PR)
Nice that you changed the UML as well.
42 (commented on others PR)
oops, I think this should have been "description". My bad I forgot to change this. Can you change it?
43 (commented on others PR)
Should we really allow type to be any string? Or just one word letters connected by '-'
44 (commented on others PR)
Is there a reason to keep a counter? Don't we just need to traverse through all the types?
45 (commented on others PR)
iirc there's a "requireNonNull" method there? Can we use it?
46 (commented on others PR)
hmmm maybe you can consider using the join method?
47 (commented on others PR)
Maybe you can consider using the "join" method?
48 (commented on others PR)
I think we are changing all these to PlaNus
49 (commented on others PR)
We can. But I don't think its a big issue as long as there is no bug. Stringbuilder looks cleaner tho I would say.
50 (commented on others PR)
Maybe add another extension when the task index supplied is invalid?
51 (commented on others PR)
I think there's an extra '/'
52 (commented on others PR)
Are you throwing any CommandException here?
53 (commented on others PR)
What are the B, C and D for?
54 (commented on others PR)
Will there be any case where a valid user input will make any of these null?
55 (commented on others PR)
Missing period at the end.
56 (commented on others PR)
I think you can use the formatter from the DateTime class if possible
57 (commented on others PR)
No need day of week?
58 (commented on others PR)
should be lesson
right
59 (commented on others PR)
Should remove this
60 (commented on others PR)
Actually, I think we can make the Time, Date and DateTime class inherit or implement a common interface. Maybe I'll refactor this later.
61 (commented on others PR)
Why use plural?
62 (commented on others PR)
The checks can be abstracted out into a method
63 (commented on others PR)
repeated code
64 (commented on others PR)
i feel isSameTimeSlotAs is better
65 (commented on others PR)
What if their start date and end date does not overlap?
66 (commented on others PR)
^
67 (commented on others PR)
Should abstract out the method.
68 (commented on others PR)
Javadocs for this?
69 (commented on others PR)
javadocs?
70 (commented on others PR)
I think we remove this since we are not implementing this feature anymore.
71 (commented on others PR)
Why do you need equal? I thought when equal, this should return false
72 (commented on own PR)
Should I just delete it or mark it as coming soon?
73 (commented on own PR)
got it
74 (commented on own PR)
nice catch
75 (commented on own PR)
resolved
76 (commented on own PR)
sry this was a mistake. I changed it. the datetime won't be null
77 (commented on own PR)
I have removed DATE_FORMAT. Here the correct pattern for java DateTimeFormatter is actually "dd-MM-uuuu" instead of "dd-MM-yyyy".
78 (commented on own PR)
good point.
79 (commented on own PR)
cuz u can list out a set of tasks using find as well?
80 (commented on own PR)
Same. find can also list a set of lessons
81 (commented on own PR)
seems FindTask current cannot find by time
82 (commented on own PR)
yes
83 (commented on own PR)
i think this is correct.
84 (commented on own PR)
^
85 (other comment)
Just mark it as done when you finish your part
86 (other comment)
What are left to be done for the use cases? Maybe can add inside description?
87 (other comment)
Completed
88 (other comment)
Can you push the branch to the team's repo so that we can pull and test locally?
Also codecov seems to have dropped. Maybe can add some relevant test cases to bring it back?
89 (other comment)
This has been completed in #73
90 (other comment)
The error message doesn't quite match the actual error.
91 (other comment)
I think also need to update the DG
92 (other comment)
I'll just work off this branch. Can merge first
93 (other comment)
fixed
94 (other comment)
Remove the optional bracket on datetime
95 (other comment)
also need to refactor the MESSAGE_USAGE
96 (other comment)
Use DateFormat class from java
97 (other comment)
It is clearly stated or can be intuitively inferred in the UG?
98 (other comment)
CI failed. Please check the details and fix them.
99 (other comment)
fixed with the overlap feature.
100 (other comment)
handled properly in the regex of every attribute.
@wltan
(70 comments)1 (commented on others PR)
Is it necessary to perform test
after check
? I believe check
already includes test
.
https://stackoverflow.com/questions/50104666/gradle-difference-between-test-and-check
2 (commented on others PR)
Duplicate https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/13#discussion_r492195636
3 (commented on others PR)
Do glossary terms need to be italicized? May need to standardize.
4 (commented on others PR)
Can I confirm that this line will be left unchanged? Otherwise LGTM.
5 (commented on others PR)
Ok, we will review this again towards the end of v1.2.
6 (commented on others PR)
Can we verify that this workflow runs smoothly on our repo?
Perhaps you can push an equivalent change directly to a non-master branch first, and see what happens to the gh-pages
branch.
7 (commented on others PR)
Ok, as seen from https://github.com/AY2021S1-CS2103T-W16-3/tp/commit/65e48f7a1f38c68e643cb29f8d29e0951f06bc4c the CI is able to build and deploy GitHub Pages properly.
8 (commented on others PR)
Suggest extracting these changes to their own commit/issue/PR as they are technically not related to the issue at hand.
9 (commented on others PR)
See above (https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/23#discussion_r495016936)
10 (commented on others PR)
See above (https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/23#discussion_r495016936)
11 (commented on others PR)
Minor typo fixes can be left as part of this PR.
12 (commented on others PR)
Similar to https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/7#pullrequestreview-492595656, Cygwin messes up on CRLF line endings in the scripts. Not a major problem; the hooks will work as long as the scripts are changed to LF line endings.
13 (commented on others PR)
After discussion, changes can be left in this PR, but should be separated into different commits so that they will show up in the squashed commit upon merge.
14 (commented on others PR)
These don't look like intentional changes 😕
15 (commented on others PR)
https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/39#discussion_r495585791 same here
16 (commented on others PR)
Minor typo:
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `TransactionListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
17 (commented on others PR)
Indentation still appears to be slightly off here compared to the previous state
xmlns:fx="http://javafx.com/fxml">
18 (commented on others PR)
transaction
is no longer the parameter name
* Returns an add expense command string for adding the {@code expense}.
19 (commented on others PR)
This should be changed as well, my bad!
* Returns an add income command string for adding the {@code income}.
20 (commented on others PR)
Perhaps the variable name should be ft
instead of ab
?
Also I don't see any method signature for withTransaction(String, String)
. Is this a problem inherited from the original AB3?
21 (commented on others PR)
Same as above, consider changing ab
to ft
.
22 (commented on others PR)
public static List<Expense> getTypicalExpenses() {
return getTypicalTransactions().stream()
.map(TransactionBuilder::new)
.map(TransactionBuilder::buildExpense)
.collect(Collectors.toList());
}
public static List<Income> getTypicalIncomes() {
return getTypicalTransactions().stream()
.map(TransactionBuilder::new)
.map(TransactionBuilder::buildIncome)
.collect(Collectors.toList());
}
Might be possible to further simplify by extracting out the common parts.
23 (commented on others PR)
Missing a blank line here
24 (commented on others PR)
+ "When on Expenses tab: Searches all expenses.\n"
25 (commented on others PR)
Should this be something like a ListOverviewCommand
instead, to highlight that it is for the overview tab?
26 (commented on others PR)
Ok, makes sense.
27 (commented on others PR)
Perhaps getTypicalFinanceTracker().getExpenseList().size()
?
By the way, it doesn't really matter here but the expected value is supposed to be the first argument to assertEquals
, and the actual value comes second.
28 (commented on others PR)
Does this need to be fixed?
29 (commented on others PR)
I think we should try to avoid newlines mid-sentence?
30 (commented on others PR)
Would look better italicized IMO
31 (commented on others PR)
Perhaps this could be a subheading instead?
32 (commented on others PR)
Same as above, combine with the previous line
33 (commented on others PR)
#### Workflow changes
34 (commented on others PR)
- `ModelManager`: 3 filteredLists for Transactions, Incomes and Expenses respectively, `FinanceTracker`: 1 transactionList **(Yong Ping)**
35 (commented on others PR)
This hasn't been resolved yet
36 (commented on others PR)
My previous comment https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/118#discussion_r506540945 was referring to Line 7, not Line 6
37 (commented on others PR)
1. Download the latest `fine$$e.jar` from [here](https://github.com/AY2021S1-CS2103T-W16-3/tp/releases).
38 (commented on others PR)
public static final Comparator<Transaction> TRANSACTION_COMPARATOR =
Comparator.comparing((Transaction t) -> t.date).thenComparing(t -> t.title);
39 (commented on others PR)
I feel like this could be improved somehow, due to the similar logic. I'll try to think of something
40 (commented on others PR)
* Sorts the list based on {@code TRANSACTION_COMPARATOR}.
41 (commented on others PR)
Never mind, I think it should be fine to leave it as it is for now
42 (commented on others PR)
I think the root cause is that setValue
does not perform any validation.
In addition, the raw input value is being used in the CommandResult
.
43 (commented on others PR)
This is also due to the fact that when amounts are being written, it is using BigDecimal::toString()
, where perhaps better abstractions could be done.
44 (commented on others PR)
In addition, the raw BigDecimal
value is being used for the UI display, which will cause inconsistencies as the precision (number of decimal places displayed) is not fixed.
45 (commented on others PR)
Instead of duplicating code from Amount
, perhaps you could write this to encapsulate an Amount
instead?
This should solve the validation and abstraction issues faced in the other classes.
46 (commented on others PR)
Uncaught exception when no argument is supplied i.e. set-expense-limit
.
This could be handled either here in the parser or within the command execution (as the amount is being validated).
47 (commented on others PR)
Also, avoid dealing directly with BigDecimal
as it will break if we decide to change the underlying data type for Amount
. If there's anything you need from the underlying value, just add the functionality to Amount
.
48 (commented on others PR)
This change should be reverted to prevent merge conflicts with #152.
(unless we are merging this one first?)
49 (commented on others PR)
Is it possible to convert these into negative test cases instead? It will help us avoid extra work later on if coverage needs to be brought back up.
50 (commented on others PR)
return value.compareTo(BigDecimal.ZERO) >= 0;
51 (commented on others PR)
It's slightly odd that the space character is the only character not explicitly represented. However, I don't see a good way to express it on its own unless all three parts are combined i.e.
'''
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz !"#$%&'()*+,-./:;>=>?@[]^_'{|}~
'''
52 (commented on others PR)
It may be useful to note here that each character is its own equivalence partition, in case someone casts doubt on the efficiency of this testing later on.
53 (commented on others PR)
Same as https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/257#discussion_r515482192 above
54 (commented on others PR)
* `AMOUNT`, `AMOUNT_FROM` and `AMOUNT_TO` should each be a non-negative number with up to 8 digits before the decimal point and with 0 or 2 decimal places after.
55 (commented on others PR)
The changes here were reverted during the force push. #247 is now unresolved.
56 (commented on others PR)
Inconsistent plurality between amounts and dates.
* `AMOUNT`, `AMOUNT_FROM` and `AMOUNT_TO` should be a non-negative number with up to 8 digits before the decimal point and with 0 or 2 decimal places.
An optional `$` may be included in front as well.
* `DATE`, `DATE_FROM` and `DATE_TO` should be a valid calendar date in `dd/mm/yyyy` format, representing day, month, and year respectively.
- OR -
* `AMOUNT`, `AMOUNT_FROM` and `AMOUNT_TO` should be non-negative numbers with up to 8 digits before the decimal point and with 0 or 2 decimal places.
An optional `$` may be included in front as well.
* `DATE`, `DATE_FROM` and `DATE_TO` should be valid calendar dates in `dd/mm/yyyy` format, representing day, month, and year respectively.
However, the latter may suggest that multiple numbers or dates can be assigned to each amount/date.
57 (commented on others PR)
Another alternative using each
:
* `AMOUNT`, `AMOUNT_FROM` and `AMOUNT_TO` should each be a non-negative number with up to 8 digits before the decimal point and with 0 or 2 decimal places.
An optional `$` may be included in front as well.
* `DATE`, `DATE_FROM` and `DATE_TO` should each be a valid calendar date in `dd/mm/yyyy` format, representing day, month, and year respectively.
58 (commented on others PR)
Should Enhancement
be lowercase to remain consistent with the rest of the bullet points?
59 (commented on others PR)
### Overview
60 (commented on others PR)
### Summary of Contributions
61 (commented on others PR)
* Managed release `v1.2` (1 release) on GitHub.
62 (commented on others PR)
* Updated the GUI color scheme. (Pull requests [#75](https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/75))
* Updated the GUI basic layout from AddressBook3. (Pull requests [#75](https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/75), [#101](https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/101))
* Updated the layout of the User Guide. (Pull request [#169](https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/169))
63 (commented on others PR)
* User Guide:
* Updated User Guide to include Bookmark Expense and Income feature.
* Updated User Guide with the Introduction of Fine$$e.
* Developer Guide:
* Updated Developer Guide to include Bookmark Expense and Income feature.
64 (commented on others PR)
* Reported bugs and suggestions for other teams in the class. (examples: Practical Exam Dry Run)
65 (commented on others PR)
I believe it's the immediately adjacent line?
66 (commented on others PR)
I'm not sure if 'caching' the current date in a static variable is a good idea, as it may give unexpected results on legitimate behavior (e.g. when near midnight).
It might also make #246 harder to resolve.
67 (commented on others PR)
public static BookmarkTransactionBuilder parse(String args, String exceptionMessage) throws ParseException {
68 (commented on others PR)
File a bug report and link it in the PR description.
69 (commented on others PR)
70 (commented on others PR)
Should line 178-179 be a single line? Other commands are parsed in a single line too.
71 (commented on own PR)
Fixed
72 (commented on own PR)
Fixed
73 (commented on own PR)
Unsure if the keywords e.g. "transaction", "date", "amount", "expense", "income" should reference the class names.
74 (commented on own PR)
https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/178#discussion_r511513961
75 (commented on own PR)
Link to be fixed when overview of each tab has been added
76 (commented on own PR)
Ok. Should this change be mirrored in the user guide?
77 (commented on own PR)
Ok. Should there be a separate point to describe year then? Perhaps:
- For year values, it must be written in the standard 4-digit format, so 2019 should be written as
2019
and not just19
.
78 (commented on own PR)
setFrom
is used to override the previous value so that the excludes take effect. Otherwise, from
simply appends the files.
I am not sure why **/*.jar
has been excluded previously, but I don't want to touch it so it has been left that way.
79 (other comment)
Note that placeholders johndoe.md
and johndoe.png
are being removed as they are no longer needed.
80 (other comment)
It was found that the shell scripts do not produce any output unless problems are detected.
To make the pre-push hook and CI job more useful, the changes in #23 will also modify the scripts to print their status as each check is being run.
81 (other comment)
Note that while we intend to rename test methods to match the new model, we will leave the test data alone for now and revisit it in a follow-up issue.
82 (other comment)
https://github.com/AY2021S1-CS2103T-W16-3/tp/pull/39#pullrequestreview-497089729
Update the package names too to
ay2021s1-cs2103-w16-3.finesse
as discussed.
Edit: My bad, hyphens are illegal characters. How about
ay2021s1_cs2103_w16_3.finesse
as recommended here?
Recommend doing this in a separate PR. Refactoring the package would generate a large diff and make it difficult to review the model renaming.
83 (other comment)
Now that #39 has been merged, all that is left is to delete the Address
class, which is incidentally one of the CS2103T tP tutorial tasks.
84 (other comment)
How should we rectify this? Fix the sample command or fix the validation?
85 (other comment)
Closed with #136
86 (other comment)
Proposed improvements based on discussion in CS2101:
Add general description of what each tab is for and what the user can expect (including screenshot)
For commands with aliases/general command words, the title can show just the main command and then list below the alias and/or tabs the general command can be used on
Split transaction -> income and expense for edit and delete commands. This is because the user guide should be based on features available to the user, instead of what commands have been implemented behind the scenes.
Glossary to tell the user (or potential user/PE tester) what a transaction/income/expense represents in the real world, and what the data fields (title, amount, date category) are for.
87 (other comment)
UG bug: alias for list commands (lse
, lsi
) are not found in the user guide
88 (other comment)
My bad, was already fixed in #209
89 (other comment)
Bug accepted.
Root issue is that DateTimeFormatter
uses ResolverStyle.SMART
instead of STRICT
. https://stackoverflow.com/questions/32823368/java-8-localdatetime-is-parsing-invalid-date
Additional information on using uuuu
year instead of yyyy
as mandated by ResolverStyle.STRICT
:
90 (other comment)
Inconsistent tense for headings under Section 4. Some verbs are in present continuous tense, while others are in simple present tense.
91 (other comment)
Tagging this as a bug because it is undocumented behavior in the user guide, so testers can flag this as a potential bug.
92 (other comment)
Tagging this as a bug because it is undocumented behavior in the user guide, so testers can flag this as a potential bug (as noted in the description).
93 (other comment)
Issue still persists because the wrong file was changed.
94 (other comment)
Hi, I was the tester who reported this. I just learnt (from my own tP) that uuuu
is in fact used to represent years, my bad!
My point regarding the discrepancy between in-app and user guide explanations should still stand though.
@jonasngs
(69 comments)1 (commented on others PR)
Perhaps javadocs could be added for the class here?
2 (commented on others PR)
Perhaps javadoc comments could be added for this enumeration to further explain the role of this enum class?
3 (commented on others PR)
We could use a common ParserUtil class to implement parsing methods which can be used across ModuleList, ContactList and TodoList in the future. For now, this is a sound implementation.
4 (commented on others PR)
We could perhaps consider shifting out EditTaskDescriptor as a separate class rather than a nested class.
5 (commented on others PR)
Perhaps this validation test could be modified to account for empty task name as well?
6 (commented on others PR)
Perhaps you could extend a similar concept further and allow users to add tags to a particular task? The tagging feature seems to have some similarities with the Type enumeration here.
7 (commented on others PR)
Will users be able to create Tasks without a type, priority or date? Perhaps allowing users to omit the addition of certain Task fields would increase flexibility?
8 (commented on others PR)
Should we ensure that another task with the same name, date and type as the edited task does not exist in the todo list? This is in accordance with the hasTask method above which checks if there is a task with the same name, date and type.
9 (commented on others PR)
Merge conflict here has not been resolved. Should be resolved as soon as possible.
10 (commented on others PR)
Perhaps you can consider adding an error message for this exception so exception handling would be clearer for us and users will be aware of the incorrect or invalid command provided.
11 (commented on others PR)
Would users have the flexibility to choose how the todo list will be sorted? Specifically, can they choose to sort from lowest to highest priority and vice versa?
12 (commented on others PR)
Yes, I think it is sufficient to check the name for duplicate tasks. However, could you clarify the implementation of the above hasTask method? The javadocs says that it will check if there is an existing task with the same name, date, and type in the todo list. In that case shouldn't checking for same name be enough?
13 (commented on others PR)
Yes, that sounds fine.
14 (commented on others PR)
That sounds fine, this can be further worked on in future PRs.
15 (commented on others PR)
The separation of the commandWord from the respective arguments in this line could be further refined using Pattern and Matcher class.
16 (commented on others PR)
Perhaps for the implementation for ParserManager, we could abstract away the lower level details, ie the kinds of Parsers that exist (ModuleListParser, ContactListParser and TodoListParser). These Parsers would only be made known in ParserManager and LogicManager should not have to be aware of them.
17 (commented on others PR)
For this method, we should avoid using the contains() method. Consider a scenario where the user inputs "module1" as the first input word by accident. Then "module1" would be accepted as a valid command word. This can give rise to bugs and complications. We could consider using .equals() instead.
18 (commented on others PR)
Relating to the comment below, we could have ParserManager instantiate an instance for each of the 3 respective Parsers in the constructor here, rather than leave it to LogicManager since ParserManager is the one responsible for the 3 Parser classes. This is something we could consider.
19 (commented on others PR)
We should first merge the PR which abstracts out the parsing of contact list, module list and todo list into individual classes. Following the merge of the above mentioned PR, please handle the parsing of Task related commands in the TodolistParser class.
20 (commented on others PR)
Perhaps we can shift this Date class into a commons package in the model package. The rationale is that other implementations such as our schedule feature would require a Date class as well. This can prevent repetition of code.
21 (commented on others PR)
Perhaps we can consider abstracting out all Name related classes, such as ModuleName, ContactName and TaskName into a common Name class. This would prevent repetition of code.
22 (commented on others PR)
There might be a naming error in the javadocs here. It should be AddTaskCommand if I am not wrong.
23 (commented on others PR)
Perhaps we could implement the tag feature of Tasks as a Set>Tag> so that users will be able to add more than 1 tag. Based on this current implementation, users will only be allowed to add one tag. However, it is fine for now and we can make the necessary changes later during the milestone.
24 (commented on others PR)
Is there a reason why you modified this String? I thought it is fine to include the message constraint that a task name should not be empty.
25 (commented on others PR)
Yes, that makes sense, we could consider that.
26 (commented on others PR)
Yes, that sounds reasonable, ultimately ParserManager should be the one handling the instantiation of the related Parser classes.
27 (commented on others PR)
Contact should be replaced with Task.
28 (commented on others PR)
JsonAdaptedContact should be replaced with JsonAdaptedTask.
29 (commented on others PR)
All instances of "contact" in javadocs and variable names should be replaced with "task".
30 (commented on others PR)
Will this class be required for the todolist storage implementation?
31 (commented on others PR)
Perhaps you could use requireAllNonNull(todoList, filePath) from the commons package?
32 (commented on others PR)
Perhaps you could modify this line to: logger.fine("Attempting to read todo data from file: " + filePath);
Since we are reading data from several Json files, this can improve clarity when using logger.
33 (commented on others PR)
The comment from above could be useful here as well, we could refine the logger message to be something more specific and meaningful.
34 (commented on others PR)
I think the implementation of this constructor can be improved. For a Task object, the Date, Priority and Tag fields are optional and the below implementation might result in a NullPointerException, for eg, invoking getPriority().get() might return null.
35 (commented on others PR)
I think that there might be a NoSuchElement exception thrown for certain cases. This is also applciable when the same check is performed for Date and Priority. This is because these are optional fields and even if the editTaskDescriptor has Tags present, when the argument of the orElse method is executed, i.e. taskToEdit.getTags().get(), the optional might be empty.
36 (commented on others PR)
The same bug as the one mentioned earlier might occur within this if block.
37 (commented on others PR)
Yes, that looks good to me!
38 (commented on others PR)
Perhaps you could add an additional if statement prior to line 31 to check if PREFIX_NAME is present in the argument multimap and if PREFIX_NAME is mapped to any values in the argument multimap. In the event that the user does not provide any argument for the PREFIX_NAME, you will get a NoSuchElement Exception.
39 (commented on others PR)
Perhaps instead of storing the targetModule field as a String you could consider storing it as ModuleName object. This could make the comparison between each module in the list and the target module in line 51 easier as you can simply use .equals() from the ModuleName class.
40 (commented on others PR)
Since parseModuleName returns a ModuleName object, you could consider using a ModuleName object rather than a String for the argument of DeleteAssignmentCommand. This is a continuation from the comment on the DeleteAssignmentCommand class. Using the moduleName variable as a ModuleName object makes it easier to compare module names.
41 (commented on others PR)
Perhaps this field could be removed since we are storing multiple zoom links in the hashmap?
42 (commented on others PR)
Same issue as highlighted on line 21.
43 (commented on others PR)
Maybe we should perform checks on whether the key exists in the hashmap?
44 (commented on others PR)
Perhaps this field could be declared final to ensure immutability.
45 (commented on others PR)
Should we create a new instance of the updated Module each time a zoom link is added, or should we update the HashMap accordingly? What could be the advantages of the former implementation?
46 (commented on others PR)
Yes, that sounds good.
47 (commented on others PR)
I think we can use the current implementation.
48 (commented on others PR)
If I am not wrong, the way ModulistList, ContactList and TodoList edit their respective components would be to use a setModule, setContact, setTask method? Maybe to ensure consistency we could use a setAssigment method as well.
49 (commented on others PR)
The arePrefixesPrensent() method actually checks if the respective Prefix values are present in the argument multimap already. There is no need to check here again. So you can remove the parts such as argMultimap.getValue(PREFIX_ASSIGNMENT_NAME).isPresent() in the if clause.
50 (commented on others PR)
I think there is no need for multiple try catch blocks here. We can combine all into one block since all the try catch blocks below are catching the same ParseException and handling the exception in the same way.
51 (commented on others PR)
Same issue on multiple try catch blocks.
52 (commented on others PR)
I think the javadoc is not updated? The parameter is a double value.
53 (commented on others PR)
Perhaps you could consider adding assertion messages to be displayed. This can be helpful in understanding why the assertion was thrown.
54 (commented on others PR)
Maybe we can change this regex because I think some modules have 3 letters in the module code. This isn't a big issue though we can resolve it in a future PR, but we should note it.
55 (commented on others PR)
I think we might have to change the sample zoom links in this CommandTestUtil class. We should follow the validation regex used to test the validity of zoom links.
56 (commented on others PR)
Since we are testing cases with invalid tags, I think the modular credits argument should be valid?
57 (commented on others PR)
Same issue regarding invalid modular credits argument.
58 (commented on others PR)
This Junit test is commented out.
59 (commented on others PR)
We should change all these zoom links to valid ones.
60 (commented on others PR)
Maybe can take note of some minor javadocs issues here.
61 (commented on others PR)
Javadocs issue here.
62 (commented on others PR)
If there is no need to parse the user inputs, we can return the command in the ModuleListParser itself, I think this class is redundant.
63 (commented on others PR)
Can use requireNonNull since it is already provided by the util package.
64 (commented on others PR)
String message is wrong, I think should be "Event list contains duplicate event(s)."
65 (commented on others PR)
Should separate these methods with a line.
66 (commented on others PR)
Comments are wrong. Should reference event
67 (commented on others PR)
Wrong example provided. Should be an example of EventList
68 (commented on others PR)
Typical indexes are already available as a class in the testutil package. Since test cases for other command classes all use the index fields from TypicalIndex
in the testutil package, I think you should use it too instead of creating a standalone TypicalIndex class specially for Event.
69 (commented on others PR)
I think catching and throwing the same exception here is redundant, as long as the method caller is handling the correct exception, we can omit this try catch block.
70 (commented on own PR)
This is a temporary implementation as the storage for contact list has not been implemented yet.
71 (commented on own PR)
CommandResult sounds more understandable as opposed to ResultCommand. The class is supposed to represent the command's result.
72 (commented on own PR)
Same issue as above.
73 (commented on own PR)
Yes, we do not want to add multiple contacts which are the same into the contact list. Thus, it is necessary to perform such a check for duplicate contacts.
74 (commented on own PR)
Even if an object of List type is declared final, we can still add items into the list. We are only unable to overwrite the list with an entirely new list.
75 (commented on own PR)
Same issue as above.
76 (commented on own PR)
Same issue as above.
77 (commented on own PR)
This will be updated during the next PR.
78 (commented on own PR)
This will be updated in a future PR.
79 (commented on own PR)
Yes will change it.
80 (commented on own PR)
Yes this will be done!
81 (commented on own PR)
Yes, email and telegram will be set as optional fields in future PR.
82 (commented on own PR)
Yes, javadocs will be added.
83 (commented on own PR)
This issue is actually being highlighted separately, in issue #376. That issue will modify Telegram to be an optional field and would ensure the above mentioned bugs would not be present. Thanks for the note! 👍
84 (commented on own PR)
Yes, that is the reason.
85 (commented on own PR)
yes I think this is a neat way to compose multiple predicates 👍
86 (commented on own PR)
Yes, I think integer is fine in the context of our target audience.
87 (commented on own PR)
Yes, I thought the initial prefix "l/" would look confusing. Depending on the font used, it may look like the number 1 or the alphabet "I" as well.
88 (commented on own PR)
Yes, this can be an area for consideration. However, I would assume that most if not all zoom links for NUS modules would use the NUS domain. This is based on my experiences with regards to online learning this semester.
89 (commented on own PR)
Yes, I will add this in. Thanks for the note 👍
90 (commented on own PR)
Yes, the above mentioned input would not be allowed. Yes, I would add in clearer examples. Thanks for the note 👍
91 (commented on own PR)
Yes, I think it should be changed.
92 (commented on own PR)
Yes, will remove it.
93 (commented on own PR)
Yes, this will be modified in a separate PR.
94 (commented on own PR)
Yes, it should be. Thanks for the note.
95 (commented on own PR)
Yes, I think we can do it since its good practice of defensive coding.
96 (commented on own PR)
Yes, I think we should. Thanks for the note!
97 (commented on own PR)
Yes, this will definitely be looked into. Good job noticing it!
98 (commented on own PR)
Yes, that is a very good suggestion, thanks!
99 (commented on own PR)
No problem!
100 (commented on own PR)
Thanks for the suggestion, I will update the user guide accordingly!
101 (commented on own PR)
Yes, that makes sense, I will remove this line. Thanks!
102 (commented on own PR)
This PR was actually made before the decision for Telegram to be an optional field was made. So line 69 will be removed and we will use only name and email to ascertain if 2 contacts are the same.
103 (commented on own PR)
Yes, that can be implemented.
104 (commented on own PR)
Thanks for the note, it has been corrected.
105 (commented on own PR)
Yes, it has been updated. Thanks for the note!
106 (commented on own PR)
Thank you 👍
107 (commented on own PR)
Thank you 👍
108 (commented on own PR)
Yes i will take note of them.
109 (commented on own PR)
Yes, I will take note of these tests and modify them accordingly.
110 (commented on own PR)
The test case has been reimplemented, and comments are removed.
111 (commented on own PR)
Yes this will be used, I am waiting for Michael to implement his todo builder class before I can implement junit tests for this class.
112 (commented on own PR)
Noted, will remove them in a subsequent PR.
113 (commented on own PR)
Thanks for the note!
114 (commented on own PR)
This is because the CI checks will not pass unless I changed this. This is a static field so the CI checks required it to follow the coding standards of a static field.
115 (commented on own PR)
Thanks for the note, this was actually resolved in PR #598
116 (commented on own PR)
Thanks for the note, this was resolve in PR #598.
117 (other comment)
Individual components of the user guide have been added by member's pull requests linked to separate issues. User guide has been updated with the necessary content for milestone 1.1, this issue will be closed.
118 (other comment)
Merge conflicts resolved. Able to merge pull request.
119 (other comment)
Should resolve CI checks before merging PR.
120 (other comment)
Should resolve CI checks before merging PR.
121 (other comment)
Issue is closed with the merging of PR #84
122 (other comment)
UML diagram has been uploaded to the repo.
123 (other comment)
This PR should still be a draft, it will be closed and a new PR with the updated storage functionalities will be made in the future.
124 (other comment)
ParserException and CommandException have been added in subsequent PRs.
125 (other comment)
LGTM.
@hopinxian
(68 comments)1 (commented on others PR)
I think that to match prefix, the e.g. would be sth like list l/people, list /stats. Please check on this.
2 (commented on others PR)
Might want to refer to this as Virus Tracker instead of AddressBook.
3 (commented on others PR)
Might consider changing to 'Clears all entries from Virus Tracker' to match description in line 42.
4 (commented on others PR)
It appears that you have added some new functionality here regarding some statistics. Can these be used already?
5 (commented on others PR)
Considering the nature of this test, it might be best that the method updateFilteredLocationList is completely removed from the working program since it is not expected to be called.
6 (commented on others PR)
Additionally, on this aspect, I realised that updateFilteredLocationList is a method newly added to Model and ModelManager. Considering that, may I check why is the method added if it is not intended to be called as seen from this test?
7 (commented on others PR)
I understand now. Thank you for the clarification.
8 (commented on others PR)
To keep the code clean, I feel that this line should either be uncommented or removed.
9 (commented on others PR)
Ids are abstracted away from the user. Users should not be aware of Ids, and thus should not be given the opportunity to change the id of a person. I feel that thus editpersondescriptor should not have an id field and id is automatically retrieved from the person that is being edited.
10 (commented on others PR)
Some additional tests can be conducted in this class. Such as tests for adding unidentifiable locations and tests for setting location lists which dont fulfill the identifiable property. You may refer to #118 UniqueLocationListTest for reference.
11 (commented on others PR)
One more test was missed.
12 (commented on others PR)
To abide by SLAP principle, consider abstracting out different parts into a separate methoda in the same class.
For e.g. line 50 to 62 can be abstracted into a separate method
13 (commented on others PR)
The "..." seems to imply that the command can accept multiple personids. Is that intended?
14 (commented on others PR)
You have made tests that dealt with the edge cases. It would be good to have additional tests that prove the success of the command. In this case, it would be giving an infected person and confirming that the generated results are the expected results.
15 (commented on others PR)
Could this perhaps be shifted to info handler class? This can help to keep calculation and information handling methods consolidated in one place.
16 (commented on others PR)
This code is quite long. May I suggest extracting part of it into another method? This is a suggestion in accordance to single line of abstraction.
17 (commented on others PR)
You have added tests capturing failing conditions. May I suggest tests that confirm success conditions as well?
18 (commented on others PR)
Is this possibly a spelling error? Form or From?
19 (commented on others PR)
Perhaps some documentation or name changing could be done? Its hard for me to directly understand the significance between 60 percent and the visits chosen.
20 (commented on others PR)
This test feels like it might be more appropriate elsewhere. This is a class for tests involving location as itself. Perhaps this test might belong to a info handler or for a class that directly implements this.
21 (commented on others PR)
Perhaps these methods could be shifted to info handler class? This can help to consolidate all information handling methods to one class.
22 (commented on others PR)
Suggest using a comment block instead of multiple single line comments.
A comment block looks like this.
/*
some comment
more comments
*/
23 (commented on others PR)
Suggest putting both comments in 1 line rather than having multiple single line comments.
24 (commented on others PR)
This method seems very similar to the above method getTypicalLocations. I feel that since both methods are used in test cases, naming this method getLocationsForTest doesnt differentiate the purpose of the 2 methods. Perhaps naming it as getUnorderedTypicalLocations() would be better?
25 (commented on others PR)
This method seems very similar to the above method getTypicalLocationBook. I feel that since both methods are used in test cases, naming this method getTypicalLocationBookForTest doesnt differentiate the purpose of the 2 methods. Perhaps naming it as getUnorderedTypicalLocationBook() would be better?
26 (commented on others PR)
identical visits here, resulting in error.
27 (commented on others PR)
I think that there is no need to create a separate exception for wrong date. Instead, parseException should be used.
According to the code in Parser class, any exceptions or mistakes in the input is returned in a ParseException. In this case, we can save on a class whose implementation is identical to ParseException.
28 (commented on others PR)
I think this message can be replaced with the MESSAGE_INVALID_DATE_FORMAT constant from Messages.java.
29 (commented on others PR)
With the comments above, this can be implemented as a single line instead.
date = ParserUtil.parseDate(argMultimap.getValue(PREFIX_DATE).get());
30 (commented on others PR)
Sure. Understood
31 (commented on others PR)
Instead of having this, suggest importing the message from Messages.java
32 (commented on others PR)
please revert back to a single line
33 (commented on others PR)
Sorry, please ignore this.
34 (commented on others PR)
done by direct editing of file.
35 (commented on others PR)
Please refer to it as index rather than id. Reminder that ID is a concept that is hidden from users.
36 (commented on others PR)
Suggest to replace with the assertThrow from Command utils
37 (commented on others PR)
Suggest to replace with AssertThrow from command utils
38 (commented on others PR)
This test is repeated and ought to be deleted.
39 (commented on others PR)
Repeated tests are detected here.
40 (commented on others PR)
Repeated tests are detected here.
41 (commented on others PR)
Please change this to index instead of id. Only index number is exposed to the user.
42 (commented on others PR)
Suggest replacing with an existing method inside command utils that handles commands. The method name is AssertCommandSuccess()
43 (commented on others PR)
Consider providing the examples for Linux as well? Since target users may be using linux too.
44 (commented on others PR)
I think this may be a typo error? The use of "addFromCsv" is unexpected.
45 (commented on others PR)
Would suggest adding a remark that location and person csv files (if available) be added first before visit csv files. This is because visits depend on locations and persons being in the virustracker first.
46 (commented on others PR)
Can I check that these icons (person, location, visit and bg) are free art? Are there any references/acknowledgements that need to be made? If there is, copyright.txt would be the place to do it.
47 (commented on others PR)
For the user guide link, it doesn't look user friendly to give the github link. Please use the formal website link instead as follows. The format is similar to the old addressbook user guide link.
48 (commented on others PR)
May I ask what is the significance of using >? super Person> rather than > Person > ?
49 (commented on others PR)
ok got it. thank you.
50 (commented on others PR)
Overriding the equals method from ReadOnlyIndexIdPair will break some tests. This is because some tests make comparisons between IndexIdPair and IndexIdPairStub. Additionally, may I know what would be the significance of an equals method that only compares the prefix? The IndexIdPair also contains two optionals for fields.
51 (commented on others PR)
Ah I see. Thanks for the explanation.
The tests that I am referring to are inside VirusTrackerParserTest.java. e.g. parseCommand_deleteLocation(). Within these tests assertEquals is used to compare between the final parsed command which may contain IndexIdPair and the expected command which contains IndexIdPairStub. Considering that IndexIdPairStub doesnt contain a prefix, I was afraid that the tests might fail.
52 (commented on others PR)
I see. Thank you.
53 (commented on others PR)
Does this aspect "Only the first line with such an error will be displayed, so it is possible that other lines may not have enough paramters as well" also apply for number 3? If so it may be possible to merge 2 and 3 together since they show the same behaviour.
54 (commented on others PR)
Unique Identifier gives a feeling of something more like Id. I would suggest sticking to using INDEX to avoid any possible confusion with the use of terminelogy. With reference to the User Guide, Unique Identifier is used to refer to Id and Index as a group.
55 (commented on others PR)
Currently VirusTracker takes in 1 line per command. There is no back and forth between VirusTracker and the user when executing a command. I think steps 1 and 2 can be removed.
Similarly this applies for the other use cases written.
56 (commented on others PR)
This assert seems unnecessary since it is clear within this method code that assert has to be more than or equal to 1.
57 (commented on others PR)
Would suggest to update the UserGuide as well regarding the type of special characters allowed. The user guide has a section explaining the valid format of emails.
58 (commented on others PR)
The second test does not guarantee testing for two consecutive periods, since the local part ends with a hyphen. I would suggest removing the hyphen from the test for two periods.
59 (commented on others PR)
This set of message, seems to imply that high risk locations will always need a number, but I believe that you also allow for no number to be given as well? Perhaps you could wrap HIGH_RISK_LOCATIONS_NUMBER with [ ]
brackets, since that is used to indicate that a parameter is optional.
In addition, I would suggest separating the two examples using "Ëxample: ".
Currently it would look like:
Example: list l/people
list 3 l/high-risk-locations.
It might look better like this.
Example: list l/people
Example: list 3 l/high-risk-locations.
60 (commented on others PR)
Small grammar mistake. Instead of "number of total locations.", perhaps it should be "the total number of locations."
61 (commented on others PR)
There is no spacing between "visits" and "in" in this sentence.
62 (commented on others PR)
asserThrows method from commandutils can be used here.
63 (commented on others PR)
There are also other code locations that can use assertThrows
64 (commented on others PR)
The assertThrows method is overloaded to also take in the expected message of the exception thrown. Using this can help combine your previous assertThrow method and the try catch block into one line.
65 (commented on others PR)
The assertThrows method is overloaded to also take in the expected message of the exception thrown. Using this can help combine your previous assertThrow method and the try catch block into one line.
66 (commented on others PR)
The name is quite general since visits as a class may have their own definition of validity too. While the docs does give an explanation, method name itself is still not intuitive.
67 (commented on others PR)
Intuitively, its hard to think of visits being associated with one another. I would suggest using a better word or add more details to the method name.
68 (commented on others PR)
I find that Addable as a method name feels very general. Perhaps addableVisitBy.... with some explanation at the back would be better.
69 (commented on own PR)
Spelling error is intentional for the invalid person.
70 (commented on own PR)
Have added additional assertions.
71 (commented on own PR)
Have changed the method name
72 (commented on own PR)
Thanks for the catch! I have updated it.
73 (commented on own PR)
This copy of valid visit is hard coded, by using the visit builder class. The hard coded values are retrieved using the getOneBased method. Valid visit has no direct reference to filtered visit at all.
The gist of this test is that my model's filtered lists for person and location currently store only 1 location with id 3 and 1 person with id 4. This is done using the showLocationAtIndex, showPersonAtIndex methods above. Im giving the model input using index 1 and index 1 for person and location, because the list user sees contains only 1 element. After processing however, I am expecting the visit to point to ids 3 and 4 respectively. This is done by comparing the final visit from the visit list with the expected visit created using valid visit.
74 (commented on own PR)
Yeah it is. Have removed it.
75 (commented on own PR)
Sure! I have added exception checking.
76 (commented on own PR)
Got it! Done!
77 (commented on own PR)
indexIdPair constructor might throw a ParseException. Hence, the solution is either to use a try catch block, or have the test method throw the parse exception. I chose to use try catch in this case.
78 (commented on own PR)
Ok, i went to look through other tests and it seems addressbook for person tests chooses to have the method throw exception. I will follow accordingly.
79 (commented on own PR)
Done! I have added it.
80 (commented on own PR)
Thus far, there are no commands which require the use of indexes for visits. Hence, I feel we can leave this out.
81 (commented on own PR)
Sure! I have swapped the color to another variation of orange.
82 (commented on own PR)
Sure! I have added yellow boxes around the relevant areas.
83 (commented on own PR)
I understand. I will take note of this.
84 (commented on own PR)
I have updated the notes to highlight this.
85 (commented on own PR)
Indeed! I have added links to that section for the user.
86 (commented on own PR)
Ids being unique are highlighted within the addPerson and addLocation commands.
87 (commented on own PR)
I have chosen to separate the information into separate lists based on their content. One list is for how to use indexes and ids and the other is for warnings to take note about. I believe this will help improve readability.
88 (other comment)
isnt this repeated with #19?
89 (other comment)
isnt this repeated with #18?
90 (other comment)
Pull Request Approval:
Before approving any pull requests, please ensure the following is done.
Eyeballing the code for any possible logic or other errors. This is also to familiarise yourself with implementation of the system.
Pull the pull request down into a local branch and give the features a test run. This is to check whether it actually works since eyeballing code may not be fool proof in ensuring functionality.
91 (other comment)
In addition, you might want to update the details of the pull request if it does indeed include some functionality involving the daily statistics. This is on the assumption that it is included.
92 (other comment)
Pull request was merged using Admin powers without going through 2 approvals.
However, noted that I would have given approval after the recent commits, so no harm done. Please be careful in the future though.
93 (other comment)
Thanks for the review. I have improved the Pull Request according to your comments.
94 (other comment)
Suggest to merge visit id fix PR first #136 and see if any of the tests crash for this particular PR.
If none crash, I will automatically give my approval for merging this.
95 (other comment)
Shall be closed as participation has already been counted and PR is not relevant for VirusTracker
96 (other comment)
Shall be closed as participation has already been counted and PR is not relevant for VirusTracker
97 (other comment)
Shall be closed as participation has already been counted and PR is not relevant for VirusTracker
98 (other comment)
Shall be closed as participation has already been counted and PR is not relevant for VirusTracker
99 (other comment)
Shall be closed as participation has already been counted and PR is not relevant for VirusTracker
100 (other comment)
Completed by #126
101 (other comment)
Hi everyone, please help run a few test runs with the application.
Pull from this branch into a local branch and run a few methods that you created for the application. This can help confirm that the application has not bugged out or lost any functionality during refactoring.
102 (other comment)
This merge does not implement a WrongDateFormatException.
Instead it throws a ParseException that represents a wrong date format.
103 (other comment)
Resolved by #161
104 (other comment)
Resolved by #161
105 (other comment)
We noted that this implementation presents the following bug where an update to a person/location name does not correspondingly update the name of the person in the visit. This will be resolved in a future update.
106 (other comment)
Due to the wide ranging impact that this change could be bring, this is deemed as a prerequisite issue that should be resolved as soon as possible before other pull requests.
107 (other comment)
This pull request is ready for merging.
108 (other comment)
While all effort has been made not to regress VirusTracker in this PR, because ID is used widely across all aspects of the VirusTracker, it is recommended that all teammates check through the tests and functionality in detail for any breaking of code or bugs.
109 (other comment)
Users will be expected to prepend their own data with prefixes before importing data. This could be something we can look into for further enhancements.
Rationale for using prefixes: To avoid autoformatting which may lead to effects like removing leading zeros. Adding prefixes ensures that a CSV that was exported can be imported without changes to another program.
110 (other comment)
This is a part 1 of code refactor, concerned with the model classes. There will be a part 2 that follows, regarding test cases and command classes.
The goal of aiming to merge this first, is to allow other teammates to utilize the updated methods during their refactoring or analysis of their own code.
111 (other comment)
Good work with improving test coverage.
112 (other comment)
Close in #260
113 (other comment)
A change to fix this should be implemented.
make the default display size bigger to include the visit list
prevent the user from being able to reduce the display size such that the visit list gets covered.
114 (other comment)
There is a need to differentiate between indexes and IDs.
Since Singapore's IDs have letters and indexes do not, it can be seen in Singapore's use of NRIC/FIN usage that there may not be such a need. However, there are identity numbers in other countries such as Philippine (PhilSys Number), South Korea (Resident Registration Number) which only use numbers in their IDs.
VirusTracker is intended to be an application for use by governments across the world. Hence, there is a need for prefixes to separately identify whether a number is an ID or an index.
115 (other comment)
While the reasoning to support this change makes sense, I would suggest keeping the prefix for the following reasons.
The list command is not the only command to make use of the list prefix. The two CSV commands also make use of the list prefix. It would become much more inconvenient for the user to have to remember that list prefixes do not apply for the list command, but applies for the CSV related commands.
The length of the prefix itself is not long. "l/" is two characters which is easily typed.
116 (other comment)
Indeed, this is a feature and not a bug. Nevertheless, the user guide can be improved to make it clearer.
"Repeating parameters" by itself may not be a sufficient explanation of the intent.
117 (other comment)
This classifies as a feature flaw.
VirusTracker should make an additional check to prevent visits from the future being added.
118 (other comment)
Because different countries may have different ID formats, we do not want to set too strong a limit on the format of IDs that users can use. However, setting ID to have a minimum length should be appropriate and will be done.
119 (other comment)
Yes, an additional section in the user guide to mention the expectations of the formats for all parameters will be added.
120 (other comment)
VirusTracker should prevent the user from being able to reduce the display size such that the visit list gets covered.
121 (other comment)
Duplicate with #247
122 (other comment)
While allowing $ to be used in addresses is intended, the user guide should be clearer to the users about what addresses are considered as valid.
An additional section in the user guide to mention the expectations of the formats for all parameters will be added.
123 (other comment)
Duplicate #255
124 (other comment)
Yes I agree. The address part of Locations should be unique.
125 (other comment)
Thank you for the regex suggestion for Singapore addresses. However, this bug will be rejected.
VirusTracker is intended for use by government health officials and this is not restricted to Singapore only. Since non-Singapore addresses should be accepted, we cannot use a regex that only detects Singapore addresses.
126 (other comment)
I agree with this. VirusTracker should permit people to have the same name. However, VirusTracker already allows people to have the same name. This issue will be closed.
127 (other comment)
To improve user experience, it would be good to have the background of an empty list be similar to the background of filled lists.
128 (other comment)
The text field at the bottom has no meaning towards VirusTracker. It ought to be removed to avoid further confusion to users.
129 (other comment)
This appears to be a misunderstanding of the user guide. A person is duplicate if either one of the following happens:
same name and same email
same name and same phone
Having the same phone and same email does not trigger the condition.
130 (other comment)
Wrap text functionality should be applied to each field to help prevent truncation. Using horizontal scroll bars would be avoided since it would make the interface clunkier for the user.
131 (other comment)
Wrap text functionality should be applied to each field to help prevent truncation. Using horizontal scroll bars would be avoided since it would make the interface clunkier for the user.
132 (other comment)
This issue should be closed. There are other more pressing issues relevant to v1.4
133 (other comment)
Please update the refactored usage of high risk locations inside the user guide as well. Currently, the user guide does not explain to users the option about indicating a number for VirusTracker to use.
134 (other comment)
closed by #286
135 (other comment)
Closes #285
@zhengweii
(67 comments)1 (commented on others PR)
Might need to change the URL for the badge!
2 (commented on others PR)
Oops! I think the benefit for this is wrong!
Also, I was wondering if we should combine the benefits stated in potential users and use the combined version for this user story?
Apart from this, everything LGTM!
3 (commented on others PR)
Just a minor issue but perhaps this @return
should be removed as well!
4 (commented on others PR)
Oops minor typo here!
5 (commented on others PR)
I think this should be removed as well!
6 (commented on others PR)
Perhaps it might be better to change this to a more warehouse-like-name to avoid any potential confusion! Wondering if we need to change the variable name as well?
7 (commented on others PR)
Do we also need to change the variable name here as well?
8 (commented on others PR)
Here too!
9 (commented on others PR)
Oops traces of supplier here!
10 (commented on others PR)
This part here as well!
11 (commented on others PR)
This should be AddProductCommand!
12 (commented on others PR)
I think this message could be clearer! Perhaps something along the lines of "Tag names should contain only 1 word"!
13 (commented on others PR)
Perhaps this could be "Adds a product to a supplier in the CLI-nic app"!
14 (commented on others PR)
Just wondering if this violates the law of Demeter?
15 (commented on others PR)
Not too sure if this is on the same line! But if it is, perhaps the concatenation might not be needed here!
16 (commented on others PR)
Can I clarify what is the remark book??
17 (commented on others PR)
Oops! Lines 76 and 78 are swapped!
18 (commented on others PR)
Not too sure if this is still relevant!
19 (commented on others PR)
If the above comment is relevant!
20 (commented on others PR)
Perhaps the else clause could be removed here as well!
21 (commented on others PR)
Perhaps the clause can be removed here as well to make it more prominent!
22 (commented on others PR)
Minor typo here! Should swap "the" and "from"!
23 (commented on others PR)
Perhaps we should try to make the explanation consistent for both suppliers and warehouses??
24 (commented on others PR)
I think the message should be "not stored / contained in warehouse"!
25 (commented on others PR)
Just wondering if this line is extraneous?
26 (commented on others PR)
I think it should be {@Index} instead of @code targetIndex! I believe they used the class instead of the argument name!
27 (commented on others PR)
If we are using the class name instead of the argument name, then this part needs to be changed as well!
28 (commented on others PR)
Perhaps we could just return the function without the else clause here!
29 (commented on others PR)
This @code too if we are using class name!
30 (commented on others PR)
This too!
31 (commented on others PR)
Do we have tests for invalid index when deleting products??
32 (commented on others PR)
Ahh oops! I was wondering if it would be possible to make the explanation for the examples in line 159 and 161 consistent? In line 159, it says "of the list of warehouse" and then in line 161 it says "from list of suppliers". Would it be possible to use the same format for both??
33 (commented on others PR)
Ahh okok! Thanks for clarifying 😃
34 (commented on others PR)
Ahh ok! Thanks for the update!!
35 (commented on others PR)
Oops typo here!
36 (commented on others PR)
Hmm the example above doesn't really show the t/TAG! Might be a little confusing!
37 (commented on others PR)
Missing warehouse!
38 (commented on others PR)
Perhaps we might want to change the format to fit the example below!
39 (commented on others PR)
Hmm would it be possible to combine these two?
40 (commented on others PR)
There seems to be an extra EMAIL_DESC_BOB
here!
41 (commented on others PR)
Minor typo in the comment here!
42 (commented on others PR)
Should this be CLI-nic?
43 (commented on others PR)
Minor issue but perhaps these comments should start with "Finds", "Removes" and "Updates" instead!
44 (commented on others PR)
Should this be EditSupplierDescriptor type?
45 (commented on others PR)
Else clause can be excluded here!
46 (commented on others PR)
Perhaps we could combine this into one if-condition!
47 (commented on others PR)
Oops prefix should be index instead of name here!
48 (commented on others PR)
Hmm just wondering if "details of new macro" is wrong??
49 (commented on others PR)
Should be list here!
50 (commented on others PR)
We might want to make "Alias" lowercase for consistency!
51 (commented on others PR)
Minor typo here "Is to helps"!
52 (commented on others PR)
Is there a mistake here? "No warehouse is added. Adds the warehouse to the list"
53 (commented on others PR)
Ohh does this test case add the warehouse to the list as well??
54 (commented on others PR)
Minor typo here! Should be "Supplier"!
55 (commented on others PR)
I think it should be "no supplier is edited"!
56 (commented on others PR)
The same as above!!
57 (commented on others PR)
Since we are splitting into viewing supplier and warehouse section, perhaps we could specify the type instead of leaving it as TYPE!
58 (commented on others PR)
Same as above!!
59 (commented on others PR)
Minor typo here! "show only supplier"
60 (commented on others PR)
Prefix should be w here!
61 (commented on others PR)
Supplier typo here too!
62 (commented on others PR)
Should be "help command format" here!
63 (commented on others PR)
Oops typo here!
64 (commented on others PR)
I think it would be better!!
65 (commented on others PR)
Oops minor typo in method name!
66 (commented on others PR)
Oops a little confused here as well! Why is this returning an email??
67 (commented on others PR)
This too!
68 (commented on own PR)
Yes I used the same reasoning as edit! But then again, this was why we decided to go with prefix for the find command as well!
69 (commented on own PR)
I suspect last argument might be a little confusing because users might think it is the very last argument at the end of the command!
70 (commented on own PR)
Great catch!! Thanks 😃
71 (commented on own PR)
Hmm it didn't show up previously in IntelliJ as well! I suspect it will only show when we view it on GH!
72 (commented on own PR)
Ahh I might change to to something like the one in DeleteCommand!
73 (commented on own PR)
Ahh I just checked! I think this is an issue with the rendering here! There are no extra blank spaces in the file!
74 (commented on own PR)
Ohh yes this is a neat suggestion!
@joeychensmart
(67 comments)1 (commented on others PR)
Looks like theres a formatting issue here
2 (commented on others PR)
I think we should turn the 4
into a constant, i.e. private static final CALORIC_MULTIPLIER = 4
. Same for the rest of the macronutrient classes
3 (commented on others PR)
Similar to the toString
function, I think we can factor this out to the superclass. If we do that then we can also change all its protected
access modifiers to the ideologically superior private
.
4 (commented on others PR)
Looks like you're using the assertion incorrectly, it should be
assert amount >= 0 : "amount cannot be negative";
instead.
Currently it will print the error message regardless of whether the assertion passed or failed.
Also a side note: we should use the java logger
instead of System.out.println
apparently.
5 (commented on others PR)
Maybe you could add a TODO comment on what kinds of methods to add to this class/how it should be used.
e.g. // TODO: Food FoodMethodHandler.combineFood(Food firstItem, Food secondItem)
or something
6 (commented on others PR)
IIRC we need to write javadocs for each class according to the module specifications.
7 (commented on others PR)
IMO we should keep this as the string "Carbohydrate" instead. Makes the code more explicit.
Same for the other macronutrients
8 (commented on others PR)
I think we should @override
the object.equals
method instead. Having 2 methods claiming to do the same thing will invite bugs.
9 (commented on others PR)
This method only makes sense if we have unique objects in the list, maybe you could change the target
to the Index
of the object in the list, or require all objects in the fridge
to be unique.
10 (commented on others PR)
Same as the setFood
method
11 (commented on others PR)
I think we should rename this to macronutrientType
or something so we don't confuse this type
with a java type.
12 (commented on others PR)
Assertion here could be more descriptive (e.g. "Macronutrient type cannot be blank"), since we are changing name
to type
.
13 (commented on others PR)
We should be checking for referential equality here i think? i.e. assertTrue(expectedFridge == fridge)
, not sure if object equality is intended.
14 (commented on others PR)
Same as below comment
15 (commented on others PR)
typo in caloriMultiplier
.
Also I think you MacronutrientStub
or something would be a better class name. The current one sounds like this is an object that creates other macronutrients.
16 (commented on others PR)
Should remove this or put a TODO comment if its blank
17 (commented on others PR)
I think this should be withFood or something
Also is using person
here intended?
18 (commented on others PR)
I think a comment would be good here to say it takes the name from the class name
19 (commented on others PR)
Maybe we should change int index
to Index index
, i.e. the class from AB3.
20 (commented on others PR)
I think we should keep this as just assertThrows
instead. We should stick to the static asserts for tests
21 (commented on others PR)
same for all the other test files that were changed
22 (commented on others PR)
hmm we may be able to abstract this part a bit more in the future, just a note, no need to change now
23 (commented on others PR)
this is not an email !
24 (commented on others PR)
I think we should be using getNutrientValue
here instead?
25 (commented on others PR)
this method violates DRY, we should really remove this
this is important
26 (commented on others PR)
can't see clearly in the diff but I think we're missing a javadoc here
27 (commented on others PR)
We should extend Exception instead because they are checked
extending RuntimeException
will lead to a lot of very painful uncaught errors
28 (commented on others PR)
Same as the other DuplicateFoodException
, RuntimeException
is very spooky
29 (commented on others PR)
I guess this is valid but should we leave this or change it to mcspicy
or something
30 (commented on others PR)
same as invalidFoodMcGymmy
, i think we should use actual food names here
31 (commented on others PR)
same as the .json
files, we should change to food values
32 (commented on others PR)
Maybe change the names and tags here as well to food
33 (commented on others PR)
As above, I think we should change these names
34 (commented on others PR)
could abstract this into a method hasDuplicates
in ReadOnlyMcGymmy or its superclass
35 (commented on others PR)
this should be if (food == comp)
for referential equality (the is
operator in python).
Comparing the hashcodes does not guarantee the food and comp are the same object in memory.
36 (commented on others PR)
As with the other files, should change this to food.
37 (commented on others PR)
should change all these to resemble the typical values, except with an underscore, space etc.
i.e. each test should only have 1 reason to fail.
38 (commented on others PR)
Should use the module convention, i.e. protein_isValid_correct
or something
Same for the methods in the other test classes
39 (commented on others PR)
Need to change these examples too
40 (commented on others PR)
We should change all these names/values to food ones.
41 (commented on others PR)
Should be Carbs.MESSAGE_CONSTRAINTS instead here, same for fats below
42 (commented on others PR)
i think toString
might override the java object's default method, so that might cause problems (including confusion in developers)
maybe we could use the module convention toString_isCorrect
or something instead
43 (commented on others PR)
maybe something more useful here could be to set a boolean flag hasBeenUndoed
or something to true
here, and checking it in the execute_canUndo_success
part
44 (commented on others PR)
I think we can shave off the parsing part bc it would have been mentioned in the above sections.
Makes the diagram less packed
45 (commented on others PR)
there seems to be a typo in the file's name itself (it's FIndSequenceDiagram.png in the folder or sth)
46 (commented on others PR)
This part maybe can go higher level (remove specific details on which methods get run and just say what happens, e.g. "it combines the predicates then filters the list"?
47 (commented on others PR)
Also for the diagram itself may be able to shave off the parsing part (i.e. only show what happens after the .execute()
) because it will be repeated in the previous section
48 (commented on others PR)
I think we can change this to a for loop where we delete using the filteredList
's predicate, i.e.
var predicate = filteredFoodItems.getPredicate();
for (Food food : listOfFoodSomewhere) {
if (predicate.check(food)) {
removeItem(food);
}
}
This will work as intended, as long as getPredicate
and setPredicate
in fxcollections
works as intended
49 (commented on others PR)
Can also create a public void filter(Predicate p)
in Fridge.java
then call it somehow in this method.
Then we can use java streams to filter and override the list (but don't forget to invert the boolean predicate).
50 (commented on others PR)
I think with the new implementation we can delete this method and the other related one in Fridge
51 (commented on others PR)
Remove this method then should be good to merge
52 (commented on others PR)
I think for this long chain we can replace it with a stream/list of all the above predicates + a stream.reduce
call.
Will be much cleaner
53 (commented on others PR)
For these changes is it due to the ""
OptionalParameter misbehaving?
Perhaps we could log that as an issue and address it in another PR. Don't think hardcoding these exceptions are a good idea.
54 (commented on others PR)
A suggestion I have is to collect all these Predicate
classes into 1 file and turn each individual Predicate
class into a function that returns an anonymous class, i.e.
public class Predicates {
public Predicate<Food> makeDatePredicate(String date) throws ParseException {
return new Predicate<Food>() {
// all the code below
}
}
// ... more predicates
}
Will reduce a lot of the java boilerplate in the codebase.
55 (commented on others PR)
Alternatively if we wanted to cap it at 5000 we can do "[012345]?(\d){1,3}" or sth
56 (commented on others PR)
TODO will have to address this next time: each parsing function should catch this and rethrow as ParseError
57 (commented on others PR)
Could have placed this in FoodBuilder
where you made a new function BuildUnsafe
which throws a RuntimeException
or IllegalValueException
just for testing, to reduce the code changed. but this works too.
Too much effort to change to the above suggestion, so i guess we can leave this.
58 (commented on others PR)
Leaving this in for now, but we should depreciate this constructor in another PR. see #214
59 (commented on others PR)
also 0 is valid right? can we change it to can only contain non-negative integers less than 1000
60 (commented on others PR)
possibly save the formatted string as a variable? since it is reused quite a bit.
61 (commented on others PR)
maybe we can change both to inclusive bounds, (so we change the UB to 999). Seems more intuitive/consistent.
62 (commented on others PR)
I think our limit for values is 1000, there's a function in MacroNutrient
that says
private String getMessageConstraint() {
return this.getMacronutrientType() + " amount can only take in value larger than 0 and less than 1000";
}
Also I think we should make all the error messages use this function somehow, so we have DRY. see #215
63 (commented on others PR)
I'm quite sure its for all of those though? either way we have to limit all of them to much lower than MAX_INT
64 (commented on others PR)
do we need this?
65 (commented on others PR)
maybe change title to invalidSomethingImport like the below function
66 (commented on others PR)
should change to notRequired to be clear maybe
67 (commented on others PR)
i meant i don't think these tests add any value. Maybe we should remove this
checking getters/setters are quite redundant to me imo
68 (commented on own PR)
Hmm looks like I may have accidentally removed this during the safe delete or something, will update and restore it.
69 (commented on own PR)
Yes that seems to be better. Good catch.
70 (commented on own PR)
I'll add a couple more tests for this, along with some unit/integration tests with the Commands.
71 (commented on own PR)
Nope, if you try to declare multiple of the same parameters there will be an assertion error somewhere.
Technically you can work around this, by declaring a new class that contains the two parameters, e.g.
the command:
takeTwoIntegers 1 2
may have a parameter
private Parameter<IntPair> param = this.addParameter(..., IntPair::parse)
and the IntPair class is as follows:
class IntPair {
public int a;
public int b;
public parse(String str) {
IntPair result = new IntPair();
result.a = ...
}
Don't think any of our commands will involve these kinds of parameters, but if they do we may have to either redesign the command or the parser. (We'll solve that problem when it happens)
72 (commented on own PR)
Yes, for the first one the 1
will be considered as input to the -n
parameter, and the unnamed parameter will have no input (so there will be an error).
I'll add this and the comment below into the PR's docs.
73 (commented on own PR)
No point imo since I'm not reusing the string outside this function.
Also would add more noise which we're gonna change anyway (when we change people to food).
74 (commented on own PR)
yup you're probably right. I mustve copy pasted wrongly somewhere
75 (commented on own PR)
for tests we usually just throw Exception
because if any exception happens JUnit will catch it and display the error message and error type.
Its more convenient to do this and also we don't need the extra type checking for the specific error thrown (DataConversionException).
76 (commented on own PR)
the list is final though, so then we will have to unfinalize it
also this is consistent/the same as the implementation in JsonSerializableMcGymmy
.
77 (commented on own PR)
Yeah since Macronutrient's constructor throws IVE we need to catch it somewhere when creating the subclasses
actually just thought of a better alternative, will implement it soon
78 (commented on own PR)
have to ask @Jh123x about this
79 (commented on own PR)
EDIT nvm, Java is far too inflexible. This is probably the best solution we have.
80 (commented on own PR)
This is just checking if the function works i.e. a default carbohydrate can be created properly. If there are any problems a runtime exception/assertion will be thrown and this test will fail.
the isValid
method is for checking user input (strings).
81 (commented on own PR)
Very minor issue. I think we can put this in another PR if needed
82 (commented on own PR)
ok just checked, this implementation is correct. The exception is thrown for invalid inputs (empty string, etc).
These inputs should not even show up because of the way our parser works, but if they do, we want them to not match any of the food items.
83 (commented on own PR)
this is the correct format. Just checked on my fork and this gives the correct link
84 (other comment)
good job
85 (other comment)
Added a skeleton to Duong's PR. Should be able to add on from there while avoiding merge conflicts.
(related note: can someone approve that PR? don't think I can do it because I also contributed a commit.)
We should use the same format as the one from AB3 (copied over below).
Use case: Delete food
MSS
User requests to list persons
AddressBook shows a list of persons
User requests to delete a specific person in the list
AddressBook deletes the person
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given index is invalid.
3a1. AddressBook shows an error message.
Use case resumes at step 2.
86 (other comment)
The CI test says that you are missing the shadow plugins
Seems like a github actions issue. This happens from time to time.
Closing and reopening the PR should restart the CI process (hopefully fixing this).
87 (other comment)
LGTM
88 (other comment)
I think I can do this easily using the new logic architecture
89 (other comment)
Preliminary findings:
This is actually a symptom of a much bigger problem: the code is violating SRP and Seperation of Concerns.
Right now the model classes (i.e. Fridge
, UniqueFoodList
) are throwing these RuntimeExceptions
when the food being added is a duplicate etc.
The reason why this has not been a problem so far is because (for the case of the DuplicateFoodException
) the 2 classes that add to the food list/fridge, the AddCommand
and EditCommand
have guard clauses that throw an error when a duplicate food item is being added.
if (!(foodToEdit.equals(editedFood)) && model.hasFood(editedFood)) {
throw new CommandException(MESSAGE_DUPLICATE_FOOD);
}
this one
Frankly this shouldn't be the job of the EditCommand
or AddCommand
and now we have to include extra tests to ensure these guard clauses work.
Using the current design, in the future if we add more Commands
or other functionality that add food
items to the model
, we will have to keep in mind to catch these duplicates ourselves else oopsies! the program will explode because Fridge
threw a RuntimeException
.
It is my firm belief that since Java so benevolently offers to handle these problems for us (with checked exceptions), we forgetful humans should gracefully accept its help.
Note: I just remembered we're allowing duplicates now but the above argument still applies to the other FoodNotFoundException
.
Recall the current guard clause used:
if (!(foodToEdit.equals(editedFood)) && model.hasFood(editedFood)) {
throw new CommandException(MESSAGE_DUPLICATE_FOOD);
}
If DuplicateFoodException
is thrown as a checked exception, we can easily wrap it in a try-catch:
try {
// do the adding here or wtv nonsense
} catch (DuplicateFoodException e) {
throw new CommandException(MESSAGE_DUPLICATE_FOOD);
}
90 (other comment)
Copied over the justification from AB3
PersonNotFoundException is a checked exception. It is thrown by methods
such as `UniquePersonList#remove(Person)`,
`UniquePersonList#setPerson(Person, Person)` etc. to signify that
certain preconditions were not met -- namely that the person provided to
those methods does not exist in the address book/UniquePersonList.
Using checked exceptions for such a purpose is slightly useful in that
it will force callers to handle the case where the above preconditions
are not met, such as when the methods are called with invalid user
input.
However, it imposes a HUGE cost on callers where the preconditions are
already known to be met (e.g. in test code, or when the user input has
already been validated before hand). In such a case, callers are forced
to add try-catch blocks around the method call even if they know that
the exception will never be thrown, bloating up the code. It is also
impossible to test the catch blocks as well since correct code will
ensure that the precondition holds and thus the exception will never be
thrown, leading to reduced code coverage.
Checked exceptions also don't work very well with the Java Streams API,
since the API doesn't accept lambdas which could throw checked
exceptions.
In AB-4, the amount of code which benefits from PersonNotFoundException
being a checked exception is much smaller than the amount of code which
is negatively impacted.
As such, let's make the tradeoff in the other direction, by making
PersonNotFoundException a RuntimeException. New callers _could_ forget
to check that the preconditions hold before calling the methods in
question (although test cases should catch that), but this is balanced
out by the huge benefit of having more concise and testable code.
Only argument I agree with is the Java Streams
one, but we can work around this.
We can discuss this in the next team meeting.
91 (other comment)
Will make this a not draft after I add some tests or something maybe
The code is mostly formatting text to be printed so I dont think unit tests will benefit it much
92 (other comment)
Once we merge this we need to add a new issue since the executeCommand("help")
is hardcoded for the button
93 (other comment)
e.g. find -date 2020-11-11 -tag lunch
e.g. find rice -date 2020-11-11 -tag lunch
94 (other comment)
FRONT MATTERS (Team 20%)
Clear and concise statement of the purpose of the document, and the target audience
Clear and concise user-centric statement of product information, e.g. product description and overview of main features
Clear and complete information about how to use the document, e.g. how to navigate the document, meaning of icons/formatting used.
Clear and complete information about how to get started, e.g. installation instructions, parts of the GUI, tutorial on how to use CLI, etc.
Shows reader consideration by going the extra mile to provide other necessary information, or to make this section welcoming and appealing to the reader.
INSTRUCTIONS for each implementation (Individual 50%)
clear and user-centric description of purpose of feature/function/command
Clear and easy-to-follow step-by-step instructions for at least one example
Clear, relevant, and helpful graphics. Visual and/or textual cues are used to indicate which graphic(s) go with which set of instructions.
Heading, instructions and examples are customized to the application
Highly considerate of user’ needs by providing other relevant and helpful information e.g. warnings, tips, important note.
Highly considerate of users’ needs by using formatting (font style, size and color, mark-ups, callouts, bold, italics, etc) and layout (white space, alignment, etc.) to maximize readability.
Well-chosen, accurate and reader-focused language.
PRESENTATION (Team 10%)
Consistent terminology throughout the document.
Consistent formatting (symbols/icons, font type and size, colors, image size, use of mark-ups and callouts, bullets, etc.) and layout (alignment of text and graphics, white space, paragraphing, etc.) throughout the document.
Easy to navigate (e.g. provides hyperlinks where necessary or expected, Table of Contents is accurate, etc.)
LANGUAGE, STYLE AND TONE (Team 10%)
Consistent phrasing of headings and sub-headings throughout the document
All headings and sub-headings clearly and accurately indicate content of each section
Consistent user-centric style and tone throughout the document, e.g. you-language, active tense, short sentences, etc.
Correct grammar, punctuation, spelling, mechanics throughout the document
OVERALL (Team 10%)
Document is highly attractive, pleasant to read, and easy to understand.
The document leaves the reader with a highly positive impression of the product and the team.
95 (other comment)
edit here https://github.com/Jh123x/tp/blob/User-Guide-v2.0/docs/UserGuide.md
96 (other comment)
TODO: will move MacroList
into the model in the next PR.
97 (other comment)
Do we want an option to find before/after a certain date? i.e. show all foods created before/after a certain date?
Or we can put this in another PR/not do this at all.
98 (other comment)
likely this is the cause #112
Also we should make it such that each command is undoable and document this in the UG. Easiest solution
99 (other comment)
note 1: problem because filtered list for both actual/expected model has size of 1.
100 (other comment)
update: list actually not getting filtered properly
101 (other comment)
same as #145
102 (other comment)
Likely if we export a file, edit some carbohydrate value to 500000 and import it, this will cause the app to explode
Have to check if the AB3 storage part catches this
103 (other comment)
The group I tested for dry run PE had a bug because of this. This is worth looking into
104 (other comment)
its this one #145
105 (other comment)
Duplicated, see the updated #216
106 (other comment)
Don't merge yet... still got some dead code related to the old exception... (checkstyle cannot catch... sigh...)
EDIT: ok done... see commit belows for details...
107 (other comment)
Can do this in the future. Skip for 1.4.
108 (other comment)
codecov is misbehaving today, can try re-running the CI another time.
Possibly daylight saving problems, considering this post is in the future.
109 (other comment)
For reference, https://github.com/JoeyChenSmart/tp/blob/joey-ppp/docs/team/joeychensmart.md
110 (other comment)
I was thinking more in the line of "the two methods should point to the same string" rather than "the two different strings should have the same content", but that might take a bit of work.
Also related PR #208 not sure if theres overlaps?
111 (other comment)
Ran a special checkstyle script and found a couple of potential problems (mainly missing class javadocs)
EditCommand#execute
JsonAdaptedFood#toModelType
ImportCommand.java
TagCommand.java
SummaryDisplay.java
UntagCommand.java
UndoCommand.java
assertion in the constructor of MacroNutrient is redundant/bad
valid amount in MacroNutrient is a magic number
112 (other comment)
Actually I think if you are using assertions, you should not re-throw them in the method
i.e.
void pop() throws AssertionError {
assert !stack.empty() : "History is empty";
stack.pop();
}
should be just
void pop() {
assert !stack.empty() : "History is empty";
stack.pop();
}
instead.
Assertions are there to allow us as developers to locate potential bugs/violations of pre conditions, so we want them to fail as quickly as possible in the code. Re throwing them like the above example will cause the location of the error to be confused (the caller of pop
will throw the error, but we want pop
to throw the error).
Also I think we should keep the previous (non assertion) error, for defensive programming
113 (other comment)
Actually would be nice to put a comment in the line you fixed this.
The code that does the checkargument in date is a bit terse/strange if you are not familiar with this issue.
@jh123x
(64 comments)1 (commented on others PR)
I don't think this line need to add UC2?
Might be better to change it to:
2 (commented on others PR)
List of Food that user has added works too
LGTM
3 (commented on others PR)
Just curious, what does this affect for the main page?
It kinda looks like a link to the repo like github.com/se-edu/addressbook-level3 and github.com/AY2021S1-CS2103T-W17-3/tp
4 (commented on others PR)
Yes need the space after the ##
5 (commented on others PR)
Might want to change this to a constant?
Like VALID_NAME_AMY, similar to the one u did in edit command test
6 (commented on others PR)
Ookie in that case LTGM
7 (commented on others PR)
I think we should use this.class.getName() instead and put it in the Macronutrient class and use it for each of the food items?
Might be able to clear up quite a few of the other assertions and methods mentioned below in Macronutrient
8 (commented on others PR)
Might not need this if we can get the nutrient type using the method mentioned in Carbohydrates.
9 (commented on others PR)
This link might need to be changed in the future
Might be better to remove for now?
10 (commented on others PR)
Might be better to put it into a method rather than just declaring
Can use @Before to initialise the fridge to reduce the complexity of layering the different test cases on top of one another (This might help if we decide to change/add more test cases in the future)
@Before
public void beforeEachTestMethod() {
System.out.println("Invoked before each test method");
}
11 (commented on others PR)
Might wanna remove this whitespace for consistency
12 (commented on others PR)
Might be able to use CommandTestUtil here to reduce code duplication.
Can compare the tags after the CommandTestUtil.assertCommandSuccess
13 (commented on others PR)
I think there is alr a similar method in the current version
14 (commented on others PR)
I think the standard for 2103 uses 8 spaces instead iirc. Same for Food.toString method
15 (commented on others PR)
I think the test convention for other test cases are like getCalories_isCorrect or smth like that x.x
16 (commented on others PR)
^^ Same comment as Joey
17 (commented on others PR)
Might be better to abstract this.protein to getProtein(), same for carbs and fats
18 (commented on others PR)
Might want to change like the names to something more food-related >>
19 (commented on others PR)
Sorry I meant case insensitive >>
20 (commented on others PR)
Oo yea true. rip idk what i was thinking when i vetted x.x
21 (commented on others PR)
Might be better to use regex to check if it is of the correct format first rather than having an empty catch clause?
22 (commented on others PR)
Nice color 😄
23 (commented on others PR)
Hmm true.
But I rmb hearing somewhere in 2103 that empty catch clause is bad thou.
24 (commented on others PR)
Hmm ookie
25 (commented on others PR)
Might want to add some test for editing the date in the future
26 (commented on others PR)
Can add some assertions here regarding calling the function when it is unable to undo
27 (commented on others PR)
Is this for it keeping the same filter after the edit of the food?
28 (commented on others PR)
I think it should be throw DataConversionException here?
29 (commented on others PR)
I think its the same thing here?
30 (commented on others PR)
and here?
31 (commented on others PR)
I see
32 (commented on others PR)
This line will need to change to MacroList
33 (commented on others PR)
This line too
34 (commented on others PR)
This line will need to change to fit Macro Context
35 (commented on others PR)
Maybe remove the initialiazation and just assign macro = source.getAsList().stream().map(JsonAdaptedMacro::new).collect(Collectors.toList())
36 (commented on others PR)
Hmm I see
37 (commented on others PR)
I think its good to add an assertion if the food to be removed does not exist as checking for existence should occur before actually removing the food.
38 (commented on others PR)
Something along this line instead?
var predicate = filteredFoodItems.getPredicate();
newList = listOfFoodSomewhere.stream.filter((x) -> !predicate.check(food)).collect(Collectors.toList());
setMcGymmy(new McGymmy(newList));
39 (commented on others PR)
I think you haven saved this file to the .png format yet
40 (commented on others PR)
I think it is to confirm that the code is working when we run it with assertions.
The if statement below is to make sure that there are no errors in case we miss some paths / did not run with assertions
41 (commented on others PR)
the filtered list is implemented in Model so I think it will be better to implement in model instead of in Fridge.
Can be a possible future optimization
42 (commented on others PR)
I think it will be better to put the food item as a Parameter instead of optional?
If all of them are optional the user can just get away with using just find
unless there is some form of a check to ensure not all of them are empty
43 (commented on others PR)
Oh ok, I see. I think we can mention that in the DG and no changes will have to be made.
44 (commented on others PR)
rmmacro might be better (rm used in Linux interface)??
45 (commented on others PR)
You will sound damn weird here
Maybe you can?
46 (commented on others PR)
I dont think this one need to change to you should?
47 (commented on others PR)
Maybe can add Parameters into here too >>
48 (commented on others PR)
Would be better if it is File must exist.
49 (commented on others PR)
This is updated in #237 as FILE_CONSTRAINTS is more specific, it replaced the MESSAGE_IMPORT_FOOD_FAILURE instead. But that is for another pr x.x
50 (commented on others PR)
Maybe it is better to be Undo the previous action that caused changes to ModelManager?
51 (commented on others PR)
Missing Fullstop?
52 (commented on others PR)
Same here
53 (commented on others PR)
Missing .html at the back for some of them (Edit: Oops its not .md >> Might be .HTML)
54 (commented on others PR)
Might want to change the name to a Pair but it is a minor issue >>
55 (commented on others PR)
Its less than 1000 rather than not exceeding
56 (commented on others PR)
I think we need to change this to EmptyStackException too.
57 (commented on others PR)
Why was this removed?
58 (commented on others PR)
I think we should add a test case where there are 2 userPrefs with the same values but not the same object.
59 (commented on others PR)
It must be smaller than 1000 rather than 2^31. Same for the ones below
60 (commented on others PR)
It should be no larger than the size of the list instead of smaller than 2^31
61 (commented on others PR)
I don't think its for index. It only applies to MacroNutrients
62 (commented on others PR)
As this is only change used for the index, is it better to store this within index instead of ParserUtil?
63 (commented on others PR)
hmm, then it should be the minimum of the 2?
we can also change it to long just in case too
64 (commented on others PR)
Might be better to leave it in for defensive programming?
Edit: Sure that works too
65 (commented on own PR)
What do you mean by this?
66 (commented on own PR)
Ookie Thanks
67 (commented on own PR)
Simplified similar to how Kamil did it
68 (commented on own PR)
Currently it is 999 iirc as the regex checks for the presences of between 1 to 3 numbers
69 (commented on own PR)
Sure
70 (commented on own PR)
Fixed
71 (commented on own PR)
It is to make sure all of them point to the same message so that the messages shown will be consistent everywhere
72 (commented on own PR)
It changes from each execution of the command so at most it can only be a local variable.
Edit: It actually makes a huge diff >>
73 (commented on own PR)
Hmm not exactly. It's for testing if the setLogLevel function works correctly.
Is it better if i rename it to setLogLevelTest?
74 (commented on own PR)
Hmm ok
Removed
75 (other comment)
Tags and Addr not implemented as they will be removed by the end of the iteration
76 (other comment)
Will make this a not draft after I add some tests or something maybe
The code is mostly formatting text to be printed so I don't think unit tests will benefit it much
Might need to change the logger message in ui/HelpWindow.java and remove the function that shows the help screen
77 (other comment)
Error in Merging Master Branch Closing PR
78 (other comment)
https://stackoverflow.com/questions/27567846/how-can-i-check-out-a-github-pull-request-with-git
For pulling it into your local Repo
79 (other comment)
Something similar already exists in ModelManager.
Refer to ModelManager
80 (other comment)
Duplicated Feature
81 (other comment)
Merged to Update Developer Guide Branch
82 (other comment)
Adding extra stack to store predicate for filtering
83 (other comment)
bug found
84 (other comment)
bug found
What is the bug
The one where the TypicalFoods was mutated in between the test on the Mac CI
Joey Found and mentioned in the Whatsapp Grp earlier today
85 (other comment)
Combined with Bug Fixes branch
86 (other comment)
Jar file released
87 (other comment)
We Might be able to limit the char limit for Tags for this
88 (other comment)
This one is for the UG not for the application itself
89 (other comment)
Not a Bug
90 (other comment)
Despite of this change, it can still overflow if the user adds lots of tag right?
Nope this bug only occurs when there is 1 super long tag, for multiple tags, they will automatically be placed correctly.
Tags below are of 50 characters
Refer to SS below:
91 (other comment)
Hmm while that is true, they can rely on Macro and Tag / untag commands to add tags in succession.
This might tie in together with the default macros issue
92 (other comment)
Actually for this issue the tag limit should depend on the size of the window if the window is small, then there might be the same issues as well
93 (other comment)
Updated the Docs to have 20 char limit instead. Refer to main post for reason
94 (other comment)
Rip Sean
95 (other comment)
This is linked to the Wrong documentation in #189
96 (other comment)
Closing Issue as it is duplicated.
97 (other comment)
Should be --carb and --fat instead of --carb value and --fat value
98 (other comment)
We can Update the documentation if it is the expected behaviour
99 (other comment)
The index should be positive instead of non-negative, isn't it?
Nice catch.
Idk what I was reading x.x
100 (other comment)
Probably linked to #145
101 (other comment)
listmacro [MacroName] shows the help for the single macro i think
102 (other comment)
Screenshot cant really be seen
103 (other comment)
Depends on the list mutated anything.
Update the UG with expected behaviour
104 (other comment)
Change error message to show: (Smth along that line)
Carbs values should only contain non-negative numbers below 1000
105 (other comment)
https://stackoverflow.com/questions/38900060/apache-commons-cli-repeated-options
Refer to ^
Or make the error message more general
106 (other comment)
Duplicate with #188
107 (other comment)
Close as it is not part of code quality.
108 (other comment)
Update to Issue #210
109 (other comment)
I was thinking more in the line of "the two methods should point to the same string" rather than "the two different strings should have the same content", but that might take a bit of work.
Also related PR #208 not sure if theres overlaps?
Yeap i think it overlaps x.x
110 (other comment)
Shifting the incomplete Tasks into separate issues
111 (other comment)
Closing as the problem is solved by mentioning in the UG that only 1 tag can be added at any time
112 (other comment)
Closing for now as we are not implementing.
We can reopen if we plan to implement in the future
113 (other comment)
Probably will not be working on this due to the lack of time.
If we are planning to implement pls reopen this issue
@chrystalquek
(64 comments)1 (commented on others PR)
Possible to follow Pattern BASIC_COMMAND_FORMAT check used in AddressBookParser?
Reason why ModeParser did not use Pattern is because the commands that ModeParser will parse does not follow the regular format of commands with all the Prefixes.
2 (commented on others PR)
Might need to take out UserPrefsStorage from Person Package.
AddressBookStorage seems to specific to the Person Model, what do you think?
3 (commented on others PR)
Can remove all isMeetingCommand methods
Implemented only for LogicMode because need to know whether to switch mode in MainWindow, whereas it is certain that LogicMeeting will be handling a user input if the current mode is Meeting
4 (commented on others PR)
Will need to accept Contacts Model eventually also so that index of contact can be referenced
5 (commented on others PR)
For cleaner implementation, possible to use Pattern found in AddressBookParser?
split method used in ModeParser because none of the mode commands use prefixes.
6 (commented on others PR)
May be good to just add userPrefs (just reference to same object)
7 (commented on others PR)
Eventually will have a FilteredList>Meeting> filteredMeetings ?
8 (commented on others PR)
Good to take out UserPrefsStorage from person package
Will StorageMeeting be extending from AddressBookStorage?
9 (commented on others PR)
Generalise this so that deliverables and contacts can also use the 'parseDescription'
10 (commented on others PR)
Add a note or TODO that this is to be renamed and Description is to be deprecated
11 (commented on others PR)
OptionalDescription.isValidDescription
12 (commented on others PR)
This may be intended as a String but could be resolved by generalised method as described above
13 (commented on others PR)
Same as above
14 (commented on others PR)
Could consider adding another static method / overloaded constructor that takes in a String so that we don't need to call Optional.of so many times
15 (commented on others PR)
From, To and Deadline will implement this so Message might need to be more general
16 (commented on others PR)
I was thinking whether we could just generate the valueString on the go instead of having an additional attribute
17 (commented on others PR)
Would optional DateTime be supported?
18 (commented on others PR)
is person card currently using this?
19 (commented on others PR)
more valid inputs:
-29th February for leap years
more invalid inputs:
-with seconds
vary the years to see how far back / into the future can be accepted / rejected
feel free to think of more test cases
20 (commented on others PR)
probably an exception? since its invalid user input not problems with our code
21 (commented on others PR)
requireNonNull
22 (commented on others PR)
where will IllegalArgumentException be thrown from?
23 (commented on others PR)
assuming all caught IllegalArgumentException is related to INCORRECT_FROM_AND_TO_ORDER
could try directly using isValidFromAndTo instead
24 (commented on others PR)
"### [Proposed] Autosort feature"
25 (commented on others PR)
Remove "#### Description" to standardize
26 (commented on others PR)
"#### Proposed Implementation"
27 (commented on others PR)
"#### Design consideration:"
28 (commented on others PR)
"##### Aspect: How autosorting executes"
29 (commented on others PR)
Alternative 1 (current choice): ...
30 (commented on others PR)
email is a compulsory field (phone is an optional field)
31 (commented on others PR)
Standardize headings - we are probably only sticking to Implementation and Design Consideration
32 (commented on others PR)
Not sure whether we should standardize not to give e.g.s
33 (commented on others PR)
standardize leaving empty line
34 (commented on others PR)
standardize capitalization
35 (commented on others PR)
DateTimes or dateTimes?
36 (commented on others PR)
Test case or Testcase
37 (commented on others PR)
item = Contact?
38 (commented on others PR)
Would it be all three .json files?
39 (commented on others PR)
might want to abstract this into a method that MeetingDetailsPanel can also use and increase readability of the code
40 (commented on others PR)
might need to rename to something like left and right panel placeholder because Dashboard will also be using these components
41 (commented on others PR)
might be good to have some documentation to make it easier to understand
e.g. explaining why updateDetailsPanel() is only invoked when a non SwitchCommand is invoked and how the UI is updated when
(can be left for future documentation)
42 (commented on others PR)
generally can decrease font size
also would be good to add a scrollbar to indicate that the right panel is scrollable ( can follow some of the fxml / css used for the result display)
43 (commented on others PR)
more importantly, when you change the window size there are some spaces that appear in the UI
44 (commented on others PR)
not necessary
45 (commented on others PR)
rename to correct test names and variable names
46 (commented on others PR)
thanks for updating the javadocs
47 (commented on others PR)
Move src/main/java/seedu/address/model/meeting/util/TimeEventComparator.java to src/main/java/seedu/address/model/util/TimeEventComparator.java and use the same class
48 (commented on others PR)
remove
49 (commented on others PR)
update variable name
50 (commented on others PR)
update variable names
51 (commented on others PR)
can it be EARLIEST_DATE instead of EARLIEST_DATE_STRING? so don't need to parse each time
also why Date and not LocalDateTime?
52 (commented on others PR)
just return !date.before(earliestDate)
53 (commented on others PR)
update in docs?
54 (commented on others PR)
if you check out https://ay2021s1-cs2103t-f11-2.github.io/tp/UserGuide.html#adding-a-meeting-add
this part isn't bullet point properly, mb
55 (commented on others PR)
I think tip should be right after Note, not Examples
https://ay2021s1-cs2103t-f11-2.github.io/tp/UserGuide.html#adding-a-meeting-add
56 (commented on others PR)
Dashboard
57 (commented on others PR)
just in case, maybe better to leave the "if in .. mode"
58 (commented on others PR)
more like a note.
maybe can say that the list view will be truncated for fields with long parameters
59 (commented on others PR)
actually this is a bit weird, should it be displays or some other word
60 (commented on others PR)
meetings
61 (commented on others PR)
end time
62 (commented on others PR)
remove comma
63 (commented on others PR)
right, ok just saw the 'sequence'
64 (commented on others PR)
personally I feel that there is no harm in updating with each command. same goes for calendar
maybe can merge master into your branch because some of the parts you edited were changed today
65 (commented on own PR)
I think this is for the initial initialisation of the Ui (to contain the Contacts List as of now). Can be changed later on to show dashboard
66 (commented on own PR)
Yes, maybe we can discuss the ordering because the one in the User Guide may be outdated
67 (commented on own PR)
To be fixed by #182
Updated in that PR
68 (commented on own PR)
Original phrasing of AB3, thinking it would better to just stick to that
69 (commented on own PR)
Yes, its currently Mode switched to: Deliverable
70 (commented on own PR)
or product development process?
71 (commented on own PR)
where sorry
72 (commented on own PR)
Concerned that it might be misinterpreted as preferences.json and a bunch of other .json files will be created
73 (other comment)
Updated in README.md
74 (other comment)
Updated in README.md
75 (other comment)
Rescope to just initial implementation of optional fields
76 (other comment)
Not for merge.
77 (other comment)
LGTM, JavaFX window size problem resolved
78 (other comment)
LGTM
79 (other comment)
Probably not a requirement of UG
80 (other comment)
Resolved by issue #171
81 (other comment)
Resolved by issue #164
82 (other comment)
UG: you can add deliverables with due dates in the past
hv to switch between ongoing and completed manually (there is no such automatically ongoing -> completed)
specify: all new deliverables added is 'on-going'
take note: no overdue tag - have to take note by yourself
83 (other comment)
UG might have too many screenshots and make it messy
84 (other comment)
Clear View Panel for all three models on FindCommand
85 (other comment)
Resolved in previous issue
86 (other comment)
Update UG
Change Contact to String instead of index
87 (other comment)
Allow editing of role
88 (other comment)
specify in the documentation that such behaviour will occur
89 (other comment)
Will be resolved in earlier issue
90 (other comment)
change bulletpoint example to email
change isSamePerson check to just name and email
change ordering (compulsory fields at front, opt fields at back) add r/ROLE n/NAME [p/PHONE] e/EMAIL [d/DESCRIPTION]
91 (other comment)
UG: specify country codes not allowed (tip box)
92 (other comment)
Change to internalList
Maybe can just reset filteredLists to predicate: true on any switch
93 (other comment)
switch db
switch dv
switch m
switch c
94 (other comment)
Separate tables for Command Summary
95 (other comment)
Resolved in previous issue
96 (other comment)
Resolved in previous issue.
97 (other comment)
remove date part of to/ (ie from is datetime, to is time, both from and to are compulsory)
98 (other comment)
Resolved in previous issue.
99 (other comment)
UG: Add Dashboard component (on same level as General)
Will be clarified in Command Summary
Also:
Swap order
Add dashboard component
Move exit up
100 (other comment)
Resolved in issue #164
101 (other comment)
Resolved in #171
102 (other comment)
change all addressbook to contactbook
change all user visible '*book' to '*list' e.g. Clear command
change all user visible 'person' to 'contact' e.g. .json files
103 (other comment)
Timeline / Schedule
Make date more obvious in UI (possibly follow mockup)
Calendar cards should have labels (reference other View Panels)
Remove Index from Calendar cards
104 (other comment)
Resolved in #171
105 (other comment)
Resolved in #171
106 (other comment)
Resolved in #171
107 (other comment)
Will default to full list on switching modes. To be fixed in #149
108 (other comment)
Resolved in #139
109 (other comment)
Goal is standardization
Perspective of app:
Viewing contact should be Displayed contact: %$s
List command should be Listed all contacts!
Clear should be Cleared all contacts!
\n
punctuation
110 (other comment)
Emails -> Email (email regex)
111 (other comment)
112 (other comment)
Can be justified
@tankangliang
(63 comments)1 (commented on others PR)
Should be added to Table of Contents as well if we're adding in a new command list
2 (commented on others PR)
The table of contents is actually generated by GitHub with
* Table of Contents
{\:toc}
With this addition we will have two copies of the TOC on our documentation website.
While editing this, could you also change the spelling of "Travelling Businessman" in "Glossary" to have a capitalized "M"?
3 (commented on others PR)
Minor point, but can this be changed to "E.g." instead of "eg" with the period.
4 (commented on others PR)
+ "client edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/COUNTRY] [tz/TIMEZONE]\n"
5 (commented on others PR)
Should this be checked with requireNonNull(predicate)
?
6 (commented on others PR)
String can be put into a constant for clarity
7 (commented on others PR)
Similarly, is requireNonNull
needed here?
8 (commented on others PR)
This check seems to be carried out in ParserUtil
already
9 (commented on others PR)
/** Client command in the form client view index, where index points to the index of the client at current location
of the rendered */
10 (commented on others PR)
Should fill in the javadoc here
11 (commented on others PR)
/** Client command in the form client view index, where index points to the index of the client at current location
To be more inline with the coding standards
12 (commented on others PR)
Could you change the class and file name to ClientViewCommandParser
? I will be updating the ones for Find and Delete in a future PR
13 (commented on others PR)
Missing javadoc for return here too
14 (commented on others PR)
/** Client command in the form client view index, where index points to the index of the client at current location
Pls have the space there 😦
15 (commented on others PR)
This should probably be moved over to Country.java
to be more consistent with the other classes.
16 (commented on others PR)
In AddressBookParser
, the arguments are passed in as return new ClientNoteAddCommandParser(tagNoteMap).parse(arguments);
. Shouldn't the preamble consist solely of the integer without the command word of client note add
?
Inside ClientEditCommandParser
, the index is parsed as such index = ParserUtil.parseIndex(argMultimap.getPreamble());
17 (commented on others PR)
There are helper functions assertParseSuccess
and assertParseFailure
that are used in testing of the other parsers, would it be applicable in this case as well?
18 (commented on others PR)
Wouldn't it be better to use NOTE_CONTENT_1
to show that there will definitely not be a difference in the input to the two notes?
19 (commented on others PR)
Is there a reason that this is instantiated differently from the rest?
20 (commented on others PR)
Similar to above
21 (commented on others PR)
Should this be used instead to check for validity of a date string? Then we could do away with the regex since it doesn't actually filter out 31-Feb.
22 (commented on others PR)
Maybe idx1
here since it's clientNote1
23 (commented on others PR)
Is there a reason clientNote1
is NOTE_CONTENT_2
?
24 (commented on others PR)
Not part of your commit, but could you help to fix this typo in the comments
25 (commented on others PR)
Set<SuggestionType> suggestionTypes = new LinkedHashSet<>();
Consistent with below
26 (commented on others PR)
Should be updated since this isn't passing in predicateList
anymore
27 (commented on others PR)
In the actual case, the command word "suggest" shouldn't be passed into the parser. The SuggestCommandParser
should have an additional check for non-empty preambles which was not added when I did created the skeleton initially. E.g. suggest 1243 adsfkn by/available
is still valid now but it probably shouldn't be.
28 (commented on others PR)
// different predicate -> returns false
29 (commented on others PR)
// different predicate -> returns false
30 (commented on others PR)
Should this be a constant EMPTY_CONTRACT_EXPIRY_DATE
?
31 (commented on others PR)
Should this class name be changed to CountryNodeAddCommandParser
?
32 (commented on others PR)
Maybe rephrase to "maximum of 45 characters" instead of "be within 45 characters"?
33 (commented on others PR)
Should this be countryListView
since the subpanel contains a countryNoteListView
?
34 (commented on others PR)
Is this 8 spaces after the previous line?
35 (commented on others PR)
Javadoc here should be unmodifiable? Also, can you change "arraylist" to "ArrayList"?
36 (commented on others PR)
Should be unmodifiable list here in the name
37 (commented on others PR)
Since nothing is returned here, the name should probably be changed. Maybe deleteClientNote_validNote_noteIsDeleted
?
38 (commented on others PR)
The return true here as well
39 (commented on others PR)
If the note index is invalid, the message shown is "The client index provided is invalid".
40 (commented on others PR)
Slightly inaccurate as AddressBookParser
returns a Command
type. Maybe talk about CountryNoteAddCommandParser
which extracts Country
and Note
into CountryNote
?
41 (commented on others PR)
Should we check if the notes are equal?
42 (commented on others PR)
Parsing of both targetClientIndex
and targetClientNoteIndex
is repeated here and in ClientNoteDeleteCommandParser
. Could be abstracted into a helper function in ParserUtil
if needed. However, Mc is also going to add prefixes so not a priority.
43 (commented on others PR)
I think same object
refers to comparing with itself which leads to the short circuit clause right? In this case, it's comparing with another object that has the same fields.
44 (commented on others PR)
I feel like these do not really help with making it easier to understand since it is pretty much repeated in the test names already. Possibly even makes it harder to understand since the user would have to match the name of the strings to find out what they test.
45 (commented on others PR)
not in use
46 (commented on others PR)
I think for >strong>>i>
we should follow the markdown conventions and use **
and _
?
According to https://se-education.org/guides/conventions/markdown.html
47 (commented on others PR)
The comments by Team 2 advices to link Travelling BusinessMan to TBM, maybe we can do that here since it is the first mention of TBM?
48 (commented on others PR)
Is this image in yet?
49 (commented on others PR)
Good catch
50 (commented on others PR)
* COUNTRY_CODE is a 2-letter country code that follows the ISO3166 specification. [List](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) of country codes.
From below, I think this sounds nicer out of the two.
51 (commented on others PR)
LOL 👍 nice catch
52 (commented on others PR)
What's this update?
53 (commented on others PR)
Should this be moved to the appendix as well? Then a link to it with "new help window". It seems out of place now compared to the other commands,
54 (commented on others PR)
Link doesn't seem to work on your website.
55 (commented on others PR)
The location for this file is `./data/tbmManager.json` (indicated at the bottom left of the application), where the
56 (commented on others PR)
Technically you can input commands in incorrect syntax.
57 (commented on others PR)
This part should be made clearer with use of actual names in the diagram. The "Client Card" as mentioned above refers to the display on the right but it's mentioned here to be "displaying the note".
58 (commented on others PR)
Maybe modify to be the same as FREQUENCY_DESCRIPTION
which mentions higher up on the list.
59 (commented on others PR)
client suggestion type
here
60 (commented on others PR)
do we wanna change this to client suggestion type?
61 (commented on others PR)
client suggestion type
here?
62 (commented on others PR)
client suggestion type
here?
63 (commented on others PR)
client suggestion type
here?
64 (commented on own PR)
I'll update for delete but leave find as it is for now, I think someone else is working on find?
65 (commented on own PR)
I think we can leave that to the refactoring since the hashmap currently uses String
as the key
66 (commented on own PR)
Initially it was because ClientUtil.java
needed to build the command given the client's details, I changed the implementation of getClientDetails
to explicitly use getCountryCode()
so this function isn't currently in use now. I thought it would make sense to have countryCode
since that is the value passed into the object like the other fields.
67 (commented on own PR)
Fixed
68 (commented on own PR)
Fixed
69 (commented on own PR)
Fixed
70 (commented on own PR)
ok, i've added it in.
71 (commented on own PR)
actually, i just checked, it's supposed to be part of my other issue LOL
72 (commented on own PR)
possible, I initially put it as an enum but it seemed too different from the rest of the code base. What do you think @qwoprocks
73 (commented on own PR)
yea forgot to change it when i updated to mingchong's changes 😦
74 (commented on own PR)
It can only be null if it doesn't exist in storage, but I feel like the corruption of this data field is too insignificant to have to throw away all existing data on this client.
75 (commented on own PR)
Nope, refer to PR description, tests currently rely on comparing two clients who are created at different timings, and this is pretty much just metadata for us I guess
76 (commented on own PR)
Placed it together with the existing test.
77 (commented on own PR)
this goes past character limit
78 (commented on own PR)
done
79 (commented on own PR)
done
80 (commented on own PR)
first 2 are over char limit, last one reformatted
81 (commented on own PR)
done
82 (commented on own PR)
done
83 (commented on own PR)
done
84 (commented on own PR)
ok changed
85 (commented on own PR)
done
86 (commented on own PR)
done
87 (commented on own PR)
I only found the one in TbmManager.java
but that one doesn't seem to be for class-level variables
88 (other comment)
While updating this, could you add in numbering for the use cases as well? Then this statement can refer to other use cases as an example.
89 (other comment)
Does #121 branch continue from this PR? If it does this PR can be closed.
90 (other comment)
Resolved in #117
91 (other comment)
Resolved in #119 #131 #137
92 (other comment)
Resolved in #119
93 (other comment)
Resolved #134
94 (other comment)
Resolved #134
95 (other comment)
Not relevant. Note interface is no longer being created.
96 (other comment)
Resolved #134
97 (other comment)
Updated in collaborative notes.
98 (other comment)
Currently have "([A-z ]+) ((\d+)?([ \w/]+)?)" as the regex which tries to separate commandWord
from arguments
through detecting either a number or a prefix. Requires " " to be padded to the end but this fails for "client find KEYWORD".
99 (other comment)
Resolved #215
100 (other comment)
Moved to v1.4 as UserGuide is a priority for v1.3
101 (other comment)
Moving to v1.4 due to low priority
102 (other comment)
Resolved #235
103 (other comment)
Resolved #235
104 (other comment)
Duplicate of #306
105 (other comment)
Duplicate of #293
@pr4aveen
(63 comments)1 (commented on others PR)
Should this be project book?
2 (commented on others PR)
Should we replace getTempFilePath("ab")
to getTempFilePath("pb")
?
3 (commented on others PR)
Should the variable be named pb
instead of ab
?
4 (commented on others PR)
Should this be named pb
instead of ab
?
5 (commented on others PR)
Should the indentation here and in the method below be 4 spaces from the parent comment?
6 (commented on others PR)
Is there a reason for adding this? These lines were removed in the previous PR as we removed those fields
7 (commented on others PR)
Just to confirm, the only time this test will fail is when the description is empty right
8 (commented on others PR)
Should there be an empty line before the @param
tag?
9 (commented on others PR)
Agreed, maybe we can create a new PR for this after merging all the important features for milestone 1.1.
10 (commented on others PR)
Should there be an empty line before the @params
tag?
11 (commented on others PR)
Is the requireAllNotNull()
method here supposed to check the description as well?
I believe the description parameter is not optional as of now, right?
12 (commented on others PR)
I think the code here should be rearranged so that it is a little clearer. The modelName
variable should be delared after the if (!Name.isValidName(name))
block
13 (commented on others PR)
Minor typo here
14 (commented on others PR)
Is there a variation of this test that you have written?
15 (commented on others PR)
Not sure if this Javadoc adheres to the coding standard
16 (commented on others PR)
Javadoc here should be StopCommand
instead of StartCommand
17 (commented on others PR)
Should these two checks be extracted out into another method to keep the equals()
method here clean?
18 (commented on others PR)
Should the javadoc here be more descriptive?
19 (commented on others PR)
Should have an empty line before the @param
tag
20 (commented on others PR)
Should the equals()
method below check whether both timers are equal?
21 (commented on others PR)
By below I mean in the Project.java
class, can't really highlight it from here.
22 (commented on others PR)
Javadoc comment needs to be updated to include timer
23 (commented on others PR)
Why not just use the otherProject
variable here?
24 (commented on others PR)
There should be an extra line before @params
tag and a description for what is returned after the @return
tag
25 (commented on others PR)
Should include an empty line before the @params
tag
26 (commented on others PR)
Can I just check what the reason for changing this was?
27 (commented on others PR)
I think the commands here can be highlighted once again. For example
/home
brings the user to home dashboard
28 (commented on others PR)
Should we replace these images with @khoodehui 's mockups? At least the ones that are ready
29 (commented on others PR)
If I'm not mistaken, all existing tags will be removed and only the tag normal will be left. Should we mention this?
30 (commented on others PR)
Should we separate format and examples into two columns?
31 (commented on others PR)
Can replace this with @khoodehui 's mockup as well
32 (commented on others PR)
Should these sentences end with a fullstop
33 (commented on others PR)
Should there be a big space here?
34 (commented on others PR)
This is something minor but I feel that it might be simpler to just do
Objects.hash(model, weeklyTotalTimePerProjectStatistic, Arrays.hashCode(statistics))
.
35 (commented on others PR)
Small issue but can you just change ProjectBook
to addressbook
here because the issue comes from there
36 (commented on others PR)
I agree with Farrell. I think it might be better to keep it in deadline.
37 (commented on others PR)
Do you think this method will be used elsewhere in the future? If it is, it might be a good idea to move it over to StringUtil.java
38 (commented on others PR)
I think the javadoc for this method should be updated to reflect the new name
39 (commented on others PR)
Should this go under seedu.momentum.commons.core.Messages
?
40 (commented on others PR)
Should these 3 variables just be declared directly since their values aren't passed into the constructor?
41 (commented on others PR)
Should we implement a compareTo
method in Date.java
?
42 (commented on others PR)
Incomplete header here
43 (commented on others PR)
I think we should have compareTo
methods in the Date
and Time
classes and use them here instead
44 (commented on others PR)
I'm not sure if there's a cleaner way to do this. What do the rest think?
45 (commented on others PR)
This part is related to the comment on Project.java
46 (commented on others PR)
I think you can extract the common string variables that you have reused in this section and make them private static variables. For example, ascending
, descending
, alphabetical
, deadline
, created date
47 (commented on others PR)
You might want to make these public static variables instead. It's used quite a fair bit in tests and it'll be better if they all refer to one variable
48 (commented on others PR)
Might want to replace the alpha
(and other keywords in other classes) with the public static variables I recommended in SortCommandParser.java
49 (commented on others PR)
Just checking, what's the expected behaviour when there is a preamble?
For example, sort hello type/alpha order/dsc
50 (commented on others PR)
Is Hello
referring to Dana
?
51 (commented on others PR)
Can you return Boolean.compare(this.completionStatus, other.completionStatus)
here? It'll make it clearer
52 (commented on others PR)
. after '@throws'
53 (commented on others PR)
I think requireAllNonNull(date, createdDate)
can be used here and in the constructor below.
54 (commented on others PR)
Replace Remove
with Removes
55 (commented on others PR)
Can you combine these 2 catches
56 (commented on others PR)
Is this commented out line needed
57 (commented on others PR)
Is this commented out part needed
58 (commented on others PR)
Same as above
59 (commented on others PR)
Does this method need to be annotated with @Test
? It seems like it's only being called by other test methods? Same for redoCommand
60 (commented on others PR)
Can this be removed?
61 (commented on others PR)
I might be misunderstanding this though. If it is actually a test, maybe the name can be changed? You have it in VersionedProjectBookTest
as well
62 (commented on others PR)
It'll be ideal if they can be named in this manner featureUnderTest_testScenario_expectedBehavior()
I think the updateOrder method can follow this convention
63 (commented on others PR)
Sure
64 (other comment)
As discussed, description will be implemented as an optional parameter instead. A new PR will be created for this issue.
65 (other comment)
As discussed, description will be implemented as an optional parameter instead. A new PR will be created for this issue.
66 (other comment)
But one thing to consider is that the entry that you are working on might disappear.
Let's say your filtered list only has one entry. If you edit that entry and it the project doesn't match the predicate anymore, the list will not be empty. This might be a little weird from a UX perspective.
I'm not sure whether we should fix this. What do the rest think?
67 (other comment)
To replicate, make sure the time spent tab isn't fully filled and run a random command like edit 1 n/lol
68 (other comment)
Something broke find yesterday. Find doesn't check tasks anymore, can look into it this weekend
69 (other comment)
Perhaps we can follow the same behaviour as the active timers window and do this
70 (other comment)
Team decided to not implement this feature.
71 (other comment)
Feature will not be implemented.
72 (other comment)
Design of application changed. Support for searching for both tasks and projected will no longer be included
@Wincenttjoi
(61 comments)1 (commented on others PR)
Would item added to inventory be better?
2 (commented on others PR)
Should we add the app's ability to handle table reservations and pending deliveries? (like in Mock UI)
Since this is the final product's aim
3 (commented on others PR)
If I rmb correctly, the following word after @return it should be the type, then description for subsequent words
4 (commented on others PR)
Is this change to /11.0.1 automated by your intellij system or you changed it manually?
5 (commented on others PR)
>StackPane fx:id="deliveryListPanelPlaceholder" minHeight="-Infinity" prefHeight="440.0"
6 (commented on others PR)
private StackPane deliveryItemListPlaceholder;
Just to keep it more consistent with itemListPanelPlaceholder, what do you think? Just some minor stuff
7 (commented on others PR)
Is this meant to be DeliveryListCard.fxml or sth along that line? Or you plan to merge the different cards into same style hence they both refer to ItemListCard?
8 (commented on others PR)
Is this misleading? chicken
and CHICKEN
is meant to be the same?
9 (commented on others PR)
* Only full words will be matched e.g. `chicken` will not match `chicken`
10 (commented on others PR)
Shall we have multiple summary tables for each component (inventory vs delivery), since not all commands necessarily overlap?
Nothing to change here, just need your suggestion. I can make the amendments in my PR.
11 (commented on others PR)
Thanks for abstracting this out for base Model.
We'll follow this moving onwards 👍
12 (commented on others PR)
Oops sorry didnt read properly, thought it was a typo!
13 (commented on others PR)
And should be phone, not quantity! Hahah
14 (commented on others PR)
+ PREFIX_ADDRESS + "ADDRESS "
15 (commented on others PR)
+ PREFIX_PHONE + "PHONE "
16 (commented on others PR)
Can just check why are the types opposite?
17 (commented on others PR)
Ah nvm my mistake, understood whats happening alrd
18 (commented on others PR)
I'm not really sure with myself either, but doesnt RAM depends on the user's device?
19 (commented on others PR)
Not sure if this is relevant? Feels abit iffy to me
20 (commented on others PR)
It doesn't need a network at all? Refer to number 14
21 (commented on others PR)
Do you want to include the key arrow up feature to go back to previous command entered in commandBox? Trivial but like cool only
22 (commented on others PR)
Was actually thinking to let @wengfaing do this part since he needs some boost to meet his functional code req! (Maybe for the other help start window)
23 (commented on others PR)
You mean Models#undo for the second one?
24 (commented on others PR)
<div markdown="span" class="alert alert-info">:information_source: **Note:** If the current pointers are pointing to the latest state, then there are no undone InventoryBook/ DeliveryBook states to restore. The `redo` command uses `InventoryModel#canRedo()` and `DeliveryModel#canRedo()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.
25 (commented on others PR)
Frm my understanding NFR needs to be something that is within our control, but in this case its more like dependent on the user and not within our control. Maybe can be rephrased like: Storing 100 states of undo and redo command models should take up less than ... Kb?? What do you think
26 (commented on others PR)
Quite curious about this as well. Maybe we should summon @AaronCQL ? Hi what do you think
27 (commented on others PR)
Nah its ok! whats done is done dont have to revert back because you alrd spent the time and effort
28 (commented on others PR)
Step 5. The user then decides to execute the command `list-i`. Commands that do not modify the inventoryBook/ deliveryBook, such as `list` and `find`, will usually not call `Models#commit()`, `Models#undo()` or `Models#redo()`. Thus, the `inventoryBookStateList` and `deliveryBookStateList` remain unchanged.
29 (commented on others PR)
I think 6 and 7 can be combined!
30 (commented on others PR)
Wanna specify the commands? Maybe add delete these basic functionalities can be 1s. Then sort/ find can be 2s? Regardless of data size
31 (commented on others PR)
I dont really understand this though, is there a better way of rephrasing?
32 (commented on others PR)
Sounds iffy and seems like something that is googled and copy pasted hahah, shall we remove? I think quality > quantity
33 (commented on others PR)
Would it be relevant? Because we know that this is a software and not hardware
34 (commented on others PR)
If I remember correctly, all the conditions need a [ ... ] right?
And maybe instead of having true or false like this, it can be replaced as: Item exists in InventoryBook vs Item does not exist in InventoryBook
35 (commented on others PR)
Apart from adding a new Item, should there be an existing item in the Inventory Book, `Add` will be able to increase the quantity of that particular Item.
36 (commented on others PR)
- Are not allowed to be defined if there exists the same item inside InventoryBook.
37 (commented on others PR)
- Will be combined together if there exists the same item inside InventoryBook.
38 (commented on others PR)
No 2 can sound like number 2. And I don't really understand what is the message you're trying to bring across, perhaps a paraphrasing is needed?
39 (commented on others PR)
Would you want to explain or provide a brief explanation of the diagram?
40 (commented on others PR)
I think it'll be even better if you split up into 2 sections in this adding part: Adding to an existing item, adding to a non-existing item (instead of explaining them in the expected part)
41 (commented on others PR)
U can use the information source for this kind of note to make it consistent
42 (commented on others PR)
Expected: Item with `Name` of Chicken, `Quantity` of 123, `Supplier` of NTUC, `MaxQuantity` of 500 and `Metric` of kg added when there is no existing same item.
43 (commented on others PR)
*Note how the app contains some sample data but the installed version on your desktop might have a different data set.*
44 (commented on others PR)
Not sure if this is better? Is the white spacing too big for every picture?
45 (commented on others PR)
The spacing for this seems the best thus far
46 (commented on others PR)
Example 2: `add-i n/Tuna q/20 s/NTUC` using [Figure 1](#bruiimagesuiwithannotationpng-br) as the starting point.
47 (commented on others PR)
Forgot to put Figure here
48 (commented on others PR)
Another missing figure
49 (commented on others PR)
If i were u i'll add multiple tags too for full set, then example 2 is minimum add = only name and quantity
50 (commented on others PR)
I think can be better rephrased with the action first. By pressing arrow up key ........ you can ........ What do you think?
51 (commented on others PR)
Would it be better to specify what is the exact command? So that number 2 can also be more specific what was being undone
52 (commented on others PR)
Since this section is meant for testers to test manually, and since for this mod the tester is new for our app (PE), would you think putting a Note: you can restart the application if you have entered commands previously would be helpful for the tester?
53 (commented on others PR)
Oh thats true. Ok its fine to leave it as such then if u hvnt made the changes
54 (commented on others PR)
Can we follow what's on master's branch for this part? Deliverer's name is not a suitable term
55 (commented on others PR)
Maybe [n/NAME] [ s/SUPPLIER] ... would be more consistent? Rather than all KEYWORDS. Same as below in line 512
56 (commented on others PR)
can change KEYWORDS to NAME, SUPPLIER, TAG
57 (commented on others PR)
Would you like to edit an empty tag? Change metric and max quantity? Since these are the ones that are more special for edit-i
58 (commented on others PR)
You can also put when x is not an integer
59 (commented on others PR)
The class diagram has commands, shouldnt it be blue in colour?
60 (commented on others PR)
Can I trouble you to change line 625 of undoes a command from >u> to >/u>
If not everything is underlined until the end of the file. Thanks!
61 (commented on others PR)
ah its only in my local, ignore this
62 (commented on own PR)
@halcon-blanco thanks, amended!
63 (commented on own PR)
Sure, I will include a different colour for that as well
64 (commented on own PR)
Made the necessary changes including the test case
65 (commented on own PR)
@halcon-blanco Thanks for pointing out, I've changed to saveDateTime
66 (commented on own PR)
@zeranium97 Thanks! Updated
67 (commented on own PR)
Thanks for spotting, remedied.
68 (commented on own PR)
seems to be fine on my side
69 (commented on own PR)
@zeranium97 updated, thanks!
70 (commented on own PR)
@xnoobftw did the changes, thanks for spotting!
71 (commented on own PR)
AHHAHA SO CUTE THANKS
72 (commented on own PR)
Thanks for spotting.
On the side note, if you put anchor tag inside ### there will be a bug. If you notice in our UG, you cant click on Features and glossary 🤪 I've changed it to outside to remove the bug
73 (commented on own PR)
Good point, added ur suggestion pls check again
74 (other comment)
This is for the case where restocking is needed, etc
75 (other comment)
Should add be able to handle restocking? Ie whereby if the name and supplier is the same, quantity of that particular stock will be increased by the amount stated.
76 (other comment)
LGTM, rmb to accept and merge with previous PRs first (if possible) to prevent excessive conflict next time 🤙
77 (other comment)
Thanks for the name refactoring, LGTM
78 (other comment)
Thanks for info, will trace and refactor this to make it work and PR again
79 (other comment)
LGTM 👍
80 (other comment)
You have to rebase/ merge with master first and deconflict before PR or it will get rejected
81 (other comment)
Oops sorry I just realized this is for tutorial.. I thought its meant for actual PR to be merged hahah
82 (other comment)
https://www.figma.com/file/bwoqFizIJKUu1bA8WqLzuq/Untitled?node-id=0%3A1
83 (other comment)
@xnoobftw one way is to not put preferences.json inside gitignore, but this default value is meant for first time users. Since all of us are developers, its okay to delete it (because users perspective as first time users they will not have the preferences.json)
84 (other comment)
LGTM for this version, we will make further nits along the way in this project for UG DG 👍
85 (other comment)
@wengfaing do you want to add the relevant unit/ integration tests first for this command? Including parser for the command, logic, etc. Or do you prefer to do these tests in next iteration?
86 (other comment)
Sure, LGTM for this implementation! We can make the remove unit tests' tasks during next iteration
87 (other comment)
@halcon-blanco @xnoobftw understand that you guys are working tgt and need to pull from each other, but a suggestion would be to merge a feature-in-progress in another organization branch instead of master next time, just for a good workflow practice but no big issue 😃
88 (other comment)
@zeranium97 there's conflicting files, just rebase your commits and we'll review again 👍
89 (other comment)
A delivery model requires name, phone, address and order. Is the PR meant to be complete or is it WIP? Just checking because I can't seem to find any of these in the PR
90 (other comment)
It's to be implemented by @zeranium97 when he implements storage
Ok sure, since its in another branch we'll merge it first. Praying hard it'll work well so that we can merge into master 👍
91 (other comment)
Errors not caught:
remove 1
remove 1 q/-123
remove 1 q/
remove 1 q/ASDF
Would be great if you can do unit testings for these too. Thank you! @wengfaing
92 (other comment)
@halcon-blanco i'm fine with this, since we might need to change again in the future into 3 sections so no issue. For the colouring, is it easy to implement colouring to be conditional (red vs green if stock falls below 20%)? If its a huge task we can create a separate task.
Further improvement:
Low priority: I didn't do the GUI for help toolbar on top to open up the 2 different help windows since the app is meant for CLI primarily. But feel free to connect them if you want 😃
93 (other comment)
WIP: as discussed in #95
GUI help window toolbar
Colouring difference (red vs green)
Please tick once done so that we know when to merge 👍
94 (other comment)
@zeranium97 oh yes remember to assign PRs you made to yourself as well as the milestone. This one is just for admin purposes so that cs2103 can track (yes it doesn't matter in v1.2b but just reminding for future milestones)
95 (other comment)
@zeranium97 Are you also catching other exceptions as the scenarios mentioned in #105 comments?
96 (other comment)
@Wincenttjoi I've made the changes you requested, plus changed the whole structure of the DeliveryList GUI to match that of the ItemList. (Tonnes of headache cuz debugging GUI is super hard).
I also wrote the basic code in MainWindow.java for initialising the values into the DeliveryList on starting the app, with currently an empty ObservableList being initialised temporarily. The Delivery class I wrote is also currently just a stub with no functionality.
Thanks for changing and doing more than required! LGTM
97 (other comment)
Do you plan to do the other exceptions? If not then I can merge this PR first for now. Thanks @zeranium97 !
98 (other comment)
@xnoobftw @halcon-blanco sure, if want to make it flexible its fine too. I'll close this thanks!
99 (other comment)
Is there any other exceptions I might have missed out for this command?
Only those 4 checkboxes i've put in #105. Can't really check if it works for all 4 in my internal application since we're still forced to do in forking workflow. If all's good then can merge 👍 Help me check on your side please
100 (other comment)
LGTM thanks!
101 (other comment)
its ok @wengfaing i'll help you do the tests
102 (other comment)
Just want to check if you're bothered by the naming? Because sometimes I get confused that Item is actually referring to only Inventory. Sometimes I would think of Inventory item vs Delivery item (Item is the umbrella term for the different types)
Any thoughts for this? If you're okay with I'll see what I can refactor in next PR too
103 (other comment)
Just want to check if you're bothered by the naming? Because sometimes I get confused that Item is actually referring to only Inventory. Sometimes I would think of Inventory item vs Delivery item (Item is the umbrella term for the different types)
Any thoughts for this? If you're okay with I'll see what I can refactor in next PR too
I think our understanding is that Item refers solely to inventory item
Ok can! We'll keep it as such then np. LGTM. Test cases we will push it to nxt milestone!
104 (other comment)
@AY2021S1-CS2103T-T12-1/developers do you guys prefer to standardize Order to not be able to accept empty string or just space? I can add the VALIDATION REGEX if you want, because the rest of the delivery objects seem to have this as a minimum req.
105 (other comment)
things to be added
- Command & Parser testcase
Are you planning to add it in this PR or another PR?
106 (other comment)
I will be adding it into this later tonight
@zeranium97 Ok, normally a common practice that people use if the PR is not ready they will use WIP in the header. Changed for you! **Ofc the CI needs to be put first and I just made a PR for that
107 (other comment)
We PR once u done the test cases first?
108 (other comment)
LGTM thanks!
109 (other comment)
@zeranium97 U forgot to add a test for the add parser
In case you wanna do feel free hahah!
110 (other comment)
@xnoobftw If you are okay with implementing, I think it would be good to return a message on the commandbox to make it consistent with other commands
111 (other comment)
@xnoobftw If you are okay with implementing, I think it would be good to return a message on the commandbox to make it consistent with other commands
May i know what you mean by this?
So an example would be after the command sort ...
a line should return on the command box
A possible reply would be like: You inventory item/delivery is sorted according to .............
112 (other comment)
@AY2021S1-CS2103T-T12-1/developers sorry that I couldn't attend the impromptu meeting. Just a short question, I'm curious why exactly sequence diagram for delete
command but not others? Is there a specific reason?
113 (other comment)
@xnoobftw
do you want to add small note on ur diagram to briefly describe what XYZ is?
Arrow for >>Interface>> Parser on the Parser section is abit misleading, mind to remedy that to make it more coherent?
Perhaps you can also bring the Command and Parser box bigger (filling up >80% of the space) bcs there's too much white space and its too small for people to see. Size of individual blue boxes can also increase in size if you dm 👍
Executes labelling on command part not clear on which line it should belong to
HelpCommandResult extends from CommandResult missing
I think there's no more concrete XYZCommand since they are all extracted to the smaller commands (items, delivery, help)
@AY2021S1-CS2103T-T12-1/developers feel free to discuss bcs i'm not 100% sure either
114 (other comment)
- Will do!
- Do you mean having a solid line? Because it's how its represented in AB3
- Do you mean increasing the font size?
- The PUML auto generates this D:
- Added! Thanks
- Redo, Undo command still does! exit too
@xnoobftw
Nope, I only meant the starting point of the line bcs its overlapping with the line on the left
The overall box size as well as individual boxes (inside) size, and font size
Oops its fine then!
Yes just realized that too, my mistake!
115 (other comment)
@xnoobftw try to occupy the diagram >80% of the picture! If not too small hahha.
Edit: I realized that we can't reposition the arrows, just saw the documentation hahah. Not sure if 2 is doable
116 (other comment)
@halcon-blanco I think this must be done before tutorial!
117 (other comment)
Idt 2 and 3 is doable due to puml automating it
But does this fulfil ur requirement!
@xnoobftw
Can check this out for 3 https://plantuml.com/skinparam
Reason being is because we need to make our dg comprehensible thats why we shdn't just leave this out even though it seems trivial
Yup looks good! (Apart from box sizing)
118 (other comment)
Increased fontsizes to 30!
Thanks! Sorry one last thing, you forgot to change the link in your Logic component description, its still referring to addressbook link
119 (other comment)
@xnoobftw oh thanks. Its bcs I saw not green yet in the team project progress hahah, thanks!
120 (other comment)
LGTM thanks!
121 (other comment)
@AY2021S1-CS2103T-T12-1/developers the rest going to review? I might missed out on a few things here and there.. Would be good if everyone take a look before approving DG PRs
122 (other comment)
There's a couple of errors in the diagram! Check out the ss i tagged
Does inventoryModelManager has Item? Not sure about this, or is it referring to the FilteredList>Item> filtered Items
?
Same goes for deliveryModelManager
123 (other comment)
And another update! I dont see a uniquetaglist class in the folder unless im mistaken! and i dont think we should show inventory book in the item class diagram
Actually I think its fine with or without the InventoryBook, because the reader can see how its connected to the component outside Item. Seems like @zeranium97 has changed it to without but im fine with either! (Personally think with is better tho)
124 (other comment)
@halcon-blanco you can CTRL F address
and see the relevant addresses to be changed hahah, still got more
125 (other comment)
LGTM Thanks!
126 (other comment)
@halcon-blanco made the changes as requested
127 (other comment)
@zeranium97 think you forgot to checkstyle first
128 (other comment)
LGTM thanks!
129 (other comment)
Feels like its much more restrictive if find command is not universal but needs the n/ p/ s/ parser infront. @AY2021S1-CS2103T-T12-1/developers thoughts on this? But since its implemented im fine with this too.
130 (other comment)
@zeranium97 realized that ur structure of items object and delivery object are not explained at all. U want to add the explanation urself or I do it for you? Also its a class diagram, not object diagram
131 (other comment)
This part is abit misleading, update an item sounds like editing
132 (other comment)
Step by step feature update:
XY - ADD
SAAD - EDIT, UNDO REDO
BOBBY - FIND, LIST
WF - REMOVE
W - HELP, DELETE
133 (other comment)
@AY2021S1-CS2103T-T12-1/developers i'll be adding introduction as such
Fine with you guys?
134 (other comment)
@AY2021S1-CS2103T-T12-1/developers
She actually annotated this though, shall we change to tuna?
135 (other comment)
@xnoobftw you may want to consider orientating the reader on your screenshot. Lets say the screenshot is to explain you want to key in inside the commandbox, questions to consider:
Is it really necessary to screenshot the entire application for filling up the command box?
Would you want to highlight the commandbox since that is the focus?
Should you just screenshot the commandbox part instead?
Just feel that its a little bit overkill to repetitively screenshot, but just personal opinion.
136 (other comment)
LGTM
137 (other comment)
@xnoobftw you may want to consider orientating the reader on your screenshot. Lets say the screenshot is to explain you want to key in inside the commandbox, questions to consider:
- Is it really necessary to screenshot the entire application for filling up the command box?
- Would you want to highlight the commandbox since that is the focus?
- Should you just screenshot the commandbox part instead?
Just feel that its a little bit overkill to repetitively screenshot, but just personal opinion.
I think that screenshotting the entire applciation helps with navigating the app esp to a user.
To preserve consistency can i ask for your help in the highlighting the commandbox and result boxes respectively in both png? reason being we'd probably want it to look similar to Figure 1
Remind me if i forgot to add in my PR. Also cos still need to wait for our last feature to be up
138 (other comment)
LGTM 👍
Boss u forgot to merge 🤪
139 (other comment)
@zeranium97 your diagrams are super pixelated and super hard to read. Re screenshot the png files from the puml?
140 (other comment)
hows the uml diagram on ur side?
It looks like this on my side even after ur latest commit
141 (other comment)
hows the uml diagram on ur side?
It looks like this on my side even after ur latest commit
The class diagram should be blue, looks fine on my side tho
Forgot to pull hahah my bad, LGTM
142 (other comment)
To be done:
143 (other comment)
Add description to UG
144 (other comment)
To be changed: Alphabets only.
145 (other comment)
Explain in UG about max quantity's behaviour
146 (other comment)
Edit UG to make it more consistency
147 (other comment)
Todo:
Limit integer for quantity - edit in regex of quantity
148 (other comment)
Add in UG to explain multiple of same parameters, take the last one.
149 (other comment)
UG - Add by/TIME
150 (other comment)
Todo:
Change error message for find-i find-d
151 (other comment)
Add description in the window itself, ALT F4 to close help window
152 (other comment)
Add hours and days
@tohyuting
(60 comments)1 (commented on others PR)
I think this should be Warehouse's remark 😃
2 (commented on others PR)
Since we are including this constraint, should we include this inside our user guide so that users will be aware of this constraint when adding remarks to a warehouse?
3 (commented on others PR)
Should this be Remark instead of Address? Noticed this issue in a few places below (email instead of remark, etc) as well for Javadocs of various methods. Do take a look at it 😃
4 (commented on others PR)
Do you think replaceWarehouseList would be clearer here since the above method to change one warehouse differ only by a single letter? 😃
5 (commented on others PR)
Should this be removed instead? 🤔
6 (commented on others PR)
Minor issue, missing '.' for isSameWarehouse
7 (commented on others PR)
Should we include warehouse here although for this iteration we are not intending to include tagging for warehouses products?
8 (commented on others PR)
With the if condition statement removed here, will there be an issue where the for loop only runs one time since the return statement will force the function to stop executing?
9 (commented on others PR)
Same issue here, as pointed out above.
10 (commented on others PR)
Is the extra supplierList here as a placeholder for warehouse? I think the statusbarPlaceholder should be removed as well 😃
11 (commented on others PR)
Just adding a note here to remember to change supplier to warehouse when updating tests cases later on.
12 (commented on others PR)
Just to check, did you perhaps miss out the conflict here?
13 (commented on others PR)
Same for these conflicted import statements as well 😃
14 (commented on others PR)
Just wish to clarify, is the method empty because this method is allowed to be called but there is no specific function this method can do?
15 (commented on others PR)
Alright, noted
16 (commented on others PR)
Will it be clearer if the statement is Creates an Addcommand to add the {@code Product} to the specified {@code Supplier}
17 (commented on others PR)
Maybe it will be clearer if you clarify that the exception is thrown due to index specified to be larger than list of supplier/warehouse since it is not so clear reading from these lines here 😃
18 (commented on others PR)
Just to clarify will this still be relevant for CLI-nic and also, is it still Tag, or would it be Remarks?
19 (commented on others PR)
do remember to update the delete command here as well 😃
20 (commented on others PR)
Are suppliers and warehouses missing Remark attribute?
21 (commented on others PR)
I see! Agreed, I think we can improve on this paragraph after we finalise our UML towards the end. Looks good to merge then! 👍
22 (commented on others PR)
Yes, sorry about that!
23 (commented on others PR)
Just wish to clarify, is there a need for the if clause here since there is a conditional check above (lines 89-90) where this method would be called if targetType.equals(SUPPLIER). Could there potentially be any cases where targetType is not equals to SUPPLIER and this method could be invoked?
24 (commented on others PR)
Just to clarify, what are the other same methods that you are looking at to shift it under Command class? 😃
25 (commented on others PR)
Ah okay, that explains! 😃 All is clear now, no issues with this part 👍
26 (commented on others PR)
Hmm, I am not sure if shifting to the parent command class would be okay, since AddCommandParser only implements a Parser interface and there is no parent class for the parser classes. Though I can also understand where you are coming from as well, I am thinking would it be out of place if we shift it to under ParserUtil class? Maybe we can discuss with others as well and see how do we want to implement it such that there would not be a case of overlapping.
27 (commented on others PR)
Not too sure if it makes a major difference, but I am wondering if it would be better to access the fullName via some form of getter method instead of accessing the attributes directly. 🤔
28 (commented on others PR)
I think this empty line can be removed
29 (commented on others PR)
Some extra spaces here can be removed as well
30 (commented on others PR)
Hmm, I guess in that case let's just use .fullname
instead of a getter method then, since it is used in several places as well 😃
31 (commented on others PR)
I think this should be a Delete
command
32 (commented on others PR)
Should the numbering be changed to "1. 2. 3. 4." ?
33 (commented on others PR)
Maybe "such as" instead of like would be better in this sentence 😃
34 (commented on others PR)
Would "parse the input to generate a valid DeleteCommand
" be better rather than "parse the input into a valid DeleteCommand
"?
35 (commented on others PR)
"form a DeleteCommand
" sounds a bit weird, maybe "will create a new DeleteCommand
" is better.
36 (commented on others PR)
"an execute" for this line here 😃
37 (commented on others PR)
"Warehouse deletion" instead of "Warehouse deletions" here
38 (commented on others PR)
I am not sure if this should be "Based on"
39 (commented on others PR)
I think splitting this long sentence up to shorter sentences would be clearer 😃 Maybe something along like:
Afterwards, model#deleteWarehouse
/model#deleteSupplier
will remove the target entry from the list in the model
. The model
will then update the displayed list.
40 (commented on others PR)
Same issue as above, I think maybe using create would be more appropriate
41 (commented on others PR)
This line is a bit unclear to me, maybe "It then locates the respective warehouse/supplier entry at the INDEX
passed in for deletion".
42 (commented on others PR)
Perhaps breaking this long sentence up would be clearer as well! "replace the old entry with the updated target entry from the list in model
. The model
will then update the displayed list." would be better 😃
43 (commented on others PR)
Perhaps we can consider to split up this long sentence as well. Maybe something like:
"if a user's input specifies ct/w ct/s
where both w
and s
are valid, there will be no error thrown. However, the type s - supplier will be chosen instead.
44 (commented on others PR)
Oh okay, I didn't know that, sorry about that!😃
45 (commented on others PR)
There is an extra space after macro in this line
46 (commented on others PR)
There is an extra edit here that should be removed
47 (commented on others PR)
Somehow ℹ️ Note: is still not showing correctly if I try to view this md file here. 🤔
48 (commented on others PR)
This sounds a bit confusing. Maybe:
Recovers a previous version of CLI-nic data if any data has been changed by using undo command. Redo command will restores the data in CLI-nic before an undo command was done.
49 (commented on others PR)
Would this contradict with previous commands, where we accepts the last argument?
50 (commented on others PR)
This sounds a bit strange. Perhaps "Recovers the previous state of CLI-nic before undo command" would be clearer.
51 (commented on others PR)
I think it should be "if undo was successfully executed" here 😃
52 (commented on others PR)
okay then! 👍
53 (commented on others PR)
I think there is an extra line here.
54 (commented on others PR)
Is it clearer if the type of objects for UpdateCommand are specified in this line?
55 (commented on others PR)
I think would be clearer if the line is changed to "Name
for supplier/warehouse and product as well as a new UpdateProductDescriptor
with the provided quantity and tags, if any."
For the second part of the sentence, maybe we can split it up to:
or if the type and names of the supplier/warehouse and product are not supplied. Here, an error message will be presented on the GUI.
56 (commented on others PR)
Maybe he/she here would be better 🤔
57 (commented on others PR)
I think this sentence is a bit long. Maybe we can split it to:
the method will first check if there is any existing macro in the model that uses the same alias. If that is true, an exception will be thrown. This will be shown on the GUI as an error message
58 (commented on others PR)
Same for objects here, do you think it will be clearer if the specific types of objects are stated?
59 (commented on others PR)
Would he/she be better here instead of he? 🤔
60 (commented on others PR)
Should we split this to 2 test cases, one where product exist, another it does not exist (So that the if statement does not shows up in step 2 of MSS?)
61 (commented on own PR)
Accepted, will remove @return
and change "Creates" in first line of JavaDocs to "Returns"
62 (commented on own PR)
Thanks for pointing that out, will push another commit to fix this!
63 (commented on own PR)
Noted, thanks for pointing that out! Will be pushing another commit with the updates.
64 (commented on own PR)
Thanks for pointing this out, missed out on the javadocs comment for class!
65 (commented on own PR)
Noted, will updated in next commit as well.
66 (commented on own PR)
Thanks for the suggestion, let me try to use that instead of arrays.aslist(String[]{})
67 (commented on own PR)
Thanks for pointing that out! Will be removing that in the next commit.
68 (commented on own PR)
Thanks for pointing this out, will fix it in the next commit along with removal of above clause as well!
69 (commented on own PR)
Thanks for pointing this out, will fix it in the next commit!
70 (commented on own PR)
Oh no, this should be clinic instead. Thanks for pointing this out!
71 (commented on own PR)
Oh the error message will be shown when a user tries to use a supplier prefix, s/ when editing warehouses, I think that the output message is correct though? 🤔
72 (commented on own PR)
Thanks for pointing them out! And yes, I think I made a typo on the 4th sentence, will change it to "will be used to process user input"
73 (commented on own PR)
I think I figured out why, there was not space between the last line of the paragraph and the line right after it (with -), will fix this in my next commit!
Will also fix the grammar as well, thanks for pointing that out.
74 (commented on own PR)
Just went to take a look at how it is defined in deleteCommandParser and addCommandParser, and yes I think arePrefixsPresent does these checks! I can change it to this function, However, I realised that would also mean I will not be able to throw specific ParseException reminding user which prefixes they are missing (either one, or all). Which do you think would be better (in terms of code quality and user experience?) 😃
75 (commented on own PR)
I can remove this if we want to just show a more generic error message instead. For instance, if someone entered p/99999999 z/testing, using the check in class construction will show an error message that the phone number is not valid. However, this is not the case as the number attached to prefix p is valid, except an incorrect prefix was added at the end, resulting in the check for isValidPhone to fail. Same for checks where p/99999999 testing when user enters random string value behind a prefix (or will this case be treated as wrong input?)
76 (commented on own PR)
Oh yes, you are right! Thanks for spotting it 😃
77 (commented on own PR)
Good idea! Shall we standardise for Add command as well 😃
78 (commented on own PR)
Will do the change! Thanks for spotting the error
79 (other comment)
Accepted suggestions above, will do the appropriate changes
80 (other comment)
Thanks for pointing them out! I agree with Jeffrey on the third point as well, I think it would improve user experience if we let for instance a delete command with random string at the back to pass through rather than forcing the user to re-enter the command without the random string.
As for the first point, may I clarify if you meant for e.g. add vs Add (or any other variations of add) in the case of command string to be insensitive?
Also, another bug I noticed was for delete, find and view, the ordering of arguments matter. In our user guide, it was mentioned that parameters can be in any order. However, without any delimiter in place, like t/TYPE, it will be hard for us to ascertain which word is for type and which word is for name of supplier/warehouses (in the case of find and view). I was thinking if we should specify that ordering does not matter for all commands except delete, find and view in our user guide to be clear.
EDIT:
Just to add on, the current way of handling adding of suppliers and warehouses has a bug since type of determined by doing a substring of trimmed arguments. If users are allowed to reorder the arguments, the parser will detect this as an invalid command.
In addition for adding of supplier, it seems like email address has to be a compulsory field (invalid command is shown), but in the UG it is an optional field. Should we still keep email address field as an optional field?
For adding of warehouses, if remarks field (which is optional) is left out, a java.lang.reflect.InvocationTargetException will be thrown. I think we missed out these cases, but no worries, let's fix them in v1.3 iteration! 😃
81 (other comment)
Thanks for the review! I will be pushing up another commit to fix some logical issues and to incorporate Type class into my code 😃
82 (other comment)
I was thinking we can fix the method such that we do not allow same name because in reality, two suppliers/warehouses should not have the same name. However, different suppliers/warehouses can have the same address/email/phone if they are subsidiary companies of an organisation.
83 (other comment)
Will be adding testcases for isSameSupplierByName method if we intend to keep this method in the end instead of changing isSameSupplier.
84 (other comment)
Would that be confusing for the user though, since now suppliers are allowed to have the same name yet this is not the case for warehouses? Otherwise to ensure there will not be any error, I will just leave the isSameNameSupplier method under Supplier class and depending on what conditions we are checking, we can call the appropriate method!
85 (other comment)
Yes you are right. Ah okay, I think I understand what you mean now. I was thinking of suppliers as companies (ending with Pte Ltd etc) instead of a single person (like George Lim). That is why I thought it would not be okay for suppliers to have same name as well. However, what you said make sense as well. In that case, would it be better to keep it as the original way of checking if suppliers are "the same"?
86 (other comment)
Yes! I think we can standardise the format when reviewing the documentations as well 😃
87 (other comment)
Thanks for spotting the typos, will do another commit to fix them!
@halcon-blanco
(60 comments)1 (commented on others PR)
I think all the arguments, except INDEX, should be optional here
2 (commented on others PR)
Likewise for here
3 (commented on others PR)
should be .getMaxQuantity().get().toString()
because .getMaxQuantity() returns Optional>Quantity>
4 (commented on others PR)
would isQuantityPresent be a better name?
5 (commented on others PR)
shouldn't this be replaced by if (!(other instanceof RemoveCommand))
instead
6 (commented on others PR)
Sorry I think I misunderstood what you asked last time haha. But do you think there should be some indication if stock goes above 100% as well
7 (commented on others PR)
I believe you should also try a test case with a non RemoveCommand object. I believe the current equals method doesn't handle this and will throw a ClassCastException
8 (commented on others PR)
apart from this small issue, it LGTM for me!
9 (commented on others PR)
Could be more SLAP like
return hasNextCommand() && isWithinLengthLimit();
10 (commented on others PR)
Is this abstraction really necessary?
11 (commented on others PR)
I'm a little confused as to what the role of hasReturnedCurrentCommandBefore is. Could you add a comment to the code explaining a little what is going on
12 (commented on others PR)
Fair enough
13 (commented on others PR)
Looks good. LGTM!. Really good job on figuring out the logic
14 (commented on others PR)
Should change the name of this variable to better reflect its purpose
15 (commented on others PR)
actually it just occured to me after merging that this name is also not appropriate LOL. It should be more like dateTimeFooter or something, because you aren't saving anything
16 (commented on others PR)
In the else condition, you should return quantity1 - quantity2
i.e. when percentage is same, or when there is no percentage, then the item with lesser quantity is higher up
17 (commented on others PR)
Do we want a separate (from getFilteredItemList()
) method here? Why not let sorting be done within getFilteredItemList()
18 (commented on others PR)
why not return this in getFilteredItemList()
19 (commented on others PR)
Not an issue, just that this is the first time I have seen o as a variable name 😆
20 (commented on others PR)
should it be &&
or ||
21 (commented on others PR)
I don't think the "Sorted" part is accurate here. The old name updateFilteredItemList
sounds more appropriate
22 (commented on others PR)
Sorry this one very nitpicky, but if you're changing the "o's", can you change this one too
23 (commented on others PR)
and this one
24 (commented on others PR)
the original is correct (i.e. prefers typing to mouse interactions)
25 (commented on others PR)
user executeS. (missing s)
26 (commented on others PR)
OneShelf is capable of storing many items and pending deliveries.
Therefore, it is of utmost importance to have the ability to find items
and deliveries based on different fields. There could also be many similar items and
this will definitely aid the user in find them quickly. <br>
27 (commented on others PR)
and `TAGS` for items using `find-i`. Similarly, for deliveries, it is also possible
28 (commented on others PR)
Good idea to mention that!
29 (commented on others PR)
lexicographically (typo)
30 (commented on others PR)
"in finding them" or "to find them" either is fine
31 (commented on others PR)
this one is my fault I apologise
32 (commented on others PR)
typo
33 (commented on others PR)
For some reason, the bold markdown isn't applying in the preview
34 (commented on others PR)
### 3.2 General Features
35 (commented on others PR)
This is awesome!
36 (commented on others PR)
this implies that n/
is mandatory.
Maybe something like find-d [n/NAME | p/PHONE | a/ADDRESS | o/ORDER]
37 (commented on others PR)
refer to the one for find-d
38 (commented on others PR)
very nice annotations!
39 (commented on others PR)
hmm I didn't check it on the website, but on github itself it looked different
40 (commented on others PR)
Like this
41 (commented on others PR)
"Comprises" is misleading. You could say "is implemented by InventoryModelManager and DeliveryModelManager", but frankly, it's not necessary to add that line here. The first sentence sounds enough since this is just an overview
42 (commented on others PR)
Having the d, or some label there, might be usefeul, to show the command being passed back to the front. For instance, right now you do use the "command" label on one of the return arrows, which essentially represents the "d" here
43 (commented on others PR)
There isn't a "ModelManager" class from what I remember. It should be "DeliveryModel".
44 (commented on others PR)
this is the thing I'm referring to. Over here you use the label "command", but it's not 100% clear where that came from, which is why I think you should replace all the d's you removed with this "command" label
45 (commented on others PR)
This shouldn't be removed, it's the constructor for DeleteCommandParser
46 (commented on others PR)
* In the format of commands, square brackets are to indicate optional fields. The fields in the square brackets are not mandatory to input.<br>
47 (commented on others PR)
This doesn't feel like it should belong in the interface, but in the implementation
48 (commented on others PR)
It's a little weird how many times you need to format it. Perhaps have the constructor take in a LocalDateTime instead of a String
49 (commented on others PR)
You should make the pattern string a constant since it's being used multiple times
50 (commented on others PR)
what's this commented chunk
51 (commented on others PR)
perhaps a better name instead of initialise to make it clear what it's initialising. (Maybe initialiseDeliveryCountdown)
52 (commented on others PR)
won't you have -1 min -10 secs
53 (commented on others PR)
My bad ignore this
54 (commented on others PR)
Iirc that was because Aileen had a misunderstanding between the command format and the actual command. Saying square brackets are not necessary is wrong because if you put them in the actual command then it's wrong
55 (commented on others PR)
Would it be better to just delete it
56 (commented on others PR)
almost LGTM, can you just remove this test case
57 (commented on others PR)
// shift the currentCommandHistoryIndex to the end of the list
this.currentCommandIndex = commandHistory.size() - 1;
}
if (isLimitReached()) {
this.commandHistory.remove(0);
Then below this in the else
else {
this.currentCommandIndex++;
}
this.commandHistory.add(command)
This makes the happy path much much clearer
58 (commented on others PR)
I believe the UG has changed now to use the |
format instead
59 (commented on others PR)
likewise
60 (commented on others PR)
Perhaps this should be after the command usage is shown. Actually maybe it shouldn't be shown at all, and leave it to the user guide for them to know what it means. What do you think?
61 (commented on own PR)
I have refactored maxQuantity to use Optionals instead of using "0" now
62 (commented on own PR)
oh didn't realise that happened, must have been automatic
63 (commented on own PR)
thanks for catching that! yes it should be DeliveryListCard
64 (commented on own PR)
have fixed it
65 (commented on own PR)
Yeah sounds like a good idea!
66 (commented on own PR)
"will NOT match" so original should be fine
67 (commented on own PR)
Yes actually I copied most of it from the find-i command, and I was also confused as to what was being said here. I believe it's trying to say that if you have an item called chicken and one called CHICKEN, then both will be returned (although this is no longer applicable to us). I'll change it to a more appropriate example
68 (commented on own PR)
What do you mean
69 (commented on own PR)
I know we're changing this, but to answer this, I didn't think it necessary to check deliveryModel since it wasn't being used
70 (commented on own PR)
Good point. Will add it
71 (commented on own PR)
ok let me try
72 (commented on own PR)
Makes sense, I shall change it
73 (commented on own PR)
issue with this is that it becomes hard to make a canRedo() method without adding another pointer, which makes things messy. I think our array limit will never be set beyond a few 1000 so it's not an issue (and if it is ever changed, the code can be refactored then)
74 (commented on own PR)
Manual testing shows that it works as expected when the limit is 1 or 2
75 (commented on own PR)
oh sheez for some reason my github didn't show all your comments
76 (commented on own PR)
ok so for the static variable, I luckily saw the issue too and just fixed it. as for the capacity != size part, yeah my bad haha still rusty from 2040 times will add it in
77 (commented on own PR)
ok you can check it out now!
78 (commented on own PR)
thanks! shall start work on test cases then
79 (commented on own PR)
Done!
80 (commented on own PR)
Yeah it does, but this is NFR so you're stating that the user should have this. Like it's the assumptions you're making about the system the program will run on
81 (commented on own PR)
Budget is part of NFR because it is a constraint on the project. (Although from a quick google search, it is a bit debated, but the top answer here says it is
82 (commented on own PR)
Right yea that definitely needs to be removed. thanks for pointing out!
83 (commented on own PR)
I believe it already has been added by Xing Yu in the next paragraph
84 (commented on own PR)
OH, because one of my tasks for the weeks was to show help in the result display on start up that's why I edited that. Should I revert it back?
85 (commented on own PR)
Or maybe can ask @wengfaing to make a separate message to display for help on start up and then later change it to show that instead
86 (commented on own PR)
Yes, good catch
87 (commented on own PR)
Ah I feel like we'll never run out of these mistakes haha
88 (commented on own PR)
I've made the relevant changes!
89 (commented on own PR)
Ah I understand your concern, and yes the rephrasing is good. Will add it in
90 (commented on own PR)
Can but they are different things so I don't see the harm in separating them
91 (commented on own PR)
ok sure
92 (commented on own PR)
Physical inventory referring to the actual restaurant's inventory. meaning it won't actually clear all the items out or anything. Just to emphasize that this is a productivity tool, and not an actual product that physically manages your inventory
93 (commented on own PR)
well you're not wrong about the googling 😆 . Yeap I'll just remove it
94 (commented on own PR)
I'll just remove it as well since it's quite nonsense
95 (commented on own PR)
can
96 (commented on own PR)
I get what you mean, but at the same time I think the MSS should be general. I guess I can put the example in brackets?
97 (other comment)
@Wincenttjoi I thought just need make pull request only for the tutorial. Everyone else's pull requests I see also have conflicts
98 (other comment)
Haha no worries
99 (other comment)
Currently tests are failing, because @xnoobftw will be working on them, so merge this first (if all else looks good) even though the CI build is failing
100 (other comment)
@xnoobftw done! CI is passing now.
101 (other comment)
By the way, the conflicts came because of my PR which just got merged, so just keep that in mind haha don't throw everything out
102 (other comment)
@Wincenttjoi ah yes that does make more sense, thanks!
103 (other comment)
@wengfaing how do you want to divide this task
104 (other comment)
@AY2021S1-CS2103T-T12-1/developers do you want the Delivery section and Items section to be of equal width, or the current width they have right now
105 (other comment)
Currently it looks like this
106 (other comment)
For the colouring, is it easy to implement colouring to be conditional (red vs green if stock falls below 20%)? If its a huge task we can create a separate task.
Yes that is very doable
Further improvement:
Low priority: I didn't do the GUI for help toolbar on top to open up the 2 different help windows since the app is meant for CLI primarily. But feel free to connect them if you want 😃
I'll check it out
107 (other comment)
@Wincenttjoi I've made the changes you requested, plus changed the whole structure of the DeliveryList GUI to match that of the ItemList. (Tonnes of headache cuz debugging GUI is super hard).
I also wrote the basic code in MainWindow.java for initialising the values into the DeliveryList on starting the app, with currently an empty ObservableList>Delivery> being initialised temporarily. The Delivery class I wrote is also currently just a stub with no functionality.
108 (other comment)
Disagree. Different restaurants may use different kinds of metrics and having metrics follow enums we may not cover all cases. In such cases edit command would suffice to correct the error
agreed
109 (other comment)
@AY2021S1-CS2103T-T12-1/developers do remember to pull branch-delivery to your local repo before working on it if you're working on this branch
110 (other comment)
Could someone jog my memory on what is required for this again, apart from just renaming the command syntax and repackaging the files
111 (other comment)
Yeah. It becomes a bigger issue when searching by phone number or address in the deliveries
112 (other comment)
Yes that's possible. Is there anything else you think we should do as well. I'm thinking delivery order as well.
113 (other comment)
Fixes #116
114 (other comment)
Just want to check if you're bothered by the naming? Because sometimes I get confused that Item is actually referring to only Inventory. Sometimes I would think of Inventory item vs Delivery item (Item is the umbrella term for the different types)
Any thoughts for this? If you're okay with I'll see what I can refactor in next PR too
I think our understanding is that Item refers solely to inventory item
115 (other comment)
Lol I already added an issue for this. I'll just delete my issue
116 (other comment)
Metric should not be allowed to change in an add command on an existing item
Appropriate error message for when a user tries to do so
117 (other comment)
@xnoobftw yea sure!
118 (other comment)
Refer 8daa9e6
119 (other comment)
@Wincenttjoi I'm having some issues with the test cases (they work individually but don't work when the whole test suite is run. I've been googling but still am not sure where the issue is), don't think they'll be done any time soon.
Maybe PR first so that the rest of development can work on top of it (for instance the new delivery commands will need to take this into consideration now)
Edit: don't merge this yet
120 (other comment)
Can accidentally do my DG also
121 (other comment)
Sure, will check it out
122 (other comment)
Oh I only purged for "addressbook" earlier but didn't think about "address" in general. Thanks for pointing that out
123 (other comment)
also, locally, pull this remote master branch to your local master, then merge it to allow-find-command-to-take-more-field
branch and resolve conflicts
124 (other comment)
I agree. I don't think it's too hard to just check whether a word in the query is contained within any of the fields either
edit: at the same time, I think this approach may be too unrestrictive.
125 (other comment)
I don't think you have updated the sequence diagram image (only the puml has been updated from what I see)
126 (other comment)
@Wincenttjoi you already did this right
127 (other comment)
I'll merge if you dw any changes above! Those are just suggestions but not critical
Sorry just saw this. I'll quickly make the changes and you can merge it
Edit: you can check it out now!
128 (other comment)
Could I also request two more things
129 (other comment)
Try again, let us know if it works!
Yes it works now!
130 (other comment)
To do:
Add |
symbols to find documentation (@halcon-blanco)
Shift the |
note to the top (@wengfaing)
@wakululuu
(58 comments)1 (commented on others PR)
McScheduler is a a one-stop solution
Typo here
2 (commented on others PR)
* **`assign`**`s/3 w/2 r/Cashier` : Assign the 2nd worker on the list to the 3rd shift on the list as a Cashier.
Inconsistent spacing around :
compared to the rest of the bullet points
3 (commented on others PR)
<img src="images/sigmund-c.png" width="200px">
Requirement to use .png
4 (commented on others PR)
>space>
can be removed to be consistent with the rest of the commands
5 (commented on others PR)
There are a few other similar instances below as well
6 (commented on others PR)
if (test.trim().isEmpty()) {
7 (commented on others PR)
Perhaps remove >space>
here as well. Same issue in ShiftEditCommand.java
and RoleRequirement.java
8 (commented on others PR)
Perhaps add this note after the sequence diagram to explain its inaccuracy.
<div markdown="span" class="alert alert-info">:information_source: **Note:** The lifeline for `AddCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
</div>
9 (commented on others PR)
Maybe this can be removed if it's not needed.
10 (commented on others PR)
Would it be possible to allow the editing of the worker as well?
11 (commented on others PR)
if (!editedWorker.isFitForRole(assignment.getRole())) {
12 (commented on others PR)
Perhaps these two lines can be moved out of and before the for
loop.
13 (commented on others PR)
Seems like this only works for the case where a role requirement that was present in a shift is completely removed from it. I don't think the case where the quantityRequired
of a role is changed but the role
remains unchanged has been accounted for.
14 (commented on others PR)
+ ": Calculates the weekly pay earned by a worker identified by the index number used in the displayed worker list.\n"
Prints
seems to be a more programming-specific term which the target user (ie. a McDonald's manager) may not understand.
15 (commented on others PR)
I think implementing the logic of calculateWorkerPay()
in this class itself may be more consistent with the rest of our commands. Maybe the rest can chip in on this
16 (commented on others PR)
Minor issue but 8 hours may be more realistic since McDonald's usually open for more than 12 hours a day
17 (commented on others PR)
Assignment | **Reassign** | `reassign so/OLD_SHIFT_INDEX wo/OLD_WORKER_INDEX sn/NEW_SHIFT_INDEX wn/NEW_WORKER_INDEX`<br>e.g. `reassign so/4 wo/1 sn/1 wn/1 r/Chef`
18 (commented on others PR)
"Unavailability must contain one of the days: MON, TUE, WED, THU, FRI, SAT, SUN and "
19 (commented on others PR)
* `reassign so/4 wo/1 sn/4 wn/2 r/Chef` Reassigns the 2nd worker on the worker list to the 4th shift on the shift list as a chef.
* `reassign so/1 wo/2 sn/3 wn/2 r/Cashier` Reassigns the 2nd worker on the worker list to the 3rd shift on the shift list as a cashier.
For consistency with the rest of the features
20 (commented on others PR)
Examples:
21 (commented on others PR)
* The old assignment involving the worker at the specified `OLD_WORKER_INDEX` and the shift at `OLD_SHIFT_INDEX` must exist.
Not sure if this will be clearer
22 (commented on others PR)
Format: `worker-add n/NAME hp/PHONE_NUMBER a/ADDRESS p/HOURLY_PAY [r/ROLE]... [u/UNAVAILABLE_DAY UNAVAILABLE_TIME]...`
Would this be clearer since all the params will be visible directly instead of having to refer to the details below? It is also more consistent with the format of specifying a role requirement and mass assigning.
23 (commented on others PR)
Assuming the suggestion above is taken, this can be split into 2 points for UNAVAILABLE_DAY
and UNAVAILABLE_TIME
which may be easier to read.
24 (commented on others PR)
accepted). The worker will be unavailable during the specified `UNAVAILABILITY`(s).
Perhaps the removed lines are more appropriate in the assign
feature itself.
25 (commented on others PR)
May I know the rationale behind this change since this example is used above for UNAVAILABILITY
as well?
26 (commented on others PR)
I believe that's a capital 'O'
27 (commented on others PR)
operations are supported to reduce the required number of command calls.
28 (commented on others PR)
`*CommandParser` class, mass operations uses the `ArgumentMultimap#getAllValues(Prefix)` method, which parses the user input
29 (commented on others PR)
These operations consist of their own `*Command` class and `*CommandParser` class. In each of the supported
30 (commented on others PR)
Perhaps keep this line with (must be a positive integer)
instead of the suggested edit to keep the message consistent across all commands.
31 (commented on others PR)
+ "{" + PREFIX_WORKER_ROLE + "WORKER_INDEX (must be a positive integer) ROLE}...\n"
...
would show that the params can be repeated multiple times. I believe there is currently no convention to group a set of command prefixes and params with whitespaces between them together but perhaps we could use { }
.
32 (commented on others PR)
Would be good to still see all the assignments added.
33 (commented on others PR)
I don't think there is a need to update after adding each assignment.
34 (commented on others PR)
Similar to AssignCommand
, it would be good if all assignments removed can be shown.
35 (commented on others PR)
for (WorkerRole workerRole : workerRoles) {
36 (commented on others PR)
for (WorkerRole workerRole : workerRoles) {
37 (commented on others PR)
for (Index workerIndex : workerIndexes) {
38 (commented on others PR)
for (Index workerIndex : workerIndexes) {
39 (commented on others PR)
Similar to AssignCommand
, I don't think we need to update in the loop.
40 (commented on others PR)
Similar to AssignCommand
, it would be good to list all the assignments removed.
41 (commented on others PR)
Personally, WorkerRole
as a class name doesn't seem very intuitive. Maybe use WorkerRoleAssignment
or WorkerRolePair
. The others can chip in on this as well.
42 (commented on others PR)
Is this a typo?
43 (commented on others PR)
+ "{" + PREFIX_WORKER + "WORKER_INDEX (must be a positive integer)}...\n"
44 (commented on others PR)
+ "{" + PREFIX_WORKER + "WORKER_INDEX (must be a positive integer)}...\n"
45 (commented on others PR)
Not sure if this is necessary. Would it work if instead of this, we just put the original check
if (!shiftToAssign.isRoleRequired(role)) {
throw new CommandException(Messages.MESSAGE_INVALID_ASSIGNMENT_NOT_REQUIRED);
}
within the for
loop before each model.addAssignment(assignment)
call (ie. between lines 128 and 129)?
46 (commented on others PR)
Same comment as above, I think we can just place this check in the for
loop before adding each assignment as well.
47 (commented on others PR)
Since assignStringBuilder
keeps track of the assignments already added, perhaps we can concat the list of successful assignments to the CommandException
thrown.
48 (commented on others PR)
That's a valid point
49 (commented on others PR)
e.g. `n/NAME [r/ROLE]` can be used as `n/John Doe r/Cashier` or as `n/John Doe`. `[u/UNAVAILABLE_DAY [UNAVAILABLE_TIME]]`
can be used as ` ` (i.e. not provided), as `u/Mon` or as `u/Mon am`.
Perhaps this will illustrate the use of nested square brackets better.
50 (commented on others PR)
### Locating shifts by day or time: `shift-find`
Purely cosmetic
51 (commented on others PR)
* `worker-find alex david` returns `Alex Yeoh` and `David Li`
52 (commented on others PR)
* Only the day and time are searched.
53 (commented on others PR)
* `shift-find Fri PM` returns all shifts on Friday and all PM shifts. i.e. `FRI PM`, `THU PM` and `FRI AM` shift will all be returned
* `shift-find Mon` returns a `MON AM` shift and a `MON PM` shift
* `shift-find AM PM` returns all shifts
Perhaps we can add an example which searches both the day and time
54 (commented on others PR)
Worker | **Find** | `worker-find KEYWORD [MORE_KEYWORDS]`<br>e.g. `worker-find alex david`
Since the rest of the commands use examples from the Features section, perhaps it could be kept consistent here.
55 (commented on others PR)
if ((!newRoles.contains(assignmentRole) && !Leave.isLeave(assignmentRole))
56 (commented on others PR)
if (Leave.isLeave(role)) {
57 (commented on others PR)
if (Leave.isLeave(toAdd)) {
58 (commented on others PR)
assert !Leave.isLeave(roleToDelete);
59 (commented on own PR)
Great idea, thank you!
60 (commented on own PR)
Good catch, edited.
61 (commented on own PR)
It seems that it is a practice to make RuntimeException
s checked exceptions if the client is able to recover from them (https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html). But I do agree it is inconsistent with the other methods so I have changed the implementation of UnassignCommand#execute()
itself.
62 (commented on own PR)
Good catch, thank you!
63 (commented on own PR)
Makes sense, edited
64 (commented on own PR)
Good point
65 (commented on own PR)
This will definitely be clearer for the user
66 (other comment)
Different interpretations of the word "require" used in the UG resulted in the user misunderstanding that the ROLE
field is compulsory. The phrasing should be made clearer in the UG.
67 (other comment)
Unable to recreate. Maybe the rest can try.
68 (other comment)
Not a bug. No shift was assigned to the worker in the example resulting in no pay.
69 (other comment)
worker-list
is useful as we have a find
command which would filter the list of workers so worker-list
is required to show the full list of workers.
Refactor FindCommand
to WorkerFindCommand
Depending on time, we can add a ShiftFindCommand
or remove ShiftListCommand
70 (other comment)
Duplicate
@lowjiefeng1998
(58 comments)1 (commented on others PR)
Should this be Hall-y instead of AddressBook? Also, should it be hall admin (according to the use cases) instead of hall leader? Similarly for the rest of the terms below.
2 (commented on others PR)
Should it be 'enters' instead?
3 (commented on others PR)
Hmm seems like there was an issue with Git. Could you keep the original line under 'Saving the Data'?
Also, could you update the command summary at the bottom of the UG as well?
4 (commented on others PR)
Should it be just 'in Hall-y', instead of 'in the Hall-y'?
5 (commented on others PR)
Should it be resident instead of person?
6 (commented on others PR)
Should this be a resident instead of a person?
7 (commented on others PR)
Nice! @schoolex can refer to this for #37 when implementing the CLISyntax.
8 (commented on others PR)
Should this be a series of instructions instead of a tip?
i.e. something like the edit
command in the UG:
GENDER: must be either M or F
ROOM_NUMBER: must be >Block>_>Room Number>
9 (commented on others PR)
Should there be a space after the commas?
10 (commented on others PR)
Should it be 'listing all residents' instead?
11 (commented on others PR)
A very minor nit, but is there an additional linespace between the previous method and this method?
12 (commented on others PR)
Should GenderType type
be a private variable as stated by the coding standards?
13 (commented on others PR)
Minor nit again 😟 . Is there an additional linespace between this if block and the previous one?
14 (commented on others PR)
Should the getEditPersonDescriptorDetails()
in the file be updated also?
15 (commented on others PR)
Should this be GENDER_DESC_BOB
instead?
16 (commented on others PR)
Should the "M"
be GENDER_DESC_BOB
instead?
17 (commented on others PR)
Would you consider adding a similar test for invalid gender as well?
18 (commented on others PR)
Would you consider updating the MESSAGE_USAGE
in this class as well?
19 (commented on others PR)
Should the constructor of this class be updated as well?
20 (commented on others PR)
Minor typo here in the comments.
21 (commented on others PR)
I think we need this for the Jekyll project site.
22 (commented on others PR)
Should we standardise and use application instead of app since it is a formal document?
23 (commented on others PR)
Should be it designers instead of designer?
24 (commented on others PR)
Should it be document instead of documented?
25 (commented on others PR)
Should there be an additional fullstop?
26 (commented on others PR)
It doesn't really matter, but you can consider using event.getDescription().description
as well.
27 (commented on others PR)
Okay for this is fine for now, but maybe you can check if the editedEvent
and target
events are unique before setting them into the list? Else you might get duplicates within the UniqueEventList
.
28 (commented on others PR)
Nice!
29 (commented on others PR)
Is there a typo in the javadocs? editedEvent
instead of editedPerson
30 (commented on others PR)
Hmm... this is okay, but do test with very weird user inputs - like if they insert spaces anywhere.
E.g. assign 6 1
, assign 6 1
, etc.
31 (commented on others PR)
Can consider doing a nullcheck on model
too, similar to DeleteCommand
.
32 (commented on others PR)
Neat! Can consider checking that residentIndex > 0
and eventIndex > 0
as well (either here or somewhere else).
33 (commented on others PR)
Hmm could you explain the TODO?
Based on my understanding, ModelManager
updates the filteredPersonList
during a add
command because the user may have keyed in find X
, followed by add Y
- so the UI needs to reset back to the full view by updating the predicate.
34 (commented on others PR)
Can you do it in both? So its similar to UniquePersonList.java#setPerson
35 (commented on others PR)
Okay, try to keep this in mind while testing 😄
36 (commented on others PR)
Is this method named wrongly?
37 (commented on others PR)
Neat! You can consider going further with this type of test case: e.g. "1 1" (2 spaces between each 1)
.
38 (commented on others PR)
Sorry this should be target.isSameEvent(editedEvent)
- they're slightly different.
39 (commented on others PR)
Should it be execute_assignResident_success()
instead?
40 (commented on others PR)
Oh ya! I'm so sorry, I was wrong.
41 (commented on others PR)
Hmm... These 2 steps are not very clear.
My guess is that ListGroupCommand#execute
gets the filteredpersonlist
, then iterates through it and gets a set of student groups?
42 (commented on others PR)
Hmm... should we still keep the alternatives since there is only one design here?
43 (commented on others PR)
Should it be ......is called...and returns...
?
44 (commented on others PR)
Sorry could you change this to make it clearer?
4. The `ListGroupCommand` calls `ListGroupCommand#execute()` *which* retrieves the list of all residents by calling `Model#getFilteredPersonList()`.
5. The `ListGroupCommand#execute()` iterates *through* the list...
45 (commented on others PR)
Will this work as intended if the user does:
find n/XX
thereby shortening the list
list-group
46 (commented on others PR)
Hmm this is quite interesting, so if I key help 3
/list-group 3
, the command still works - is this a feature or a bug?
We can consider checking for this in another issue.
TLDR: no need to change this part, it's fine!
47 (commented on others PR)
Good use of SLAP!
48 (commented on others PR)
Hmm this might be a problem because the person is stored in 2 places - an ArrayList and UniquePersonList - complicating the logic.
E.g, suppose the resident 1 has current student groups basketball.
User adds choir using: edit 1 s/basketball s/choir
Then searches for all student groups via list-group
Will choir still show?
Perhaps you can consider removing this additional field, and then return addressbook.getPersonList()
? (Check AddressBook.java
for this method).
49 (commented on others PR)
About this, if the location itself contains at "@", will the resulting display look weird? e.g. it might come up as 01/01/2020 15:00 @ Dining Hall @ Eusoff.
50 (commented on others PR)
But then if the user keys in weird inputs that can make the whole label look weird, e.g. 01/01/2020 at Dining Hall at Eusoff
51 (commented on others PR)
Hmm sure. It might turn out to be "01/01/2020 15:00, Dining Hall, Eusoff", but that is fine.
52 (commented on others PR)
Would you consider making this getter more defensive? e.g. return a copy/unmodifiable list.
53 (commented on others PR)
Is there a typo in the method name?
54 (commented on others PR)
Sorry this isn't exactly your issue, but actually should it be "[" + PREFIX_STUDENT_GROUP + "STUDENT_GROUP " + "]..."
instead? Reason being the user can actually do find s/dance s/basketball
.
55 (commented on others PR)
Neat!
56 (commented on others PR)
Is there a typo in the method name - should it be test_matriculationNumber_returnsTrue()
?
57 (commented on others PR)
Are these 2 the same?
58 (commented on others PR)
Okay never mind, my bad.
59 (commented on own PR)
Hmm the old link generates a badge though. Using /actions/
doesn't generate a badge, but a link instead...
60 (commented on own PR)
Ohh I see. Sorry I misunderstood that.
61 (commented on own PR)
Okay! I updated it. Currently it's just dummy data. We should probably have a source of truth somewhere in the code to validate if the block numbers and room numbers are all valid (I'm thinking somewhere in preferences.json
might be good).
62 (commented on own PR)
Okay done. Thanks!
63 (commented on own PR)
Okay, I have added a field to manage the list of attendees tot the Event
class.
I didn't add the way to add students to the list yet - this is still a dummy implementation and there might be some design considerations you can make for associating persons to events (e.g. unmodifiable lists, etc).
64 (commented on own PR)
Might need change this implementation to also compare the attendees list
65 (commented on own PR)
Similarly, not sure if this hash will take into account 2 events with same name, description, but different attendeesList (or that it doesn't matter).
66 (commented on own PR)
We should. Doesn't really make sense to have just the alternatives with no explanation.
67 (commented on own PR)
Okay! Fixed it after our standardisation - to keep all return arrows.
68 (commented on own PR)
Good catch! Fixed 😄
69 (commented on own PR)
Sorry! Fixed.
70 (commented on own PR)
Seems that requireAllNonNull()
checks all items as well. Refer to UniquePersonList
.
71 (commented on own PR)
Oops.
72 (commented on own PR)
Good catch! Fixed
73 (commented on own PR)
Alright, done!
74 (commented on own PR)
Sure
75 (commented on own PR)
This was modelled after the UniquePersonList
. @yanchenglee98, fyi.
76 (commented on own PR)
This section is repeated.
77 (commented on own PR)
Thanks, fixed.
78 (commented on own PR)
Thanks, done
79 (commented on own PR)
Good catch, fixed.
80 (commented on own PR)
Good point. Fixed.
81 (commented on own PR)
Good point - fixed.
82 (other comment)
Closing this, since it is part of the tutorial. Will not be merging unless we decide to drop address.
83 (other comment)
Closing this, since it is part of the tutorial. Will not be merging unless we decide to add Remark.
Need to verify if the tP tracker will still pick this up if the PR is closed. Do reopen if the tP tracker requires the PR to be open for grading.
84 (other comment)
Closing since AB3 already implements this feature. Do make sure if that the feature works with the updates to #10.
85 (other comment)
Remove from milestone v1.2. Will consider adding this into milestone v1.3.
86 (other comment)
Oops I missed this out: could you also update the command summary section for the edit
command too?
87 (other comment)
PR closed as I messed up Git. 😢
88 (other comment)
Closing this, since it is part of the tutorial. Will not be merging unless we decide to add Remark.
89 (other comment)
Not sure why the badge doesn't load when it's first loaded, but after refreshing, it loads? 😕
90 (other comment)
Closing. Has been completed.
91 (other comment)
Closing for now since the tP tracker says there are no references left.
DG might still have some (since the explanation of the code still needs to use AddressBook*.java), but that's fine.
92 (other comment)
Nice, thanks! 😄
93 (other comment)
EDIT: was part of #91.
94 (other comment)
EDIT: was part of #91.
95 (other comment)
EDIT: was part of #91 as well.
96 (other comment)
Was resolved by issue #98 and PR #106 - viewing of all events handled by the UI.
97 (other comment)
Pushing back this issue for v1.4 instead.
98 (other comment)
The matriculation number is used in storing event's attendees - it's quite a critical bug.
99 (other comment)
Closed via #160.
100 (other comment)
Closing this issue for now - we feel like our application still benefits the hall admins to manage hall events even without being to filter the event list.
101 (other comment)
This is a feature, not a bug. Events are only considered duplicates if they have the same name, location and date.
Will improve UG on this.
102 (other comment)
Not addressing this issue. Highlighted this in the UG (#223) as a feature, not a bug 😛
103 (other comment)
Closed using #230.
@michael-setia
(56 comments)1 (commented on others PR)
Maybe we can add ParseKeyword() method to the ParserUtil class?
2 (commented on others PR)
I think we should access ModuleName class instead of Name class?
3 (commented on others PR)
Same issue as above.
4 (commented on others PR)
Should it be index.getZeroBased()? Since the constructor for ViewCommand specifies that the index should be zero based ("@param moduleIndex Zero based index of the module in the list of modules.")
5 (commented on others PR)
I think we can create sections for the accessor methods for each type of list? Since there are going to be todolist and possibly schedule list also. Just to make things more organized 😃
6 (commented on others PR)
Maybe can change "person" to "contact"?
7 (commented on others PR)
I think we should add a JavaDoc for this constructor? Just to maintain consistency 😃
8 (commented on others PR)
I like how this is separated into 2 lines (not combined into 1 line like the original code) which can enhance readability 😄
9 (commented on others PR)
I think the solution that we can consider for the 2 problems above is to have static field for the 3 types of the parser. This way we can have better abstraction and don't need to instantiate the parser every time a command is called by the user.
10 (commented on others PR)
@jonasngs I think it should be fine since this is just the first layer for checking the commands. It will be checked again in each of the FeatureParser e.g. even though "addmodule1" may pass the ParserManager, the method parseCommand() in ModuleListParser will throw an exception anyway.
In addition, I think we can consider using static HashSet for checking the type of the command. It will be accurate (less prone to bug) and also fast at the same time (no need to check for every existing command), but of course it will consume more memory (which one is our priority though?) 😃
11 (commented on others PR)
I think we should check if all of the prefixes are present i.e. not just name and email but also telegram and tags? Since the Contact class requires all of the fields to be non-null?
In addition, I think inputting the command addcontact n/mike e/example@web.com
without prefix telegram will cause below statement,
Telegram telegram = ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());
to throw a NoSuchElementException
since argMultimap.getValue(PREFIX_TELEGRAM)
will return an Optional.empty()
?
12 (commented on others PR)
Oh sorry, I didn't notice the issue earlier hahaha 😆 . Okay then!
13 (commented on others PR)
I think we should use isEmpty()
method for the if statement i.e. source.getPriority().get().isEmpty()
. This is because get()
method from an empty Optional will not return a null
but instead throw a NoSuchElementException
.
14 (commented on others PR)
Perhaps a getter method for gradePoint can be added? To preserve consistency since all the other fields are accessed with getters.
15 (commented on others PR)
Just for additional information, I read that it is not recommended to use Optional
as the type of the property of an Object
. There are several explanations about this which I found from :
In addition, the official Oracle Java Documentation also states the following :
"Optional is primarily intended for use as a method return type where there is a clear need to represent "no result," and where using null is likely to cause errors. A variable whose type is Optional should never itself be null; it should always point to an Optional instance."
Link : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html#map(java.util.function.Function
16 (commented on others PR)
Yup, this part should fix the index checking problem.
17 (commented on others PR)
Why is gradeTracker
excluded from this equals()
method?
18 (commented on others PR)
I think we can have better names for temp and temp2 e.g. module and otherModule?
19 (commented on others PR)
Do you think listing the module's details in a vertical way would be better? Since I think scrolling down is easier 😆
20 (commented on others PR)
May I know what is the usage of this toString()
method?
21 (commented on others PR)
I just noticed that the ParseException
is never thrown byfindAllPrefixPositions()
method. I think we can remove the throw
keyword from the method signature. By doing so, we also need to remove the throw
keyword from the tokenize()
method since the tokenize
is just passing the exception from the findAllPrefixPositions
(which is never thrown). Btw, this is based on the current master, so please correct me if the current PR actually uses the ParseException
😅
In addition, if we decide to remove the throw ParseException
, then we should also remove the throw ParseException
from the junit tests in ArgumentTokenizerTest
class.
22 (commented on others PR)
As mentioned above, I think throw ParseException
should be removed if ParseException
in ArgumentTokenizer#findAllPrefixPositions()
is never thrown.
23 (commented on others PR)
I really like this part, didn't know we can combine predicate this way 😃
24 (commented on others PR)
If I remember correctly (please correct me if I'm wrong hahaha), I think Dr. Wee mentioned about using a more friendly-term instead of using "integer"? Maybe we can consider using a more general term like "positive round number" (not sure if this defines the integer correctly though 😅 )? But I also think that integer should be fine since the target users are computing students that most likely know the term "integer".
25 (commented on others PR)
Just wondering, are we going to allow the user to add a zoomlink without NUS Domain in the future?
26 (commented on others PR)
May I know if this means the user cannot input findtask p/high highest
? Maybe we can add examples of incorrect commands to make things clearer?
27 (commented on others PR)
Maybe we can add an additional tip to the user where listcontact
is useful to reset to the original list after a findcontact
or sortcontact
commands?
This is also one of the requirements for CS2101 to add tips for the user 😄 i.e. :
"[Taken from UG Info Pack] 5. Highly considerate of user needs by providing other relevant and helpful information (e.g. warnings, tips, important note)"
28 (commented on others PR)
Yup, I think it's a good idea to change the prefix to z
because it represents more that it is the prefix for z
oomlink 😄
29 (commented on others PR)
As discussed beofore, are we going to remove Contact#getName()
and use Contact#toString()
instead?
30 (commented on others PR)
I think Lesson
should be ModuleLesson
?
31 (commented on others PR)
Just want to clarify, should we do checkArgument()
for every constructor? Because if so, I will update some of my code to include this check to maintain consistency 😅
32 (commented on others PR)
I think we should also explain that this class only represents the name of a lesson of a module? Since it can be misinterpreted to store the whole information of the lesson ?
33 (commented on others PR)
Perhaps we can add a tips or example here? For instance,
Tips : If you have 2 or more types of lecture e.g. lecture on Monday and Wednesday and they have different zoomlinks, you can add 2 zoomlinks with different lesson name e.g. Mon-Lecture
and Wed-Lecture
.
34 (commented on others PR)
I realized that since the user cannot edit the zoomlink with the "editzoomlink", then the only way that the user can change the ModuleLesson
is by deleting the zoomlink first then adding a new zoomlink with the edited ModuleLesson
. This might require the user to manually compare the zoomlink which might not be so user-friendly. Therefore, I think we should tell the user which ModuleLesson
already has the zoomlink?
So, the message could be updated to :
"This zoom link already exist under LECTURE_NAME lesson. You must delete this lesson first if you wish to add this zoomlink under a new lesson in the module"
35 (commented on others PR)
I was wondering if maybe we should abstract this arePrefixesPresent()
method out to a common class since a lot of the commands classes that use prefixes have this method? But I think we can discuss this when we are done with the coding part and focuses more on code quality 😅
36 (commented on others PR)
Update : I just saw the PR for editzoomlink
command, so this comment might be irrelevant 😅
37 (commented on others PR)
Perhaps we can explain how the user can change the lesson name? For example :
Delete zoomlink with the lesson name that you want to delete.
Add the same zoomlink again but with different lesson name.
38 (commented on others PR)
Thanks for the typo fix! 😄
39 (commented on others PR)
May I know why do we need to update the filtered module list?
In addition, we will have a findmodule
command for the modulelist (see PR #557) which means the listmodule
command will be used to reset the list. So, updating the filtered module list here might cause inconsistency? Because I think the only command that should reset the list is the listmodule
command?
40 (commented on others PR)
I think the correct implementation is to use OR? Because both email and telegram ID are unique. So, comparing just one of them should be sufficient?
For example, Person A and Person B have the same name and email but different telegram ID. If we impose that every field must be the same, then we will consider Person A and Person B to be different. This means Person A and Person B are physically 2 different person with the same name that share one email account. I think we won't see this kind of case in real life?
By the way, the above is the case if we treat Contact as real person. I would like to clarify if we define Contact as real person though? Or maybe it is okay to have 2 same person but different email because they have different roles? e.g.
Person A
Name : Halo
Email : Personal email
Telegram : @halo
Person B
Name : Halo
Email : Work email
Telegram : -
Though, in this case, I think the name of the contact should have been the one that are differentiated instead, to avoid confusion 😆
41 (commented on others PR)
@murtubak Yes, if it's the equals()
method than we probably should check all the field, but the method that we were discussing is not the equals()
method, it is the isSameContact()
method (can check the file for the method name).
42 (commented on others PR)
Typo in "eventd"
43 (commented on others PR)
I think "Contacts" should be "Events"?
44 (commented on others PR)
Same issue as previous comments.
45 (commented on others PR)
Same issue as previous comments.
46 (commented on others PR)
I think "taskTags" should be "eventTags"?
47 (commented on others PR)
Is System.out.println(dates);
still being used for debugging? If not maybe we can remove it 😅
48 (commented on others PR)
Same issue as previous comments.
49 (commented on others PR)
Perhaps we can also add JavaDocs for private methods (if time allows)? So that we can easily understand what the code does when we read it in coming years hahaha 😆
50 (commented on others PR)
Maybe we can use the guard-clauses technique here? i.e.
private int numOfDays() {
if (this.headerMonth.getValue() != 2) {
return this.headerMonth.length(false);
}
if (Year.isLeap(this.headerYear)) {
return this.headerMonth.length(true);
} else {
return this.headerMonth.length(false);
}
}
So, that the happy path is more prominent and the code is not deep nested anymore 😄
51 (commented on others PR)
Maybe we can use verb for this method name e.g. getNumOfDays()
? (just to maintain consistency)
52 (commented on others PR)
Same issue as above. Maybe we can name it handleNextMonthButton()
? It is much longer though, but in return it is much more intuitive and also enhance the readability.
53 (commented on others PR)
If possible, perhaps we can consider using enum
to avoid the use of magic number?
54 (commented on others PR)
I think this catch
and try
block is unnecessary? Since it only catches the exception and throw the exact same exception?
In addition, we already added the the exception to the method signature, so I think removing the catch
and try
block should be fine 😅
55 (commented on others PR)
Yup this is a nice change. Perhaps I should have used INCOMPLETE
from the beginning hahaha 😆 I chose to use NOT_COMPLETED
to make the command name for intuitive i.e. notcomplete
, but I decided to name the command resettask
instead. So, using INCOMPLETE
shouldn't have been a problem 😅
56 (commented on others PR)
I think we can change Person
to Contact
if time allows.
57 (commented on own PR)
Yes, for now it is just used to make the testing easier (no need to write the whole thing every time).
58 (commented on own PR)
Yes, I will migrate all the methods to the ParserUtil class.
59 (commented on own PR)
Yes, I will add all the missing JavaDocs (I only added the javadocs that the CI requires for this PR)
60 (commented on own PR)
Yes, I think that's a good idea
61 (commented on own PR)
Okay, sure.
62 (commented on own PR)
Yes, sure. If the test doesn't work, we can always comment out first then make the changes later.
63 (commented on own PR)
Yes, I think we should do that. Will try to change in the next PR.
64 (commented on own PR)
Oh yes, I just realized that Tag can probably replace Type.
65 (commented on own PR)
Yup, totally forgot about that 😆
66 (commented on own PR)
Yup, noted.
67 (commented on own PR)
Okay, I can move the first append method call to match the other append calls.
68 (commented on own PR)
Okay, noted.
69 (commented on own PR)
I think it should work since this is taken directly from our current UniqueModuleList class. In addition, field internalList is private means that it can only be accessed by the UniqueTodoList class and the code "((UniqueTodoList) other).internalList))" is inside the UniqueTodoList class. Hence, it is not a problem.
70 (commented on own PR)
I am using the same implementation as our current ModuleList class (from AB-3). The reason is because module list is very similar to todo list. I think it is a good idea to maintain consistency and similarity for the implementation throughout the code?
Or perhaps we should instead try to implement our own version of todo list that does not replicate the implementation of module list? i.e. todo list in cap5buddy package uses a different implementation by using arrayList instead.
71 (commented on own PR)
Same issue as above.
72 (commented on own PR)
Same issue as above.
73 (commented on own PR)
Okay, it is now resolved.
74 (commented on own PR)
TaskNotFoundException is an unchecked exception since it inherits from RunTimeException. I think the purpose of this exception is mainly for bug checking. In addition, the error message that will be shown to the user should be handled in the each of the Command class instead?
For instance, below code is taken from EditCommand class from the original AB-3 (this is absent from our current EditModuleCommand class though):
"if (index.getZeroBased() >= lastShownList.size()) {
throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);
}"
However, I think we can still add error message just to make it easier for the programmer to understand the error when debugging 😃
75 (commented on own PR)
Yup. For the moment, I think we can implement 2 version of comparator classes e.g.
and then we can either do the same for TaskComparatorByDate by creating 2 new classes or we can instead modify TaskComparatorByDate to take an argument which can be either DateComparatorAscend or DateComparatorDescend based on the user input,
e.g. TaskComparatorByDate(DateComparator comparatorDescend );
76 (commented on own PR)
Yes, I think we should handle that in each of the Command class?
In addition, I just changed the isSameTask() method. Now 2 tasks are considered to be the same if only their name are the same since the other fields can be optional. I think it is sufficient to just check the name?
77 (commented on own PR)
Oh yes, it should only need to have the same name. I forgot to edit the JavaDoc for that one 😆. Thanks for pointing this out!
78 (commented on own PR)
Okay, I have updated the JavaDocs.
79 (commented on own PR)
Okay, noted. I will change the PR to draft in the meantime until the abstracting of the Parser class is done.
80 (commented on own PR)
Agreed, I also think the same.
81 (commented on own PR)
Yes, we could use inheritance here to have better abstraction (no repetition code).
82 (commented on own PR)
Agreed, I will update this in the future.
83 (commented on own PR)
No, the correct one is the red one. I just realized that I might have deleted the wrong line when resolving the conflicts 😆
84 (commented on own PR)
Yes, thank you for pointing this typo 😃
85 (commented on own PR)
Okay, I have fixed the typo.
86 (commented on own PR)
Okay, I have fixed it.
87 (commented on own PR)
But if the tags are present in editTaskDescriptor
, then orElse()
will not execute though? Therefore, I think it does not matter whether the argument of orElse()
is empty or not?
Update : I realized the problem now i.e. the argument of orElse()
will still get executed, hence the get()
method is called from an empty Optional. I will fix it ASAP 😆
88 (commented on own PR)
I will change from using the orElse()
method to orElseGet()
method. This way it will not cause a NoSuchElementException
since we are using a supplier that will call the get()
method only if the tags in taskToEdit
is present (unlike orElse()
that will call get()
regardless if the tags is present or not).
89 (commented on own PR)
Okay, I have pushed the changes commit. I will do some further testing after the storage component is fixed 😃
90 (commented on own PR)
Okay, noted.
91 (commented on own PR)
Yes, I will update it as final. Just want to make sure first that the HashMap methods are correct before editing the rest of the constructors 😅
92 (commented on own PR)
Yup, I will remove it. Just want to make sure the HashMap implementation is correct before deleting.
93 (commented on own PR)
Okay, noted.
94 (commented on own PR)
Yes I was also thinking about this. Does updating the content violates immutability though?
If it does then the current implementation's main advantage would only be that it is consistent with the other method 😅
95 (commented on own PR)
HashMap#get()
already returns a null if the key does not exist, so it should be okay to not check the key existence?
In addition, I just realized that this method will only be used for editing zoomlinks? Since we will not be implementing a command to query a specific zoomlink. Because of this, I will add a getter method for the entire zoomLink i.e. getAllZoomLinks()
.
96 (commented on own PR)
Yes I was also thinking the same, I'll remove it then.
97 (commented on own PR)
This class is added because the chart is not listening to the TodoList
but to the pieChartData
which only get updated everytime this method is called. I'm not sure if there is a way to make pieChartData
listens directly from TodoList
without using method to update it manually? Or perhaps there is a way to do it? 😅
Btw, please check the previous comment to see the proposed fix. Thanks.
98 (commented on own PR)
Yes I know, but currently the chart is not listening from the TodoList
since it must listen from a list that contains the statistics about the TodoList
(Unless know how to update it directly? Because I think we still need to process the data from the TodoList
into another list that will be represented in the chart)
In this case what do you think if I add another list in ModelManager
class that specifically stores the statistics about the TodoList
. So updating the statistics will be done in each of the command class i.e. same as updating the TodoList
?
Note : I did it this way to avoid updating the ModelManager
(I thought this might cause problem for the current tests, etc), but after looking again I think it should be fine to place the statistics list inside the ModelManager since each methods inside ModelManager
are mostly independent from each other. I will make the change ASAP (trying to get this done for Friday's demo hahaha 😆 ).
99 (other comment)
LGTM.
100 (other comment)
Yes, I will implement the storage part for TodoList later.
@seanjyjy
(53 comments)1 (commented on others PR)
small issue maybe it should be example instead of examples?
2 (commented on others PR)
same issue here
3 (commented on others PR)
there seem to be some inconsistency here. do you mean JOB_TITLES instead?
4 (commented on others PR)
do you mean job_title
5 (commented on others PR)
I think what Shawn said makes sense. It might be better to stick to terms that are already established eg InternshipStatus
. If I am not wrong does the status
class exist only for Internship
? If that is the case, maybe you can consider shifting date
to the Internship
object instead and as such, there won't be any ambiguity in the naming.
6 (commented on others PR)
small typo
7 (commented on others PR)
might want to maintain consistency with other files where you leave a line at line 9 for this class.
8 (commented on others PR)
there shouldn't be a return
9 (commented on others PR)
I realized that some javadocs there's full stop while some there aren't.
10 (commented on others PR)
If most to all parser requires these static final int variables, we could shift it to avoid duplicates. However, I am not sure if it is apt to shift it to an interface. Can consider having a Util class for it.
11 (commented on others PR)
the parameter should have a space
12 (commented on others PR)
I am wondering if since the Internship has been categorized into InternshipCliSyntax, perhaps this could be also categorized into ItemCliSyntax, or were u planning to convert this class into that in the future?
13 (commented on others PR)
hmm i am not sure which "style" we want to stick to but shawn has another way of writing this InternHunter detects an error in the input format
. We might want to stick to one way in order for our DG to look cohesive.
14 (commented on others PR)
should use >br />
15 (commented on others PR)
should use >br/ >
16 (commented on others PR)
should use >br/ >
17 (commented on others PR)
Would it be weird if it is "viewing" the profile page? To be cohesive to our DG, You must be on the **profile** page ...
sounds more cohesive to our precondition
18 (commented on others PR)
an exception should be only thrown when it is like not within the programmer's control? like missing files or user input. Since it is a controlled environment, using assertion is more apt. It's from oracle java assert.
19 (commented on others PR)
Small issue, can put /todo for future.
20 (commented on others PR)
not totally sure how regex works but from the description are you rejecting # and +?
21 (commented on others PR)
do remember to add in javadocs in the future
22 (commented on others PR)
do include the @throws.
23 (commented on others PR)
do remember to add in javadocs in the future
24 (commented on others PR)
just a suggestion, @line 38-39
from GitHub this line looks quite long, you can consider having
boolean b1 = ...
boolean b2 = ...
if (b1 || b2)
25 (commented on others PR)
oh, but I think keane/shawn side is allowing the use of those though! it might be confusing for the user ? can either @keanecjy @shawn-nyk confirm this?
26 (commented on others PR)
@throws missing
27 (commented on others PR)
@throws missing
28 (commented on others PR)
InternshipTitle instead
29 (commented on others PR)
might want to change the variable name for clarity
30 (commented on others PR)
Internship titles should only ...
31 (commented on others PR)
might want to change it to INTERNSHIP_TITLE_DISPLAY_NAME
32 (commented on others PR)
just a minor question but is there a need for this if block? I think we could just shift it into the if-else block. However, if this is a better coding standard, then I think we can stick to this.
33 (commented on others PR)
oh if this the case, I believe the current code is a better option
34 (commented on others PR)
I realized for constructors, in our main code, we use Creates, so maybe we could stick to the same javadocs for cohesiveness
35 (commented on others PR)
Maybe can just remove the InternshipItemUtil class which and just be Provides the string used in ... ? or perhaps A utility class that provides ...
36 (commented on others PR)
Sorry may I know what's the difference between COMPANY_OUTPUT_NAME
and PERIOD_OUTPUT_NAME
could they just be summarized intoCOMPANY_NAME = "Company Name: "
37 (commented on others PR)
sry whats the difference between space and blank
38 (commented on others PR)
Dont forget to remove the Sout
39 (commented on others PR)
We were discussing this previously and we decided that this allows an easier skill matching.
Because the user can key in any type of requirements which can be very long will definitely render the skill matching useless.
40 (commented on others PR)
Should we stick to how other messages are done, I realised we are missing the Parameters: ...
Might break some test cases message.
41 (commented on others PR)
I think now we can do model.getFilteredProfileListSize()
. Do you mind helping me and shawn change that portion
42 (commented on others PR)
Same here can help to change to getFilteredApplicationListSize()
43 (commented on others PR)
the numbering is wrong, but I have updated this in my current PR for its ToC
44 (commented on others PR)
not sure if this is a repetition of line 333 to 336. If it isn't you might want to encase experience skills achievements with the experience
individually
45 (commented on others PR)
it should be .png, I think images are case-sensitive.
46 (commented on others PR)
oh i think intellij doesnt care about case-sensitive but github does haha
47 (commented on others PR)
@ZoroarkDarkrai I am not sure if this class is being used? If i recall correctly it is only used in line 94, which is being removed
48 (commented on others PR)
Maybe we leave it here first.
49 (commented on others PR)
should you include an extension that nothing is shown?
50 (commented on others PR)
line 496, it should be then instead of the.
51 (commented on others PR)
you could abstract srp into glossary.
If i recall correctly there is more than one usage of OOP also, perhaps you could help add them into the glossary!
52 (commented on others PR)
i think you have changed currentSkillList
to skillList
in your implementation?
53 (commented on others PR)
leave a line break before and after the div. Sometimes the HTML file doesnt render properly because of that eg
<div markdown="span" class="alert alert-primary">
:bulb: **Tip:** If you want to store multiple experiences or achievements of the same name, for example taking part ........
</div>
54 (commented on own PR)
Yup, It might be more consistent to change the type to category.
55 (commented on own PR)
Thanks, @keanecjy will add the missing information. Maybe it might be more apt for us to put it as "what our app manages" under introduction
56 (commented on own PR)
Yup we could keep it simple currently and once we merge them in the future, we could include those extensions.
57 (commented on own PR)
perhaps once we merge the similar use cases together, we can include more extensions to it!
58 (commented on own PR)
hmmm, I am not very sure if it should be an exception instead. I was following the assert from oracle java.
The absence of a default case typically indicates that a programmer believes that one of the cases
will always be executed. The assumption that a particular variable will have one of a small number
of values is an invariant that should be checked with an assertion.
59 (commented on own PR)
Have fixed the java docs issues, thanks.
60 (commented on own PR)
I will resolve this conversation since we have concluded it.
61 (commented on own PR)
True I am not sure about which is a more appropriate wording.
62 (commented on own PR)
Thanks for the spot, will update it.
63 (commented on own PR)
Thanks for the clarification Shawn, what I meant as this naming is, Company & Application to have the same Information Width. I will do the relevant changes to make it clearer.
64 (commented on own PR)
Not very sure how to resolve this portion. Maybe I should a raw type parameterized instead?
65 (commented on own PR)
yup I think I should change this to setRequirements
66 (commented on own PR)
yup I think I should change this to setIndustries
67 (commented on own PR)
yup, I have fixed this
68 (commented on own PR)
yes, you're right. I will do a work around.
69 (commented on own PR)
Thanks for the advice, did not know there is such a thing.
70 (commented on own PR)
resolved in the latest push.
71 (commented on own PR)
resolved in the latest push.
72 (commented on own PR)
resolved in the latest push.
73 (commented on own PR)
Yes, i agree as well. I will help to reformat the rest of the parser
74 (commented on own PR)
While trying to reformat, I realized that We would need to know the Type of command in order to get its MESSAGE_USAGE
. If we were to shift it to GeneralParserUtil
, we would need to determine the Type of command and pass it as a a parameter into the static method in GeneralParserUtil
. However, this determining of the type of command is already present in the parse
command, as such we might be writing two switch cases
. However, if we would want to write only one switch cases
, we might have to change how the code would like like.
75 (commented on own PR)
Also from the way we coded previously, the switch case in the parse
method would never go to the default case, we can do an assert false there? (Since the checking is already done in the checkCommandDetailsIsNotBlank
)
76 (commented on own PR)
However, a method that is possible is that we will have to shift that checkCommandDetailsIsNotBlank
into each of the cases in the switch method as well as introducing an extra parameter.
'''
public FindCommand parse(String args) throws ParseException {
String itemType = getItemType(args, FindCommand.MESSAGE_USAGE);
String commandDetails = getCommandDetails(args);
isValidItemType(itemType);
switch (itemType) {
case COMPANY_ALIAS:
checkCommandDetailsIsNotBlank(commandDetails, itemType, FindCompanyCommand.MESSAGE_USAGE);
//return new FindCompanyCommand(commandDetails);
return null;
case APPLICATION_ALIAS:
checkCommandDetailsIsNotBlank(commandDetails, itemType, FindApplicationCommand.MESSAGE_USAGE);
//return new FindApplicationCommand(commandDetails);
return null;
case PROFILE_ALIAS:
checkCommandDetailsIsNotBlank(commandDetails, itemType, FindProfileCommand.MESSAGE_USAGE);
//return new FindProfileCommand(commandDetails);
return null;
default:
// Invalid item type
throw new ParseException(MESSAGE_INVALID_ITEM_TYPE);
}
}
77 (commented on own PR)
Sorry, I don't quite get what do you mean as throw the exception with the correct message.
78 (commented on own PR)
Sorry, I don't quite understand what do you mean about profile item having a general error message 😮
Issue
I reaslied this as well. For commands that are without the letter specifier, like
view me 1
delete me 1
It seems to have this special other error message generator.
And as a result, since find is somewhat the same, I try to extract this duplicated method from view and delete as well.
In comparison to other classes
I realised for the earlier commands like Add, the message is encapsulated inside each of the individual type of add commands instead, because they made used of tokenizer as its checker
While for the later commands like view and delete me, since we dont need to use the tokenizer, it seems like we generated another method for checking instead
79 (commented on own PR)
Is there anyway we can consolidate this issue. This is linked to the problem Keane and I was discussing in the post above. @AY2021S1-CS2103T-T15-4/developers
80 (commented on own PR)
So I take that we should format it such that delete, view, find should follow how add, edit does it?
81 (commented on own PR)
Ah, yes that is true, will make the relevant changes once we get our affirmation regarding the above dicussions
82 (commented on own PR)
oh this sounds great, will abstract it into messages.java then
83 (commented on own PR)
yeah i did thought about it, but it feels weird if we have to add in a condition for it LOL for whether to display the extra s
. Hmm i think since we are dealing with a 1 vs Infinite amount, it feels like having the s
should make sense right O:
84 (commented on own PR)
hmm, I think since this is a more towards only switch
kind of command, I believe I should make a separate message then. Are there any other commands that have the same issue? I believe list
and find
as well right?
85 (commented on own PR)
Thanks for the spot
86 (commented on own PR)
I think I will temporarily put this as %1$d %2$s items found!
87 (commented on own PR)
fixed
88 (commented on own PR)
fixed
89 (commented on own PR)
fixed
90 (commented on own PR)
fixed
91 (commented on own PR)
fixed
92 (commented on own PR)
fixed
93 (commented on own PR)
fixed
94 (commented on own PR)
fixed
95 (commented on own PR)
good catch resolved
96 (commented on own PR)
good catch resolved
97 (other comment)
LGTM
98 (other comment)
#87
99 (other comment)
LGTM
100 (other comment)
LGTM
101 (other comment)
If we are planning to create other classes in replacement of person and address book, I don't think we need to change the Javadoc yet?
102 (other comment)
#48
#99
103 (other comment)
Hmm. The dilemma now is that this is just a proof of concept and we may be abstracting common logic down the line and scrapping all these, so overwriting Javadocs now may redundant. The danger is that if the code is kept and the comments are missed in the future. What is the team's opinion on this? @ZoroarkDarkrai @keanecjy @seanjyjy @shawn-nyk
I agree that overwriting Javadocs now may be redundant, especially because our code can change over time up until the final version. At the same time, I also agree that we may miss them in the future, and doing a one-time run-through of all our code at the end may be very tedious and error-prone. As such, how about we do something like: every time we create new bits of code that require Javadocs, or we modify code that already has Javadocs attached to them, we place a standardized comment, such as
TODO: Javadocs
above the code we need to write/edit Javadocs for? That way we get the syntax highlighting that IntelliJ provides for theTODO
keyword, and we can also search for this standardised comment throughout the code base to hone in on where we'll eventually need to write/edit Javadocs when the time comes. Any thoughts on this?
I think this is a great idea what do the rest think?
104 (other comment)
#104
#100
105 (other comment)
LGTM good job.
106 (other comment)
Hi, Fidella I think since you approved these changes I will just merge it in? Need this code currently
107 (other comment)
LGTM good job.
108 (other comment)
Can add the todo or javadocs and it is good to merge.
Which file/line are you referring to?
DeleteProfleCommand class and maybe its constructor? incase forget in the future
109 (other comment)
Will merge this first
110 (other comment)
LGTM
111 (other comment)
LGTM
112 (other comment)
LGTM
113 (other comment)
Besides the point that @keanecjy has raised, I believe it is good to merge after it is resolved.
114 (other comment)
LGTM
115 (other comment)
the link seems to be still broken. From the html file side
116 (other comment)
the link seems to be still broken. From the html file side
Sorry my mistake
117 (other comment)
LGTM
118 (other comment)
LGTM
119 (other comment)
LGTM
120 (other comment)
LGTM
121 (other comment)
LGTM
122 (other comment)
LGTM
123 (other comment)
LGTM
124 (other comment)
LGTM
125 (other comment)
#25
126 (other comment)
LGTM
127 (other comment)
LGTM
128 (other comment)
Overall LGTM to merge, just need to fix the image link. Think there is a typo in the png file itself
129 (other comment)
Just some comments for you to consider, not very sure if it is right or wrong.
For sd execute edit me command
, you might want to include what is return in the getProfileList()
perhaps.
And for void methods like setItem
and setProfileItem
i believe the return arrows could be omitted as it doesn't bring any value and it does help to reduce cluttering.
However, if you think that it is fine, then do let me know as it is good to merge already.
130 (other comment)
LGTM. Good job
131 (other comment)
LGTM
132 (other comment)
LGTM
133 (other comment)
UC 07 seems to be broken in terms of formatting
134 (other comment)
I just realised, but just for plausible consideration, should we add-in extension for deleting companies that indicate internships being deleted as well as its application.
135 (other comment)
LGTM
136 (other comment)
LGTM
137 (other comment)
LGTM
138 (other comment)
There are issues with the formatting in your new code for each of the note and tip
139 (other comment)
I am thinking that since quite a number of us quoted terms like DRY
and stuff, would be it better if we shift all those to the glossary instead of putting DRY(Don't Repeat Yourself)
?
140 (other comment)
We might need to change our product scope and value proposition, it is not more tech?
141 (other comment)
I am thinking that since quite a number of us quoted terms like
DRY
and stuff, would be it better if we shift all those to the glossary instead of puttingDRY(Don't Repeat Yourself)
?
Sounds good, we have to update Keane.
I think it applies to shawn, fidella also!
142 (other comment)
I am thinking that since quite a number of us quoted terms like
DRY
and stuff, would be it better if we shift all those to the glossary instead of puttingDRY(Don't Repeat Yourself)
?
Sounds good, we have to update Keane.
I think it applies to shawn, fidella also!
I was referring updating to the glossary
yeah, i meant like can help them to also factor some of their terminologies into glossary as well, or maybe they could do it themselves
143 (other comment)
Also, do you mind refactoring your images than you used in this dg in this pr. Thanks!
144 (other comment)
LGTM
145 (other comment)
LGTM
146 (other comment)
LGTM
147 (other comment)
LGTM
148 (other comment)
For the model diagram, I believe that the arrow from the ApplicationItem
, etc should be in solid line to the Item
as ours is an Inheritance relationship.
I am not sure but maybe it is ViewManager
and TabManager
rather than View
and Tab
I am not sure if ApplicationItem
has a composition with InternshipItem
? But rather there should a relationship between CompanyItem
and ApplicationItem
149 (other comment)
Hmm, looking at ModelManager, it stores a Tab and View as its fields though, therefore it should be as per the current diagram?
Ah yes you're right i have missed out that.
Sorry that i missed out again but I think the ProfileItemCategory is an enum
class.
Not sure if the association labels are pointing in the wrong direction(is this a plantuml limitation? if it is then nvm)
not sure if package is the right word to use, perhaps they are classes?
Just a thought
Otherwise just some nits to fix and it is good to merge!
150 (other comment)
LGTM good job
151 (other comment)
Have space between Profile and Item remove the delimiter c/
152 (other comment)
@FH-30 . Hi after you did find, did you use the list to get back all the data? I believe this is an AB3 thing as well. However thanks for the report. We will improve on the documentation to be clearer.
153 (other comment)
Thank you for the feedback but the response message corresponds with application behavior.
154 (other comment)
UG states that date is in the future
155 (other comment)
This is a specific error message for this exception.
156 (other comment)
157 (other comment)
#330
158 (other comment)
You can put in a different period?
159 (other comment)
LGTM
160 (other comment)
LGTM
161 (other comment)
LGTM
162 (other comment)
LGTM
163 (other comment)
LGTM
164 (other comment)
LGTM
165 (other comment)
LGTM
166 (other comment)
LGTM
167 (other comment)
LGTM
168 (other comment)
LGTM
@ypinhsuan
(53 comments)1 (commented on others PR)
Just a small grammar error. I think it should be students'
and not student's
?
2 (commented on others PR)
Maybe it will be nice to change tutees
to students
? Since we are using students at all other places.
3 (commented on others PR)
Perhaps it will be better to remove contact
since users can edit tags as well. And tags may not be contact information.
4 (commented on others PR)
Perhaps it will be great to include the format here as well?
**List Students in Class** | `list students /by [n/CLASS_NAME] [m/MODULE_CODE]`<br> e.g., `list students /by n/Tutorial T10 m/CS2013T`
5 (commented on others PR)
I think you forgot to change the example?
**List Students in a Class** | `list-students c/INDEX`<br> e.g., `list-students c/3`
6 (commented on others PR)
Nice! 👍
7 (commented on others PR)
I like this. But i think we need to update the examples in user guide since users don't have to type @ now
8 (commented on others PR)
Should there be a space before comma?
9 (commented on others PR)
I don't think there should be address?
// Keywords match telegram and email, but does not match name
predicate = new NameContainsKeywordsPredicate(Arrays.asList("12345", "alice@email.com"));
10 (commented on others PR)
* Returns an {@code TutorsPet} with all the typical students.
11 (commented on others PR)
Good catch!
12 (commented on others PR)
I think this should change to AddModuleClassCommand
?
* Parses the given {@code String} of arguments in the context of the AddModuleClassCommand
* and returns an AddModuleClassCommand object for execution.
13 (commented on others PR)
Is it possible to change Node
to Label
?
* Creates a {@code Label} with the given {@code Tag} details.
*/
public Label createTag(Tag tag) {
Or alternatively change the Label
in JavaDoc to Node
?
14 (commented on others PR)
I think there is a missing space.
-fx-background-color: derive(#7392b7, 10%);
15 (commented on others PR)
Is it An UI
or a UI
?
16 (commented on others PR)
Not sure if we should use An UI
.
17 (commented on others PR)
Is there an extra semicolon?
18 (commented on others PR)
Great job for finding so many missing full stops in comments! 👍
19 (commented on others PR)
There is an extra space.
<!-- Checks that every class declaration is followed by an empty line. -->
20 (commented on others PR)
I just realized that we forgot to write javadoc for getModuleClassList()
.
21 (commented on others PR)
Perhaps this should change to different objects
?
// different objects -> returns false
22 (commented on others PR)
Perhaps can add in a test for multiple student indexes/class indexes?
23 (commented on others PR)
Perhaps this should start with capital letter?
// Calls #setStyleToDefault() whenever there is a change to the text of the command box.
24 (commented on others PR)
Perhaps it will be better to rename key
to student
?
25 (commented on others PR)
Perhaps it will be better to add a
so that it is more consistent? (Add a class, add a student etc)
| UC17 | Add a lesson |
| UC18 | Edit a lesson |
| UC19 | Delete a lesson |
26 (commented on others PR)
Perhaps it will be better to add underscore in between?
| **Add Lesson** | `add-lesson c/CLASS_INDEX d/DAY st/START_TIME et/END_TIME v/VENUE r/NO_OF_TIMES` <br> e.g., `add-lesson c/1 d/MONDAY st/8.00AM et/10.00AM v/COM1 #01-01 r/13` |
27 (commented on others PR)
* Returns a deep copied {@code AttendanceRecord}.
28 (commented on others PR)
Perhaps it will be better to use class
since we are using class
in user guide?
+ ": Deletes the lesson in a specific class identified by the "
+ "index number used in the displayed class list and lesson list respectively.\n"
29 (commented on others PR)
Perhaps it will be better to use student manager
since the app is about managing students?
* Adds a lesson to the student manager.
30 (commented on others PR)
Might be better to use student manager
here as well
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a lesson to the student manager. "
31 (commented on others PR)
// add lesson to moduleClass
32 (commented on others PR)
* Returns an add lesson command string for adding the {@code lesson}.
33 (commented on others PR)
Should we replace it with tutorspet
?
1. Run the `tutorspet.Main` and try a few commands.
34 (commented on others PR)
I think you missed out this line
e.g. `tutorspet.commons.StringUtilTest`
35 (commented on others PR)
Perhaps we should keep the storage
?
e.g. `tutorspet.storage.StorageManagerTest`
36 (commented on others PR)
Perhaps keep tutorspet.model
here? Similarly for the CollectionUtil
below
import tutorspet.model.Model;
37 (commented on others PR)
I think this should be click
only?
Perhaps it will be good if we can also explain the functions of the other 2 tabs here (File
and Help
)?
If you would like to change Tutor's Pet theme, click on the **Theme** tab at the top of the screen. There are
38 (commented on others PR)
Would it be better to add view
?
| **View Statistics** | `stats c\CLASS_INDEX s\STUDENT_INDEX`<br> e.g., `stats c\1 s\1`
39 (commented on others PR)
Might be good to mention the week here as well
* Your `CS2103T Tutorial` lesson in week 10 has just ended and you would like to give participation scores to the students. You
40 (commented on others PR)
I think affects
sounds a bit weird to me. Would this be better?
3. The command execution calls static methods from the `ModuleClassUtil` and `LessonUtil` classes.
41 (commented on others PR)
Should we put the two terms into glossary? Since they appear in quite a number of places
42 (commented on others PR)
I think it should be display-venue
?
#### Display venue : `display-venue`
43 (commented on others PR)
Perhaps it will be better to change to Display Statistics
so that it is consistent with the summary table on top?
#### Display Statistics : `stats`
44 (commented on others PR)
Perhaps can change to targetWeek
deleteAttendanceFromModuleClass(moduleClass, lessonIndex, targetWeek, student);
45 (commented on others PR)
* One of your students, `Bernice`, has swapped `CS2103T Tutorial` slots and you no longer teach her.
46 (commented on others PR)
Perhaps it will be good to also mention that Bernice is the second student on the list?
47 (commented on others PR)
* You made an error while entering the `CS2103T Tutorial` lesson. It should be `Tuesday` and not `Thursday`. You type the command `edit-lesson c\1 l\1 d\Tuesday` and press <kbd>Enter</kbd>.
48 (commented on others PR)
The meaning of CLASS_INDEX and LESSON_INDEX are explained in the glossary. Perhaps we don't need to explain here again?
49 (commented on others PR)
Agree that it might be better to link to implementation section
50 (commented on others PR)
Would it be better to change this to numbered list instead of bullet points?
51 (commented on others PR)
Can consider overloading the hasStudent
method in TutorsPet
and I think the guard clause below can be removed.
52 (commented on others PR)
Perhaps it will be nice to annotate this diagram to show where the added lesson is?
53 (commented on others PR)
I'm not very sure but I think should be goals
without the hassle of having to compute it themselves. It satisfies one of Tutor's Pet goals which
54 (commented on own PR)
agree with this
55 (commented on own PR)
No particular reason. I am thinking of changing to 52 since there are 52 weeks in a year. Any suggestions for the number?
56 (commented on own PR)
The end time of the original lesson was 10am, so the start time cannot be set to 2pm. If not I will get a lesson starting at 10 and ending at 2
57 (commented on own PR)
yep sure I think overload is better
58 (other comment)
Yep works on mine too
@TanLeYang
(52 comments)1 (commented on others PR)
Should we use Index to select the book instead of the name of the book? Since the delete command already makes use of Index and using bookname is quite prone to typos
2 (commented on others PR)
The user guide link is wrong, the correct link should be https://ay2021s1-cs2103t-f13-2.github.io/tp/UserGuide.html
3 (commented on others PR)
Same for the dev guide as well, correct link should be https://ay2021s1-cs2103t-f13-2.github.io/tp/DeveloperGuide.html
4 (commented on others PR)
I think you may have missed out on this part. The View command is meant to view detailed info regarding a single book.
5 (commented on others PR)
I think this extension 2a isn't supposed to be here anymore, its included in UC05 already.
6 (commented on others PR)
Just saw that the extension numbering here is incorrect, should be 2a, 2a1, 2b etc. Can you help change them too 🙏 thanks!
7 (commented on others PR)
According to the user guide, the prefix should be "tp/" for total pages and "b/" for bookmark for consistency purposes right? Maybe we can discuss this further!
8 (commented on others PR)
Thanks for doing the renaming! There's some parts which haven't been renamed such as the Javadoc here, comments in the equals()
test as well as here: https://github.com/AY2021S1-CS2103T-F13-2/tp/blob/c568a3c5177c68a33c3e6279923fa8f3c0356df0/src/test/java/seedu/bookmark/logic/commands/AddCommandTest.java#L153
Would be great if you could change those too, thanks!
9 (commented on others PR)
Could you edit the javadoc and comments as well please, thanks!
10 (commented on others PR)
I think this line can be removed since the tests have been updated.
11 (commented on others PR)
Could you update the tests names as well
12 (commented on others PR)
I think there's a typo here, should be viewFirstCommand
and viewSecondCommand
right?
13 (commented on others PR)
Perhaps you could include a super simple javadoc for this class?
14 (commented on others PR)
The jdoc here should be "Add a note to a book" or something along those lines right?
15 (commented on others PR)
There doesnt seem to be any usage of editBookDescriptor
in this method
16 (commented on others PR)
Is this bookmark validity check necessary? since this command doesn't touch the bookmark field at all
17 (commented on others PR)
Left-over jdoc from the EditCommandParser. Same issue for the parse method as well
18 (commented on others PR)
Left-over jdoc from JsonAdaptedTag. Same issue in the toModelType method
19 (commented on others PR)
Not sure if this jdoc is accurate?
20 (commented on others PR)
Should we allow more than alphanumeric characters? I think users would want to use punctuation when writing down their thoughts on the book.
21 (commented on others PR)
Also I think it would be good to put in some length limit for the title and text as well. I don't think the application would be able to handle displaying text that is for example, 10,000 words long well. Perhaps something like 120 characters for the title and 1000 characters for the text?
22 (commented on others PR)
Thanks for writing such comprehensive tests and increasing our code cov hehe 😄
23 (commented on others PR)
Would have to take a look at your implementation to confirm, but I don't think that "algorithms" constitute a component on its own. Could they just be part of the Logic component given that the algorithms are used to perform business logic?
24 (commented on others PR)
Did you mean "will be called" rather than "will be implemented"?
25 (commented on others PR)
Need a space between #### and Implementation
26 (commented on others PR)
This could potentially cause a NPE if the .get() returns null. Maybe you can follow the same style as the other fields: have a static parseGoal() method in ParserUtil that does the validation checks, also making use of the isValidGoal() method in Goal.
27 (commented on others PR)
Maybe put a requireNonNull check here just to be defensive?
28 (commented on others PR)
Typo here? should be AddNoteCommand
right
29 (commented on others PR)
This could be slightly misleading since its not always 3 words anymore. Perhaps just "Find words" would suffice
30 (commented on others PR)
Instead of having all these methods being abstract, they can actually just be implemented inside WordStore
itself and inherited by each of your different types of WordStores (TagWordStore, NameWordStore, etc). Currently, there is a lot of repetition since each of the individual types of WordStores implement their own addWords()
, deleteWords()
, etc but their logic is exactly the same.
31 (commented on others PR)
Maybe use a HashMap
or HashSet
for O(1) look ups?
32 (commented on others PR)
Should we be doing these checks here? An approach worth thinking about could be to get SortCommandParser
to create each SortCommand
s that know what prefix it's sorting by. Then in SortCommand#execute()
we can just call setSortingPreference(PREFIX_XXX)
33 (commented on others PR)
Noticed that this exact method is repeated inside SortCommandParser
also. Can think about abstracting it out as a static utility method, maybe smth like BookComparatorGenerator#comparatorGenerator(Prefix inputPrefix)
34 (commented on others PR)
I don't think this method belongs here, maybe define it as a utility method in CliSyntax
?
35 (commented on others PR)
Could you add this code to the end of the method
historyManager = historyManager.addNewState(State.createState(library, userPrefs, filteredBooks.getPredicate()));
to make the sort command undoable?
36 (commented on others PR)
is this redundant since there's a requireNonNull right after already? 😆
37 (commented on others PR)
Maybe one more test for if the book has no goals then you try to delete the goal?
38 (commented on others PR)
Is there supposed to be two [t/TAG] here to show that users can add multiple tags? If would it be better to explain it in the ADD_NOTES instead?
39 (commented on others PR)
I think the {0, 120} has already been added in line 23. Adding it like that was done to avoid using magic numbers
40 (commented on others PR)
I think we can avoid hardcoding the name since if we decide to change the length limit then it's additional work. Instead maybe you can do something like this:
String INVALID_NAME_DESC = " " + PREFIX_NAME + "a".repeat(Name.MAX_NAME_LENGTH + 1)
The "a".repeat...
part will create a String that is one character too long regardless of what we set the max name length to be
41 (commented on others PR)
Same comments as those in CommandTestUtil.java
42 (commented on others PR)
Same comments as those in CommandTestUtil.java
43 (commented on others PR)
I think you forgot to delete line 24 here
44 (commented on others PR)
There is still no instructions on how to leave the detailed view, see #158 Could you add something like. "To go back to seeing all your books, use the list command"
45 (commented on others PR)
Maybe don't use terms detailed view or list view? Just something like "The INDEX
of a book changes based on the number of books currently shown on the screen. For example, the first book will have INDEX
1, second book INDEX
2..."
46 (commented on others PR)
Also maybe the part about "any commands using INDEX
can only refer to index 1 (the currently viewed book)" should be included in the view command itself instead? Can put it one of those styled divs: "After using the view command, the viewed book will have an INDEX
of 1 since it is the only book shown on the screen. To interact with the book, use the INDEX
of 1 to refer to the book"
47 (commented on others PR)
Maybe you can extract this part out into another method?
48 (commented on others PR)
I think this same method is in DetailedBookCard
as well right? Can remove it from DetailedBookCard
since it has no use there already
49 (commented on others PR)
Also I think you need to remove the setting of the goal style and text from DetailedBookCard
, otherwise the detailed view will still be using the old goal style
50 (commented on others PR)
Typo here? the "which is be distracting" part
51 (commented on others PR)
Instead of returned to the user, maybe use "passed to the Ui component to be displayed to the user"?
52 (commented on others PR)
I think we should mention the execute method here, maybe something like "XYZCommand
will perform the functionality of the command in the Command#execute()
method, interacting with and modifying the ModelManager
appropriately."
53 (commented on own PR)
Good suggestion! I've made the necessary changes
54 (commented on own PR)
Thanks for spotting the mistake! I've made the necessary changes
55 (commented on own PR)
Yea it looked quite iffy to me too but didn't know how to phrase it nicely. Thanks for the suggestion will improve it!
56 (commented on own PR)
Nice catch, thanks!
57 (commented on own PR)
variables in interfaces are already public static final by default! 😃
58 (commented on own PR)
Oh right nice catch!
59 (other comment)
LGTM
60 (other comment)
@mgiang2015 you uploaded your photo in the wrong folder, it should be uploaded in docs/images. Please open another PR to close this issue! 🙏
61 (other comment)
LGTM!
62 (other comment)
LGTM!
63 (other comment)
LGTM
64 (other comment)
Closed by #63
65 (other comment)
Reopening as @mgiang2015 's part on user stories for the View command is not done yet
66 (other comment)
Closed by PR #88
67 (other comment)
Closed by #90
68 (other comment)
closed by PR #133
69 (other comment)
This occurs because I used JavaFX Label
to display the text 🤦♂️ definitely need to change to something more suitable for displaying long texts
70 (other comment)
Can anyone reproduce this? I followed the steps exactly to reproduce but it works perfectly fine on my machine:
List Command to show all books
View Command to view one book
Edit that book
Undo twice
End up back in the List view of all books
71 (other comment)
Problem is not that Ui doesn't update, is that goal currently doesn't have any Ui elements without using view
to see a particular book. Could see how it would be very confusing to do an action then nothing happens. Probably need to add a small ui element to show that a book has a goal
72 (other comment)
Not sure if this is a bug or not because it does show that the goal is completed
What do yall think? Should we allow users to update a goal retroactively? Personally I think its okay because sometimes you may forget to add your goal so you end up overshooting the goal unknowingly. It would still be nice for you to then update it and show that you've actually completed your intended target
73 (other comment)
I think we have a few of such similar comments. I think we can make it clearer that index will change according to how many books are shown on the screen. It's not a specific ID for that particular book
74 (other comment)
I think this is a good suggestion!
75 (other comment)
Duplicated. See #159
76 (other comment)
Duplicated. See #158
77 (other comment)
Duplicated. See #159
78 (other comment)
Duplicated. See #159
79 (other comment)
Same issue, (UG) see #159
80 (other comment)
Duplicated see #156
81 (other comment)
Closed by #165
82 (other comment)
Closed by #168
83 (other comment)
Closed by #168
84 (other comment)
Closed by #168
85 (other comment)
Unable to reproduce despite testing, closing for now unless issue can be reproduced in the future.
@orzymandias
(51 comments)1 (commented on others PR)
This was following the discussion yesterday, there is no view command for profile.
2 (commented on others PR)
Maybe it will be more consistent to change type to category?
3 (commented on others PR)
Also, I think this was left out in the issues, but the switch command can be added too
4 (commented on others PR)
Do you think it is good to be overly specific about the type of error? If so then there are many more extensions to include such as inputting an index that is not a number for example.
5 (commented on others PR)
I am unsure about this myself but what if there are no items in the list? what kind of interactions can the user and system have? I know your preconditions addresses that but do we have to consider the case where you call edit and there are no items in the list?
6 (commented on others PR)
Really minor a UI not an UI
7 (commented on others PR)
Should be an exception instead?
8 (commented on others PR)
Should be an exception instead since you are not testing an assumption?
9 (commented on others PR)
Should be an exception instead, since exceptional case
10 (commented on others PR)
The other JD comments are in the other PR, you can ignore them for now if you want unless you it is finalized
11 (commented on others PR)
Sure we can have a common package for the fields within model package but for unique fields with own regex, keep them in the feature's package.
12 (commented on others PR)
Minor nit, should be Sets in the Javadoc
13 (commented on others PR)
Same thing here. Minor nit, Should be "Sets"
14 (commented on others PR)
Same thing here -> Sets
15 (commented on others PR)
Change -> Changes
16 (commented on others PR)
Same minor nit Set -> Sets
17 (commented on others PR)
Set->Sets
18 (commented on others PR)
There are 2 more that require changing below:
Initialized
set
19 (commented on others PR)
Javadoc comments below as well for set.
20 (commented on others PR)
Perhaps its more appropriate a throw an exception here since assertions are mainly to check for precondition and post condition of function execution and testing assumptions. This usage fits neither and is more of an exceptional case?
21 (commented on others PR)
Same issue here ? You are not testing assumption here, exception better?
22 (commented on others PR)
I think you may be missing a line break here?
23 (commented on others PR)
The profile command is updated with [t/TITLE]
and [d/DESCRIPTORS]...
24 (commented on others PR)
I think you have have missed out deleting this UC05
25 (commented on others PR)
Is this supposed to switch the tabs? It doesn't do that at the moment.
26 (commented on others PR)
okay! I tested on my add and delete commands but it doesn't do anything yet. Is there more to the switching besides setting the model state which I have missed from your implementation? I think you may have to return the multiarg CommandResult as there is a boolean arg to indicate whether to switch ?
27 (commented on others PR)
You may want to reduce depth of nesting here? I get that you need three loops here maybe if you using streams can help with that? Or 2 other functions that handles each loop and use boolean flags to terminate the final loop?
28 (commented on others PR)
What happens with the internships don't match? Maybe I am mistaken here but it seems like you just let it pass and create the model out of the unmatching internships instead of an starting an empty list for company and application?
29 (commented on others PR)
Do you think it would be better to shift this logic (LOC:91>) to this own file,? Main app is starting to become too big?
30 (commented on others PR)
Maybe it would be more appropriate to include an assertion or throw an exception here if this is not expected to be called since its harder to debug with null?
31 (commented on others PR)
I have updated the Descriptor class with its own regex, does this affect the storage in anyway?
32 (commented on others PR)
Is there a reason why this does not return a jsonadapted profile item?
33 (commented on others PR)
Initializes?
34 (commented on others PR)
Javadoc could perhaps start with Switches.... depending on
35 (commented on others PR)
Perhaps you could change it to Represents a class...
36 (commented on others PR)
Start with sets..
37 (commented on others PR)
I was wondering if there is a need for a switch statement here? Correct me if I am mistaken, but this just checks if the user provides an string query for to search for? Is the intent of this function for a more tailored error message based on the item type queried? If so why does profile Item have a general error message?
38 (commented on others PR)
I dont know if you need a fullstop here?
39 (commented on others PR)
Do you think this should be part of the design component?
40 (commented on others PR)
@keanecjy maybe you could parse the skill title to [str1, str2, str3] then check if any of the substr matches your requirements? something to that effect
41 (commented on others PR)
Maybe add an image to supplement that too!
42 (commented on others PR)
I think there is an error in the markdown for clear
?
43 (commented on others PR)
There are some formatting issues here, maybe leave a space or use a line break?
44 (commented on others PR)
Not sure why its not rendering on github? does your image render properly locally?
45 (commented on others PR)
Also I don't think StorageManager is in :Model?
46 (commented on others PR)
Maybe you could change it to switch tabs to the application tab
47 (commented on others PR)
Perhaps you can update it to *have been changed
48 (commented on others PR)
*the user guide? since your implies the user owns the guide?
49 (commented on others PR)
I noticed for some fields you use the predefined fields like LAZADA_DS but some you used random strings, maybe stick to using one?
50 (commented on others PR)
Missing full stop
51 (commented on others PR)
Same for the other getXXXList
52 (commented on own PR)
You can ignore this first. The content page can be changed after all the headers are in.
53 (commented on own PR)
nvm, its good to merge, I have updated the contents page to link to my headers.
54 (commented on own PR)
Okay, will update!
55 (commented on own PR)
yes. These did not have preconditions, I'll remove them.
56 (commented on own PR)
True, I should remove this, I think the only precondition then is that the system is running which is not very meaningful in this case.
57 (commented on own PR)
Okay will make the change!
58 (commented on own PR)
sounds good!
59 (commented on own PR)
Yes, there will be multiple descriptors which can be added similarly to tags.
60 (commented on own PR)
I think this is the work of IntelliJ auto injecting imports. I will move it.
61 (commented on own PR)
I was going for a primitive implementation for now, but since the types are fixed, I think enum is good solution too.
62 (commented on own PR)
I stopped changing this because I was unsure if we need 2 levels of inequality for profile items.
63 (commented on own PR)
I have not created exceptions yet so this is a placeholder
64 (commented on own PR)
I didn't change this yet since this was the original file but I suppose like it can be changed now too.
65 (commented on own PR)
Sounds good! I was thinking of doing so after the other parsers are done since for example the EditParser
for the InternshipCommand
may want to abstract 3 items (comindex, index ,prefixes)? So it depends on implementation of the parsers first then after which we deal with abstraction for common vars.
66 (commented on own PR)
Yep, some of initial JD do not have full stops too.
67 (commented on own PR)
I'll update this! thanks for the catch
68 (commented on own PR)
@seanjyjy yeah I was thinking you could always type c sharp or cpp for those cases .
@keanecjy Good point, I am ambivalent about this. But could the same be said for Names as well, maybe we can consider a char limit for that?
69 (commented on own PR)
Okay but my find header is different, I had a different header from shawn but he hasnt gotten back to me about changing yet
70 (commented on own PR)
Line 333 is a brief description of profile items and 336 is a more formal definition. I think its mainly for the overview in 2101.
71 (commented on own PR)
The images turn out well in my markdown on intellij. Also the images in company all have this casing too
72 (commented on own PR)
yes as I mentioned in PR desc, I will update them after the feedback on for the the other items
73 (commented on own PR)
yes this is deliberate, I stopped updating the index because I want to know the current refactoring is appropriate
74 (commented on own PR)
I have just updated the application portion!
75 (commented on own PR)
There was a discussion where we decided against guarantee for UC26 because the user has the option to exit. I think the precondition for tabs would be has tabs but that is unnecessary to include?
76 (other comment)
There were changes in the branch, need to resolve some conflicts! @seanjyjy
77 (other comment)
I noticed that many of the javadocs used "person" and "address book", should we change it now? or leave it for later?
Hmm. The dilemma now is that this is just a proof of concept and we may be abstracting common logic down the line and scrapping all these, so overwriting Javadocs now may redundant. The danger is that if the code is kept and the comments are missed in the future. What is the team's opinion on this? @ZoroarkDarkrai @keanecjy @seanjyjy @shawn-nyk
78 (other comment)
Yup I think that there isn't a need to concern about javadocs / comments as of now as they can be easily fixed at any point in time. @orzymandias I stopped editing the List portions as I noticed that there were too much code duplication with your pr. Do we plan to either extend an
Item
class or use generics for our list?
I agree. I think there is unnecessary duplication for collections, generics is a good idea for collections but one issue is with throwing custom exceptions for different types of items within the generic list. Should we just have DuplicateItemException then something like throw new DuplicateItemException(T.getDuplicateExceptionMsg())
?
79 (other comment)
ecessary duplication for collections, generics is a good idea for collections but one issue is with throwing custom exceptions for different types of items within the generic list. Should we just have DuplicateItemException then something like
throw new DuplicateItemException(T.getDuplicateExceptionMsg())
?
I don't think this works because we are not able to access methods in java generics. I figured since we all are classifying our classes as
Item
, we can have anItem
interface to contain all the methods similar methods likeisSameItem
and likewise dothrow new DuplicateItemException(item.getItemName())
?
Sounds good.
80 (other comment)
Overall looks great, just some nits to fix.
Just a side question as to would it be confusing as AddCommandParserWrapper is essentially Similiar to DeleteCommandParser, however, they have different naming syntax.
Is this implementation temporary in order to allow ab3 to function properly?
For AddCommandParserWrapper
each item has its own set of parsing rules which may require their own individual parsers so the AddCommandParserWrapper
is only responsible for funneling the appropriate item prefix to its add parser. The thing about delete command parser is that there is lesser parsing involved except for extracting out the index to be deleted. With the exception of internship which has an additional index required, all the other commands just need the index extracted to be passed to their delete commands. So I am not sure there is a need a wrapper in that case.
As for consistency I think once AddCommandParser can be safely removed, we can rename AddCommandParserWrapper
to AddCommandParser
.
81 (other comment)
Just some conflicts to resolve and it will be good to merge.
82 (other comment)
Can add the todo or javadocs and it is good to merge.
Which file/line are you referring to?
83 (other comment)
Overall LGTM to merge, just need to fix the image link. Think there is a typo in the png file itself
Thank you, Good catch!
84 (other comment)
Just some comments for you to consider, not very sure if it is right or wrong.
For
sd execute edit me command
, you might want to include what is return in thegetProfileList()
perhaps.
And for void methods like
setItem
andsetProfileItem
i believe the return arrows could be omitted as it doesn't bring any value and it does help to reduce cluttering.
However, if you think that it is fine, then do let me know as it is good to merge already.
Thanks for the feedback! I have updated the getProfileList()
depiction but I think I will keep the return arrows for the time being since I think the clutter is still ok and I see that Shawn has also used them to indicate that the methods has completed its execution.
85 (other comment)
LGTM, need to resolve some conflicts
86 (other comment)
I just realised, but just for plausible consideration, should we add-in extension for deleting companies that indicate internships being deleted as well as its application.
Good point! Not sure how to appropriately frame it and if it should even be an extension of company or part of internship/application. @shawn-nyk @keanecjy What do you guys think?
87 (other comment)
Are we able to collapse some of the use cases like Find, List and View? Since they are exactly the same for the three data types. We could type something like:
Find, List, View item (item refers to company, profile or application)
I feel that the drawback for this is the the sequencing of items will be inconsistent as you are referring to all the items in this UC but later on you group the other UCs by item type? Also It will appear odd to a first time reader how we choose to merge certain UCs VFL but not ADEV?
88 (other comment)
I just realised, but just for plausible consideration, should we add-in extension for deleting companies that indicate internships being deleted as well as its application.
Good point! Not sure how to appropriately frame it and if it should even be an extension of company or part of internship/application. @shawn-nyk @keanecjy What do you guys think?
I think we can just put it in the MSS, something like deletes the company and associating internships and applications along with it. This way means we will have more unique cases so it doesn't feel so repetitive too
But doing this you cannot use the reuse the UC for the other item types?
89 (other comment)
I am thinking that since quite a number of us quoted terms like
DRY
and stuff, would be it better if we shift all those to the glossary instead of puttingDRY(Don't Repeat Yourself)
?
Sounds good, we have to update Keane.
90 (other comment)
We might need to change our product scope and value proposition, it is not more tech?
I think this is for the UG right?
91 (other comment)
I am thinking that since quite a number of us quoted terms like
DRY
and stuff, would be it better if we shift all those to the glossary instead of puttingDRY(Don't Repeat Yourself)
?
Sounds good, we have to update Keane.
I think it applies to shawn, fidella also!
I was referring updating to the glossary
92 (other comment)
This is a misunderstanding of the feature. @patricktan6 Thanks for the feedback though!
The user guide states that requirements at least one requirements must be match the internship
@zhaojj2209
(51 comments)1 (commented on others PR)
Collection<String> categorySet = categories.size() == 1 && categories.contains("")
2 (commented on others PR)
return Optional.of(ParserUtil.parseCategories(categorySet));
3 (commented on others PR)
* Represents a Transaction's date in the address book.
4 (commented on others PR)
The argument name here should be changed from email
to date
. The JavaDoc should also be changed accordingly.
5 (commented on others PR)
* Returns if a given string is a valid date.
6 (commented on others PR)
In line 53, "personListPanelPlaceholder"
should be changed to "transactionListPanelPlaceholder"
.
7 (commented on others PR)
This testcase can be deleted.
8 (commented on others PR)
// Keywords match amount and date, but does not match name
Not sure if this testcase will still be used in the future, but we can change the description first.
9 (commented on others PR)
* @return The result of the command execution.
10 (commented on others PR)
* @return The currently selected tab.
11 (commented on others PR)
* @param currentTab The currently selected tab.
12 (commented on others PR)
Currently, inputting tab 5
will return the same error message as other invalid formats instead of MESSAGE_TAB_DOES_NOT_EXIST
.
13 (commented on others PR)
+ "based on the current tab.\n"
14 (commented on others PR)
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a transaction to the finance tracker "
15 (commented on others PR)
For lines 43 and 44, more suitable values should be used, e.g. 5 and 13/10/2020
16 (commented on others PR)
Should we add a comment to the other test json files for consistency?
17 (commented on others PR)
Should the transactions here be consistent with the transactions returned from calling getTypicalFinanceTracker()? Currently, typicalTransactionsFinanceTracker.json contains more transactions.
18 (commented on others PR)
Thanks for the clarification!
19 (commented on others PR)
On second thoughts, there isn't really a need for them to be the same, so this comment can be ignored.
20 (commented on others PR)
"The bookmark expense index provided is invalid";
21 (commented on others PR)
"The bookmark income index provided is invalid";
22 (commented on others PR)
* @param targetIndex Index of the bookmark income in the filtered bookmark income list to convert.
23 (commented on others PR)
public static final String MESSAGE_DELETE_BOOKMARK_INCOME_SUCCESS = "Deleted Bookmark Income: %1$s";
24 (commented on others PR)
* @param targetIndex Index of the bookmark income in the filtered bookmark income list to edit.
25 (commented on others PR)
* @param editBookmarkIncomeDescriptor Details to edit the bookmark income with.
26 (commented on others PR)
The javadoc for this method should be changed from frequent incomes to bookmark incomes (line 27 and 28).
27 (commented on others PR)
super("Operation would result in duplicate bookmark " + message);
28 (commented on others PR)
* Signals that the following operation will result in a duplicate bookmark transaction.
29 (commented on others PR)
* @param bookmarkExpenseList The list of bookmark expenses to be displayed.
30 (commented on others PR)
* @param bookmarkIncomeList The list of bookmark incomes to be displayed.
31 (commented on others PR)
Line 139 should be changed from frequent expense list to bookmark expense list.
32 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of frequent bookmark list
33 (commented on others PR)
ConvertBookmarkExpenseCommand convertFirstBookmarkExpenseCommand =
The corresponding references to this name should be changed as well.
34 (commented on others PR)
ConvertBookmarkExpenseCommand convertSecondBookmarkExpenseCommand =
Similarly for this one
35 (commented on others PR)
The edits for this file mirror that of ConvertBookmarkExpenseCommandTest.java
.
36 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of bookmark expense list
37 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of bookmark income list
38 (commented on others PR)
Line 89 should be changed from frequent expense list to bookmark expense list.
39 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of bookmark expense list
40 (commented on others PR)
The edits in this file mirror that of EditBookmarkExpenseCommandTest.java
.
41 (commented on others PR)
Line 31 should be changed from frequent expense to bookmark expense.
42 (commented on others PR)
Similar change to BookmarkExpenseTest.java.
43 (commented on others PR)
// Bookmark Expenses
44 (commented on others PR)
// Bookmark Incomes
45 (commented on others PR)
The keywords for the find
command is not limited to t/TITLE_KEYWORD
, so this change may mislead the reader.
46 (commented on others PR)
If any `CATEGORY` is specified, it will replace all of the expense's existing categories.
47 (commented on others PR)
If any `CATEGORY` is specified, it will replace all of the income's existing categories.
48 (commented on others PR)
A **bookmark expense** is a template that allows you to create expenses that the you make frequently, such as paying phone bills monthly or buying bubble tea weekly.
Change style of writing to mirror the descriptions for Expense and Income. Do mirror this change in the Bookmark Income section as well.
49 (commented on others PR)
You can convert a bookmark expense repeatedly to create as many expenses as you want, and the created expenses will automatically be added to Fine<span>$</span><span>$</span>e's expenses list.
Similarly, make this change to the Bookmark Income section.
50 (commented on others PR)
1. **Title**: A descriptive title, to remind you what the bookmark expense is about.
I suggest changing the descriptions in this list to present tense since, unlike normal expenses, bookmark expenses are recurring hence can occur in the present.
Do mirror this change for bookmark incomes as well.
51 (commented on others PR)
1. **Amount**: How much money you will spend each time you convert the bookmark expense to an expense.
Same for bookmark income.
52 (commented on own PR)
The example usage in the original AB3 was already erroneous, so I will be removing this example usage.
53 (commented on own PR)
I decided it might be best to remove it as the above definition is inconsistent with the definition earlier in the user guide where the full list of accepted ASCII characters was shown.
54 (commented on own PR)
Will be covering this in TitleContainsKeyphrasesPredicateTest
.
55 (commented on own PR)
The spaces are necessary in order for the parsing to work.
56 (commented on own PR)
Will add a comment highlighting that these strings are similar to those defined in CommandTestUtil
, but as they are only used in FindCommandParserTest
they are defined here.
57 (other comment)
With the merging of #106, the feature has been implemented.
58 (other comment)
With #66, the feature has been implemented.
59 (other comment)
With #93, the feature has been implemented.
60 (other comment)
With #106, the feature has been implemented.
61 (other comment)
With #93, the feature has been implemented.
62 (other comment)
With #94, the feature has been implemented.
63 (other comment)
Resolved via #85.
64 (other comment)
Resolved via #101.
65 (other comment)
With #100, the feature has been implemented.
66 (other comment)
With #100, the feature has been implemented.
67 (other comment)
With #107, the feature has been implemented.
68 (other comment)
With #107, the feature has been implemented.
69 (other comment)
Closed by #147 and #148.
70 (other comment)
Closed by #148.
71 (other comment)
Closed by #150.
72 (other comment)
Resolved by #166.
73 (other comment)
Resolved by #166.
74 (other comment)
Future work:
Add the same restrictions to the edit income/expense commands.
Add input restrictions for bookmark income/expense commands.
75 (other comment)
This is a duplicate of #242.
76 (other comment)
Fine$$e is an expense tracker and not an item tracker, so the intended usage is not to show the user how many items they have purchased, but rather how much they have spent. Therefore, we will not be implementing this feature.
@Ben-Hanan
(51 comments)1 (commented on others PR)
Commenting for future reference:
we will probably need to change these kind of files with traces of address book in it. No need to change for now.
2 (commented on others PR)
Need to change JsonSerializableAddressBook class name to JsonSerializableEvaStorage
3 (commented on others PR)
Minor comment, but maybe it could be private instead of protected? Since we would just use getter methods to access these fields.
4 (commented on others PR)
Perhaps we can make use of the regex method used by the other classes in model? In this case the validation format would be "^(3[01]|[12][0-9]|0[1-9])/(1[0-2]|0[1-9])/[0-9]{4}$" for dd/mm/yyyy. I believe it would make our code seem more in line with the existing code from AB-3.
5 (commented on others PR)
Maybe interviewDate shouldnt be in an optional wrapper in the constructor in case it errors? We could include a try catch then or we could simply make a getter method for interviewDate that returns an optional>InterviewDate> and set up the error handling there.
6 (commented on others PR)
Agree with Royce. Maybe we can use an enum or separate class for this as well.
7 (commented on others PR)
Good use of existing functions.
8 (commented on others PR)
Same goes for these. Don't think it should be protected.
9 (commented on others PR)
Not sure if it's ok to delete the person database. If we can do so without the application collapsing we should remove it if it is redundant! (of course this means updating all the tests) KIV
10 (commented on others PR)
@code applicant, address book -> eva storage
11 (commented on others PR)
the word "address book" appears multiple times in javadocs at multiple places
12 (commented on others PR)
not sure if we wanna change it to editedApplicant, editedStaff. Can choose to change or not up to u
13 (commented on others PR)
May wanna change the way interview dates are represented. (I think this is for Nikhila?)
14 (commented on others PR)
isn't this method in parserutil?
15 (commented on others PR)
maybe instead of coming up with a myriad of prefixes when we make a new command like ls, le, id, we can standardize a date input to always just use PREFIX_DATE which is d: or d/ or something along these lines?
16 (commented on others PR)
maybe we can use an enum for this
17 (commented on others PR)
The extra tag added here should be Applicant instead of staff
18 (commented on others PR)
Applicant instead of staff
19 (commented on others PR)
We can remove the leaves flowpane as applicants do not have leaves
20 (commented on others PR)
Applicant
21 (commented on others PR)
edit the logging as well. I think staff list panel should have the same problem.
22 (commented on others PR)
I think most of the javadocs in the new classes have yet to be updated
23 (commented on others PR)
I guess we need to implement window/tab switching
24 (commented on others PR)
Perhaps a better way to process statuses from strings would be to use the 'valueOf' function of enums. i.e
'PossibleApplicationStatus.valueOf(status.toUpperCase()); //throws Illegal argument exception if its not a valid enum
'
not really sure if it can be applied here as you would have to try catch either here or whatever is calling the constructor.
25 (commented on others PR)
with relation to my previous comment, this can be removed i think but im not sure how the constructors and the enums tagged to strings work.
26 (commented on others PR)
maybe you can make use of the method arePrefixesPresent in parserutil
27 (commented on others PR)
i think we need to find a better way to handle this. I will come up with a app wide state to monitor what we are currently looking at so the commands dont mess up.
28 (commented on others PR)
same as DeleteCommandParser
29 (commented on others PR)
take this out if not the app wont start lol
30 (commented on others PR)
perhaps we can abstract this out to dateutil? If the current method doesnt suit what you need you can create another method and another datetimeformatter to suit what you need
31 (commented on others PR)
What if the individual items exceed one line? Does the code handle that
32 (commented on others PR)
can use requireAllNonNull method from some common util
33 (commented on others PR)
Same as education
34 (commented on others PR)
I think for the sake of standardization, we can use the dateToString method in dateUtil to represent dates.
35 (commented on others PR)
same as above
36 (commented on others PR)
Maybe you can abstract this out into another function declared in this file. Something like
public void updateComments(Set>Comment> currentComments, Set>Comment> editedComments)
37 (commented on others PR)
these need to be updated
38 (commented on others PR)
Since they're able to add an application from a profile perhaps you should include that in the message as well? Maybelike "Please switch to applicant list panel (list a-) or view applicant profile panel to add application to applicant."
39 (commented on others PR)
We should have a standardized error message when having a wrong panel related error (refer to viewCommand).
The error message can be formatted as such:
String.format(Messages.MESSAGE_INVALID_COMMAND_AT_PANEL, MESSAGE_WRONG_PANEL))
40 (commented on others PR)
For this if an invalid index is entered is the error is caught in mainWindow? If it is then i'll change view command to take out the try catch cause it'll make the code look neater
41 (commented on others PR)
not sure if you want the expected behavior to be to bring the user to the list view if the user adds the application to the applicant on its profile panel.
42 (commented on others PR)
Should change the name to panelState or currentPanel or something along those lines
43 (commented on others PR)
maybe using a switch would be more presentable
44 (commented on others PR)
same as add application
45 (commented on others PR)
same issue as add application
46 (commented on others PR)
same issue
47 (commented on others PR)
same issue
48 (commented on others PR)
same issue
49 (commented on others PR)
switch
50 (commented on others PR)
same issue
51 (commented on others PR)
same issue
52 (commented on own PR)
I believe a better comparison would be between Leave and Address or Tag! Leave should handled the same way as how an attribute of the person is handled instead of being handled the same way as the Person itself. But you are right, I can have the parsing method imported from dateUtil to achieve better abstraction.
53 (commented on own PR)
I don't think it's needed cause the attribute in command result would explain it!
54 (commented on own PR)
right lol
55 (commented on own PR)
i got a bit more commits to push anyways wait ah
56 (commented on own PR)
oh
57 (other comment)
LGTM!
58 (other comment)
LGTM!
59 (other comment)
Done for week 6 tutorial, not needed to merge
60 (other comment)
Not needed to merge
61 (other comment)
Not needed to merge
62 (other comment)
Looks good maybe you can do x.
63 (other comment)
LGTM
64 (other comment)
LGTM
65 (other comment)
LGTM
66 (other comment)
LGTM
67 (other comment)
LGTM
68 (other comment)
LGTM
69 (other comment)
LGTM
70 (other comment)
LGTM
71 (other comment)
LGTM!
72 (other comment)
Closed. refer to PR #62 for updated version
73 (other comment)
LGTM. However due to dependence on filteredStaffList, we will need to change the find function in the future.
74 (other comment)
As a HR manager, I want to be able to add comments on staff so that I don't have to do it physically and can have the data stored in one location.
75 (other comment)
basic functionality implemented in v1.2. Functionalities stated in this story will be added in v1.3
76 (other comment)
LGTM
77 (other comment)
LGTM. Thanks for correcting this small error!
78 (other comment)
I think we can close this PR for now. Can open again if needed.
79 (other comment)
LGTM
80 (other comment)
LGTM
81 (other comment)
LGTM
82 (other comment)
LGTM
83 (other comment)
LGTM
84 (other comment)
LGTM
85 (other comment)
LGTM
86 (other comment)
LGTM
87 (other comment)
LGTM
88 (other comment)
LGTM
89 (other comment)
LGTM
90 (other comment)
LGTM
91 (other comment)
LGTM
92 (other comment)
LGTM
93 (other comment)
LGTM
94 (other comment)
LGTM
95 (other comment)
LGTM
96 (other comment)
LGTM
97 (other comment)
LGTM
98 (other comment)
I think this issue is on the LocalDate class lol @Hou-Rui thoughts?
99 (other comment)
LGTM
100 (other comment)
LGTM
101 (other comment)
LGTM
102 (other comment)
LGTM
103 (other comment)
LGTM
104 (other comment)
thanks royce lgtm
105 (other comment)
lgtm
106 (other comment)
lgtm
107 (other comment)
@Nikhilalalalala
108 (other comment)
LGTM
109 (other comment)
LGTM
110 (other comment)
LGTM
111 (other comment)
LGTM
112 (other comment)
LGTM
113 (other comment)
LGTM
114 (other comment)
LGTM
115 (other comment)
LGTM
@yanbingtao
(50 comments)1 (commented on others PR)
maybe we should include the brand of the milk tea shop here also? as some function are only for TGER SUGER brand
2 (commented on others PR)
I think we should still use this prefix, to distinguish the input is either a name or a tag or something else.
Same applies to below, line 57
3 (commented on others PR)
there is a white space before "ingredient", I think it should be a typo and need to be removed?
4 (commented on others PR)
Maybe can consider to shift this point up, can put after the first point? It flows more naturally.
Maybe the second sentence can change to something like this? -> "This application is tailor-made for bubble tea shop managers, to help them on store management."
5 (commented on others PR)
Maybe can write down the full name for CLI (Command Line Interface)? In case some users don't know what CLI stands for.
6 (commented on others PR)
Maybe can consider to shift this row up to line 265? so that we can group all priority 1 & 2 together
7 (commented on others PR)
I think we should still use this prefix ("n/", "p/", etc), to distinguish the input is either a name or a tag or something else.
8 (commented on others PR)
Yup, should keep both. "e/" for emergency contact, "p/" for employee's contact number.
9 (commented on others PR)
I'm not sure if "set" is a prefix and need to add into here. Based on my understanding, we only need to add new prefix when we need to create a new field in a person model. Like if we create a field to record remarks, then we need to add "r/" as a prefix. But "set" does not function in this way. When user key in "set ...", then program will execute the "set", not to add the values behind to a field.
Please correct me if I'm wrong, thanks 😃
10 (commented on others PR)
Maybe you could consider using case structure
here? It looks clearer, but if
is working perfectly. 👍
11 (commented on others PR)
You may want to change this part to if (AAA && BBB) to avoid the deep nesting? Thanks
12 (commented on others PR)
👍
13 (commented on others PR)
Search should change to Find
14 (commented on others PR)
this "..." should be there, as multiple tags may assign to the person.
15 (commented on others PR)
there should be a "..." behind [t/TAG], as multiple tags can be edited through this command.
16 (commented on others PR)
"..." should not be removed, as user can key in multiple keywords for this command.
17 (commented on others PR)
There should be "[p/PHONE_NUMBER]" after "[n/NAME]". Thanks
18 (commented on others PR)
Instead of using "Employees' contact list", I'm using "Employee directory", as we now use some tags to help on manpower management, so it also stores other info (eg. available working days, etc) on top of contact information. So you may want to change to "Employee directory" instead? Thanks 😃
19 (commented on others PR)
Maybe there are some missing words behind "by the"?
20 (commented on others PR)
Maybe can use "t/friday t/monday" instead of "t/friends t/owesMoney"? It will be more relevant to our context.
21 (commented on others PR)
I think here should change back to what it was. And I spot some of the similar problems in the PR. I will mark them all here, so you can easily refer to that line and change those back. Thanks 😄
22 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
23 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
24 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
25 (commented on others PR)
For both line 142 & 143. A similar problem here, you may want to change back to what it was. Thanks
26 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
27 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
28 (commented on others PR)
For line 195 & 196. A similar problem here, you may want to change back to what it was. Thanks
29 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
30 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
31 (commented on others PR)
for line 340 ~ 341, A similar problem here, you may want to change back to what it was. Thanks
32 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
33 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
34 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
35 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
36 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
37 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
38 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
39 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
40 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
41 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
42 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
43 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
44 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
45 (commented on others PR)
for line 537~538, A similar problem here, you may want to change back to what it was. Thanks
46 (commented on others PR)
A similar problem here, you may want to change back to what it was. Thanks
47 (commented on others PR)
for line 548 ~550, A similar problem here, you may want to change back to what it was. Thanks
48 (commented on others PR)
For line 215 ~216, A similar problem here, you may want to change back to what it was. Thanks
49 (commented on others PR)
Maybe line 494 ~ 496 shouldn't be removed.
50 (commented on others PR)
I think this line shouldn't be removed as well? Thanks.
51 (commented on own PR)
Good point! Resolved, thanks (:
52 (commented on own PR)
Removed. Thanks (:
53 (commented on own PR)
Sure, just added. thanks
54 (commented on own PR)
Good point, just added in. thanks
55 (commented on own PR)
Okay, I've added that in. Thanks!
56 (commented on own PR)
Thanks for pointing out! Will edit it and change it in the next iteration.
57 (commented on own PR)
Thanks! I've changed that.
58 (commented on own PR)
Sure, I've added that. Thanks!
59 (commented on own PR)
Sure, I've added that. Thanks!
60 (commented on own PR)
Sure, I've added that. Thanks!
61 (commented on own PR)
But I think normally for variable names, we should use a noun. And only for method, we use something starting with a verb, like isArchived. So I think here, archiveStatus should be used (: Thanks!
62 (commented on own PR)
Thanks for pointing out, will change it.
63 (commented on own PR)
yup, will delete this line away, thanks!
64 (commented on own PR)
Will change this part, thank you!
65 (commented on own PR)
Yes! that will be better, thanks!
66 (commented on own PR)
Thank you!
67 (commented on own PR)
Thank you! Have corrected this part.
68 (commented on own PR)
When "c-archive-list" command is given, it will only show all archived persons. When "c-list" command is given, it will show all active(unarchived) persons in the list. Thanks
69 (commented on own PR)
Yes, I've deleted this part. Thanks for pointing out 👍
70 (commented on own PR)
Good point! I've changed these 2 in the latest commit. Thank you!
71 (commented on own PR)
Yes indeed, thank you for pointing out. I've changed it in the latest commit.
72 (commented on own PR)
Thank you! I've changed it in the latest commit.
73 (commented on own PR)
Indeed, I forgot to change the javadoc after editing from the original "c-find" code. Thanks! I've edited this part.
74 (commented on own PR)
Thank you for the suggestion. Yes, I think that sounds clearer. I've changed it to FindByTagCommand
. Thanks!
75 (commented on own PR)
I've changed it in the latest commit, thanks!
76 (commented on own PR)
c-tag-find
was implemented on top of c-today
feature, so c-tag-find
branch contains the c-today
feature.
77 (commented on own PR)
I've added the javadoc. Thanks!
78 (commented on own PR)
Removed, thanks!
79 (commented on own PR)
Added a new line. Thanks!
80 (commented on own PR)
Added in the latest commit. thanks!
81 (commented on own PR)
Added new lines in between in the latest commit. Thank you!
82 (commented on own PR)
Thanks for the suggestion. will edit it in the latest commit.
83 (commented on own PR)
Thanks! Will change to 11.
84 (commented on own PR)
Sure
85 (commented on own PR)
okay can, then I will adjust my code to use your TypicalSalesRecordEntries.java file
86 (commented on own PR)
Yes, I've changed to that format, you may refer to line 339 for the updated one. Thanks!
87 (commented on own PR)
I've shifted the updated one to line 392, thanks!
88 (commented on own PR)
I've adjusted accordingly based on our discussion.
89 (commented on own PR)
yes, thanks!
90 (commented on own PR)
Good point! Will edit accordingly. Thanks!
91 (commented on own PR)
Good point! Will edit accordingly. Thanks!
92 (commented on own PR)
Thanks!
93 (commented on own PR)
Thank you!
94 (commented on own PR)
Thanks!
95 (commented on own PR)
Thanks for pointing out! Will edit the div lines. Thanks
96 (commented on own PR)
Thanks for pointing out! Will edit the div lines. Thanks
97 (commented on own PR)
Thanks for pointing out! Will edit accordingly. Thanks
98 (commented on own PR)
ok, thanks
99 (commented on own PR)
Sure
100 (commented on own PR)
thks
101 (commented on own PR)
Don't think it's needed, as UG should be just telling users what they should/shouldn't do. I feel adding this sentence will make it more confusing. Thanks
102 (commented on own PR)
It has been changed in the latest commit. Thanks!
103 (commented on own PR)
It has been changed in the latest commit. Thanks!
104 (commented on own PR)
It has been changed in the latest commit. Thanks!
105 (commented on own PR)
It has been changed in the latest commit. Thanks!
106 (commented on own PR)
It has been changed in the latest commit. Thanks!
107 (commented on own PR)
It has been changed in the latest commit. Thanks!
108 (commented on own PR)
It has been changed in the latest commit. Thanks!
109 (commented on own PR)
It has been changed in the latest commit. Thanks!
110 (commented on own PR)
It has been changed in the latest commit. Thanks!
111 (commented on own PR)
It has been changed in the latest commit. Thanks!
112 (commented on own PR)
It has been changed in the latest commit. Thanks!
113 (commented on own PR)
Good point! Thank you!
114 (commented on own PR)
Sure, I will use "e.g." for those examples in the brackets, and use "for example, " for those are not. Thank you!
115 (commented on own PR)
I will add back the "[Completed]" into the headers. Thanks!
116 (commented on own PR)
Thanks for pointing out! I will revert it back to the previous version. Thanks!
117 (commented on own PR)
Thanks for pointing out! Since tCheck will always show the list, I will delete this step in MSS. Thanks!
118 (commented on own PR)
Yes, that's whay I mean. Will rephrase this part. Thanks!
119 (commented on own PR)
Thanks! will edit accordingly.
120 (commented on own PR)
Thanks! that sounds much better! will edit it!
121 (commented on own PR)
Thank you for pointing out! Will change.
122 (commented on own PR)
Thanks! will change to that.
123 (commented on own PR)
Should be "employees", will edit. thanks!
124 (commented on own PR)
Thanks!
125 (commented on own PR)
Alright, then I will remove it first. Thanks!
126 (commented on own PR)
Thanks!
127 (other comment)
LGTM
128 (other comment)
LGTM
129 (other comment)
LGTM
130 (other comment)
LGTM
131 (other comment)
LGTM
132 (other comment)
LGTM
133 (other comment)
LGTM
134 (other comment)
LGTM
135 (other comment)
LGTM
136 (other comment)
Exit feature has already been implemented in tCheck.
137 (other comment)
Auto-saving feature has already been implemented in tCheck.
138 (other comment)
Delete command has already been implemented in tCheck.
139 (other comment)
Add feature has already been implemented in tCheck.
140 (other comment)
Find feature has already been implemented in tCheck.
141 (other comment)
Task has been done, and code has been merged to master branch.
142 (other comment)
The actual GUI looks good to me. There's some problems in the coding standards that I have commented.
Thank you! I've edited in the latest commit. Thank you!
143 (other comment)
c-tag-find
feature was implemented on top of c-today
feature. So this feature is included in the c-tag-find
feature's PR.
144 (other comment)
c-tag-find
feature was implemented on top of c-tomorrow
feature. So this feature is included in the c-tag-find
feature's PR.
145 (other comment)
Other comments: Perhaps naming the commands as
TodayCommand
andTomorrowCommand
isn't the best? It felt vague to me. The missing javadoc descriptions did not help too.
I've changed these two to FindByTagTodayCommand.java
and FindByTagTomorrowCommand.java
. And two Javadoc were also added for these two classes to better explain the meaning. Thanks!
146 (other comment)
Thank you for pointing out this. Our team will improve the UG in v1.4.
147 (other comment)
Thank you for point out this issue. Our team will improve the UG in v1.4.
148 (other comment)
Thank you for pointing out this issue. Our team will improve the UG in v1.4.
149 (other comment)
Thank you for pointing out this issue. Our team will improve the UG in v1.4.
150 (other comment)
Thank you for pointing out this issue. We have improved tCheck to wrap the long text in GUI.
151 (other comment)
Thank you for pointing out this issue. Our team will edit this part in v1.4.
152 (other comment)
Based on the UG, "c-unarchive INDEX" command will unarchive the employee identified by the index number used in the displayed employee directory. In the screenshot above, you can see there's only one employee displayed in the GUI, thus "c-unarchive 2" will result in the invalid index error.
But we will make some changes to make the error message more informative, by adding the detailed of the reason that causes this error and the total number in the latest displayed person list.
153 (other comment)
Thank you for pointing out this issue, we will improve the UG in V1.4.
154 (other comment)
Thank you for pointing out this issue. We will provide a more detailed explanation in the UG regarding to these 2 features in v1.4.
155 (other comment)
Thank you for raising up this issue. But actually "c-list" feature is used when the archived employee list is shown in the employee directory pane, and the user may use the command "c-list" to let employee directory show the active(unarchived) employees.
We will rename the command to as "c-active-list" to be clearer on its purpose. Thanks.
156 (other comment)
Thank you for pointing out this issue, we will change across our app to maintain the consistency.
157 (other comment)
Thank you for pointing out. The calendar were implemented to let the user easily find out what day is it today/tomorrow. We have removed these two buttons, so that the calendar will only show the current month's days.
158 (other comment)
Thank you for the issue. But we decide to keep the use of the name "addressbook", as the purpose for this file is to record the employees' contacts and addresses. So it's still address book. Therefore, we will still use "addressbook" as the file name. Thank you!
@Criss-Wang
(49 comments)1 (commented on others PR)
Should the ... be inside the [] ?
2 (commented on others PR)
Is it possible to have both predicates in the constructor? Maybe we need 2 overloaded constructors, or we can test on cases where both predicates are added?
3 (commented on others PR)
Similar to the idea above, the presence of null here may no be so desirable.
Perhaps we can consider reduce the use of null here in future iterations?
4 (commented on others PR)
Is there any way to reduce code duplication in this case? Like defining the abstract predicate class?
5 (commented on others PR)
Perhaps you can try putting in multiple products within a particular supplier?
6 (commented on others PR)
Maybe we can consider more parsing failure tests later?
7 (commented on others PR)
Thanks for the correction, didn't realize this 😃
8 (commented on others PR)
The delete command is now delete ct/s i/12
9 (commented on others PR)
I feel the prefix part looks a bit similar to the edit command's reasoning (and maybe can be used in other commands as well), will it be too repetitive?
10 (commented on others PR)
maybe we can further specify it is by the "name" of the products sold/stored
11 (commented on others PR)
I feel like this second sentence is a bit of repeat with the and/or in the first sentence, maybe we can just remove the and/or in the first sentence?
12 (commented on others PR)
should it be "the last argument value" instead of "the last prefix"?
13 (commented on others PR)
Do you mean the Set>Product>
is identical to the existing product set here?
14 (commented on others PR)
Maybe it's better to handle the exception within the stringUtil.containsWordIgnoreCase?
15 (commented on others PR)
Same as above.
16 (commented on others PR)
I think the original way is to define a new function called arePrefixsPresent (maybe you can check the deleteCommandParser and addCommandParser). Not sure if this is the new form intended
17 (commented on others PR)
May I know the intention of this method? I though the checking of invalid argument is done during the class construction itself, for example:
public Address(String address) {
requireNonNull(address);
checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);
value = address;
}
18 (commented on others PR)
Are we going to add logging specific command class? A little bit questionable.
19 (commented on others PR)
Maybe you also need to check this.warehouseToAdd isinstanceof Warehouse? (since yo mentioned "should be of Warehouse type" below)
20 (commented on others PR)
A full look at the method, it seems a bit too long. Is it possible to break it down to smaller fractions and handle each logic separately?
21 (commented on others PR)
So are we allowing empty email like "e/ " here?
22 (commented on others PR)
Here we can actually use the enum class Type.supplier and Type.wareshouse.
23 (commented on others PR)
Similar idea above, but I guess either way will do.
24 (commented on others PR)
May be we can also remind the user that the form is 1 prefix multiple keywords such as pd/panadol face mask
and not the format like t/friend t/family
25 (commented on others PR)
Maybe instead of "additional" prefix, we can use "irrelevant" instead, since "additional" may refer to multiple same prefix sometimes.
26 (commented on others PR)
Maybe "descriptions"?
27 (commented on others PR)
Would it be clearer if we split them out further like
Although EMAIL
and ADDRESS
are marked as optional parameters, EMAIL
is only for supplier and ADDRESS
is only for warehouse.
When adding a warehouse, ADDRESS
should be present but EMAIL
should not be
present.
When adding a supplier, EMAIL
should be present but ADDRESS
should not be
present.
28 (commented on others PR)
I guess it should be "in-between"?
29 (commented on others PR)
Maybe also state that we need the @
sign for the email input?
30 (commented on others PR)
Would the original "Clears" be better than "deletes"? A "delete" here may confuse the user a bit. Otherwise we may also use "removes".
31 (commented on others PR)
Maybe we also need to specify it in the add command
?
32 (commented on others PR)
Maybe the "one started with" can be replaced by "the original one" for easier understanding?
33 (commented on others PR)
Would 'at least one of the parameter' be more correct than 'at least one of the prefix'?
34 (commented on others PR)
I try to have 2 warehouses having product 'Panadol' and remark 'biggest', it seems to work well. So I guess the warehouse here should be "warehouses" and maybe we can also use 'product with name' in place of 'products matching'?
35 (commented on others PR)
should it be supplier and warehouse instead of having 's' behind?
36 (commented on others PR)
Should it be and/or
?
37 (commented on others PR)
for that supplier?
38 (commented on others PR)
Can we make it clearer by stating or anyone already used
?
39 (commented on others PR)
For this line, I notice that the rest are passing in ReadOnly[...] types of argument in and the CommandHistory is not ReadOnly here. Would it be better if we consider using ReadOnlyCommandHistory here as well? Will be a little bit of more work to do.
40 (commented on others PR)
May some short descriptions about this class and some public methods will make the javaDoc nicer to read in this section?
41 (commented on others PR)
Nice function here!
42 (commented on others PR)
Just some notes: I guess the commandHistoryIndex can be of type Index in the future, but looking at the Index class it does not have increment/decrement, so currently it looks fine to just use the int type here.
43 (commented on others PR)
Probably good to include some comment to describe the logic of this part since both TreeSet and LinkedList are used here.
44 (commented on others PR)
Should we also include undo/redo/listmacro command here?
45 (commented on others PR)
Nice work with the CommandBox Logic!
46 (commented on others PR)
Oops the ct for SUPPLIER_PRODUCT and WAREHOUSE_PRODUCT should be ps and pw.
47 (commented on others PR)
Maybe need to consider change the addCommand's COMPLETE to COMPULSORY also? (since r/is not compulsory).
48 (commented on others PR)
Should the orElseThrow() have some exceptions as argument here?
49 (commented on others PR)
I'm just thinking is "Listing" the correct word to use since we are not truly "Listing" out the commands...
The actual feature is to trace back the commands one at a time, so maybe something like "access historical command" might be less misleading.
50 (commented on own PR)
Thanks for the suggestion, will modify it!
51 (commented on own PR)
Thanks for spotting the error!
52 (commented on own PR)
ld try to make the explana
May I know what do you mean by making the explanation consistent?
53 (commented on own PR)
Thanks for the suggestion, your are right!
54 (commented on own PR)
Actually I'm not sure if it is desirable format, maybe we can discuss after everything is done with their version of Message so we unify .
55 (commented on own PR)
This is just a styling for the parameter name targetIndex so I suppose it's okay
56 (commented on own PR)
I think in AB3 they mean argument name. So this part is probably okay
57 (commented on own PR)
Thanks for the suggestion, will take that into account!
58 (commented on own PR)
I think this is covered in the delete supplier/warehouse part, I can add this test again later if needed, thanks for the comment!
59 (commented on own PR)
I see, that's actually a typo also haha, thanks for pointing it out!
60 (commented on own PR)
Oh thanks!
61 (commented on own PR)
Thanks for the typo fix!
62 (commented on own PR)
Oh yah I mean Product
here, thanks a lot!
63 (commented on own PR)
Actually both the product and the set are kinda "Retrieved" haha. I think I will change it to "the retrieved product will be removed from the current product set" then!
64 (commented on own PR)
Thanks for raising this issue up, I also notice that I should use warehouse/supplier here. so I change it to "The selected warehouse/supplier entry in the model is then replaced by the updated warehouse/supplier with the target product deleted."
65 (commented on own PR)
I guess I was referring to the particular success message with the delete command. Anyway I think your suggestion looks clearer to readers, thanks!
66 (commented on own PR)
Currently it's just the arePrefixesPresent
method, I found quite a few overlap among the command parser classes. Guessing it is a common utility method.
67 (commented on own PR)
Actually for the execute method, we first classify into supplierRelated and warehouseRelated. Afterwards in the supplierRelated executions, we need to split into supplier deletion and product for supplier deletion. That's the purpose of this if statement here.
68 (commented on own PR)
Yah let's do it in our discussions then.
69 (commented on own PR)
Nope, this is the markdown standard actually.
70 (commented on own PR)
This is already fixed, thank!
71 (commented on own PR)
That's right! Thanks for the suggestion!
72 (commented on own PR)
Thanks for the suggestion! I guess my original intention is to establish the link between warehouse/supplier and the product to delete
73 (commented on own PR)
Thanks!
74 (commented on own PR)
Thanks!
75 (commented on own PR)
I'm not sure if the comment here needs to stick to this format but I guess I will just go with your suggestion, thanks!
76 (commented on own PR)
I guess it's fine. I didn't exclude the Else because it looks more clear visually .
77 (commented on own PR)
I think if combining the two will result in NullPointerException since if products == null, it won't have isEmpty method.
78 (commented on own PR)
Nice spot! Thanks!
79 (commented on own PR)
Yes, because of the concern about NullPointerException
80 (commented on own PR)
Thanks!
81 (commented on own PR)
Nice spot!
82 (commented on own PR)
Fixed from earlier comment, thanks!
83 (commented on own PR)
Thanks for the spotting of typo!
84 (commented on own PR)
Thanks, I'm thinking "Undo command recovers a previous version of CLI-nic data if any data has been changed. Redo command will restores the data in CLI-nic before an undo command was done."
85 (commented on own PR)
Thanks!
86 (commented on own PR)
Not really since the previous command accepts the last argument while this one accepts the first command word.
87 (commented on own PR)
Great suggestion, will fix it!
88 (commented on own PR)
Nope I will remove them, thanks!
89 (commented on own PR)
Oh I've updated the messages, thanks anyway!
90 (commented on own PR)
Thanks for the suggestion!
91 (commented on own PR)
I think I will go with your second suggestion, thanks Jeffrey!
92 (other comment)
Noted, will fix the issues mentioned in next pull request! Thanks!
93 (other comment)
Good thoughts, I believe handling upper/lower case conversion on our end would improve user experience instead of making it case-sensitive. Especially when they are not able to correct minor typo by retrieving last typed command using the up arrow key like we do in terminals.
You're right, I just tried for add command and it process everything but only keeps the results from the last occurrence. This is a bug and should be resolved unless a command explicitly takes in 2 of the same prefix. Good catch Zhen Lin.
I would think that redundant arguments can be safely ignored if they do not interfere with the given command. We can set up a response that notify them of the
random string
while letting the command run through. This would be even more useful when we implement undo and redo commands.
Thanks Jeffery for the response!
For the first point, I guess if we all agree on this, we can discuss in chat about the implementation detail (like whether to handle it in general parserUtil or somewhere else)
For the second point, thanks and I'm guessing we also need to mention this in our user guide & Usage message if we treat this issue as a bug.
For the third point, I think your suggestion is wonderful! We can also discuss later about the message format, etc.
@StopTakingAllTheNames
(49 comments)1 (commented on others PR)
Might want to remove this line since everyone else also did so
2 (commented on others PR)
You may want to add a (written by: AUTHOR)
statement before the part that you wrote because I think they want to see who wrote what.
3 (commented on others PR)
Whoops, I had changed Year
to only allow digits, so this might fling an exception since it's expecting only "4"
4 (commented on others PR)
Just a minor nitpick for neatness, but I think these 2 lines could be on the same level of indentation as line 64.
5 (commented on others PR)
Since year
is just a String now, toString()
could just return year
itself. But this is also really minor.
6 (commented on others PR)
Perhaps you could change "person" to "student".
7 (commented on others PR)
I think you can remove these 2 lines aha
8 (commented on others PR)
Should this be ClassVenue.MESSAGE_CONSTRAINTS
?
9 (commented on others PR)
Should this be ClassTime.MESSAGE_CONSTRAINTS
?
10 (commented on others PR)
Should this be Fee.MESSAGE_CONSTRAINTS
?
11 (commented on others PR)
Should this be PaymentDate.MESSAGE_CONSTRAINTS
?
12 (commented on others PR)
Why is there a need for this? I believe it was the same way in the Tag
implementation in AB3, since when these are put together there is another module with its method to put a space between tags.
13 (commented on others PR)
Will you be adding them withClassVenue/ClassTime/Fee/PaymentDate for Bob?
14 (commented on others PR)
Whoops, I actually meant the space at the back of the closing square bracket.
15 (commented on others PR)
Perhaps you could test for multiple predicates too.
One suggestion would be to create your school/year predicate too and then create a FindStudentDescriptor
from it, then have a method in testutils.StudentUtils
that converts it into "n/... s/... y/..." form, similar to how it is done in parseCommand_edit()
. The outcome would be:
FindCommand.COMMAND_WORD + " " + StudentUtils.getFindCommandDetails()
Additionally, if you are using prefixes, you might want to refer to them by how they are defined in CliSyntax
instead of magic literals.
16 (commented on others PR)
Year
is actually a String now that accepts alphanumeric characters. Hence I think we should relax the requirements to be one where it returns true if student.getYear().year
contains the keyword (e.g. year
could be a String and it is matched using StringUtils::containsWordIgnoreCase
).
That way, if you search "4" you could get those who put "Sec 4", "sec 4" or "Secondary 4" if the user is inconsistent.
It also means you will be less likely to land an IllegalArgumentException
if the user parses an invalid string since right now FindCommandParser
currently has to call Year#new
to construct this.
17 (commented on others PR)
What is the equals method used for?
18 (commented on others PR)
Making the Lists public final still means you can add keywords to the list at will, you just can't reassign keywords to a new List object. Is that what you mean to do?
19 (commented on others PR)
does this mean that if you search "sec 3" you get all that either match "sec" or match "3"? (e.g. you get sec 1-4 and p3, s3)
20 (commented on others PR)
Yeah I think your current implementation is fine then
21 (commented on others PR)
Would it be more helpful if we made it look only for words that contain all the keywords (even incomplete ones)? (i.e. AND
search)
For example it would be like:
String year = student.getYear().year.toLowerCase();
return keywords.stream().map(String::toLowerCase).allMatch(year::contains);
22 (commented on others PR)
Looks good! Perhaps one suggestion would be to call editAdminDescriptor::isAnyFieldEdited
so we can just create the new student using student.toEdit().getAdmin()
.
23 (commented on others PR)
Really damn minor note but you could probably just use Optional.ofNullable(details).map(Collections::unmodifiableSet)
24 (commented on others PR)
Do you think it would be a good idea to sort by NameComparator
by default?
i.e. sortedStudents = new SortedList>>(this.filteredStudents, new NameComparator())
25 (commented on others PR)
What do you say to using U2713 (✓) and U+2718 (✘) for attendance? something like Question where it will just be (tick/cross) DATE
to show attendance in a single line
That or perhaps rename "Status" to "Attendance" instead, it might be more intuitive than the former.
26 (commented on others PR)
Sorry to bother you with this, but do you think you could just do the same for Questions to have them numbered in the GUI?
27 (commented on others PR)
When I did a run on the schedule command, it appears that schedule mode/MODE date/DATE
is accepted but not schedule view mode/MODE date/DATE
. Perhaps you could update the UG to reflect this, and remove PREFIX_VIEW
from the parser package.
28 (commented on others PR)
Maybe "note" might be a better command word, since all these commands only change one note
29 (commented on others PR)
A lot of commands parsers use this method and it's causing a lot of code duplication. Could you perhaps make this a static ParserUtil
method so that every command that use prefixes can refer to that?
Namely it would be great to have:
ParserUtil.arePrefixesPresent()
and ParserUtil.isAnyPrefixPresent()
30 (commented on others PR)
I think this risks making it more confusing.
The other commands are something like "detail add" or "question add" to tell people you are adding one detail/question. "notebook add" gives the message that you are adding a notebook, and "notes add" tells people you are adding multiple. I think "note" is still a better alternative.
Not to mention that it is also longer to type
31 (commented on others PR)
Parser>T>
is an interface and we normally try to keep our methods abstract. Perhaps you could change this to an abstract class. That or you could still put it in ParserUtil
, just change the docs header to say it has methods for anything parsing related.
The second option might be the less painful one since it does not involve changing every Parser class
32 (commented on others PR)
If it is too much, you can just revert this to your original implementation within NoteCommandParser, and I'll handle this in my own PR
33 (commented on others PR)
Academic is actually more of an aggregation than a composition, Questions, Exams and Attendance are all created before the Academic class is created, and they can exist without it. I think you could just stick to using a normal association.
34 (commented on others PR)
Same for Admin
35 (commented on others PR)
Admin and Academic are actually packages within Student, could you perhaps nest them within the Student package?
36 (commented on others PR)
Is there a way to show that Question is an abstract class with UnsolvedQuestion and SolvedQuestion inheriting from it?
37 (commented on others PR)
I think this should be deleteAttendanceCommand (or command really), and there are more like this in this test class
38 (commented on others PR)
This method is kinda long now (~35 LOC), you might want to split it up into some helpers methods.
Since you've split the boolean declaration up, you could put those into a private boolean isSameStudent()
and private boolean hasClashingClassTime()
or something.
39 (commented on others PR)
A better way to phrase this would be "list of all students [...] sorted by name".
40 (commented on others PR)
Could you just remove the whitespace at the end of this line?
41 (commented on others PR)
You might have to rewrite this whole segment, considering that this is no longer that accurate:
full word match only applies to name search
year search has not been explained
Perhaps for reference, 204-206 could be:
"For name search, only students whose names contain at least one of the given keywords will be matched. Only full words will be matched, e.g han
will not match hans
."
"For school search, only students whose school contains the entire given keyword will be matched, e.g Yishun
will match Yishun Sec
but not Yishun Secondary
."
42 (commented on others PR)
Hmmm... perhaps it could be
"e.g Yishun
will find all instances of Yishun Sec
but Yishun Secondary
will not."
and "whose school contain the entire set of given school keywords"
43 (commented on others PR)
Perhaps it'd be clearer if you phrased it as "For xxx search"
e.g "For name search", "For school search" and "For year search"
"with a name that" and "with a school that" could be further shortened to "whose name/school"
I think by "notes" you mean "examples"?
44 (commented on others PR)
You will still have to update this line because it is specific to name-search
45 (commented on others PR)
This could be better placed in an info-box like you see for add command. Additionally, since the format is the same as the the year format in add and edit command, you could just say
"The format of YEAR
follows that as specified in [add command](link to add command)
"
46 (commented on others PR)
There is also no mention on how name search matches students via OR search
47 (commented on others PR)
oh whoops I must be dyslexic. In that case perhaps you could put "any" in bold and do something for school search?
48 (commented on others PR)
Ah nvm then
49 (commented on others PR)
Ye that's what I mean, thanks!
50 (commented on own PR)
Oh ya horh
51 (commented on own PR)
Good catch, I'll change it and also include a checkArgument()
call in the constructor.
52 (commented on own PR)
It really is just a helper method for the constructor to maintain the abstraction level between Integer::parseInt
and the SchoolType parsing, and no other class will use it.
Furthermore the assertion can only definitely hold true for how it is used within Year so I'd rather not move this elsewhere.
53 (commented on own PR)
I wouldn't worry about this as this assertion only happens after the input string matches Year.VALIDATION_REGEX
. Hence if it passes the earlier assertion in the constructor, it will definitely pass this one. This is just another safety net.
54 (commented on own PR)
Good idea, I forgot about it 😛
55 (commented on own PR)
I'll handle it in another PR
56 (commented on own PR)
Good catch!
57 (commented on own PR)
wah
58 (commented on own PR)
Why not I guess
59 (commented on own PR)
Alright, that should do it
60 (other comment)
add - Alex/Hogan
edit - Vaishak
find - Ying Gao/Choon Siong
61 (other comment)
After we merge this we should merge v1.2 branch into master already
62 (other comment)
Nabei I test all the methods this bot still say less coverage
63 (other comment)
My concern is that IP, IB, MOE mainstream tracks have different naming in their levels. Furthermore, there could be other level naming, for eg a tutor teaching music or arts may have different levels naming for their students.
I think this is not too bad a problem since our primary target was pri/sec/jc tutors so if we frame our target audience that way we still can meet their requirements
64 (other comment)
Looks like I will have to wait for #72 to be merged before I can pass these test cases
65 (other comment)
See #53
66 (other comment)
Functionality already exists
67 (other comment)
Basically what we've been doing all along
68 (other comment)
Possible improvements for future
JsonAdaptedQuestion is a map>question, boolean>
instead of a string
House for each question in a JavaFX VBox
69 (other comment)
Perhaps you could also look into making ClassTime and Student implement Comparable so we can sort students in the filteredList
in order of who goes first.
70 (other comment)
Implementation: Give a reminder of students who need rescheduling
71 (other comment)
See #101
72 (other comment)
Are you not gonna include sorting anymore? I think it's alright to have the sortFilteredStudentList
method, I was just asking to rename the other methods back to [...]Person[...]
73 (other comment)
My man... Did you forget to stage and commit your activity diagram pngs
74 (other comment)
Will open another one
75 (other comment)
Do NOT merge until testing is over, or this will change the UG prematurely.
76 (other comment)
See #151
77 (other comment)
See #151
78 (other comment)
See #160
79 (other comment)
See #151
80 (other comment)
See #176
81 (other comment)
See #151
82 (other comment)
Resolved with #138
83 (other comment)
Resolved with #138
84 (other comment)
See #167
85 (other comment)
Literally pointless
86 (other comment)
Impractical
We cannot make "y/" compulsory with any "s/" as some people transfer without promoting to a new grade
And we also cannot make a comprehensive map of all schools in Singapore either
87 (other comment)
They are different because they are different issues fundamentally, one doesn't even meet the requirement to be parsed (positive), the other is but is an invalid position (non-existent index)
88 (other comment)
This is basically schedule command
89 (other comment)
Looks great
90 (other comment)
Codecov Report
The diff coverage is
n/a
.
how tf
91 (other comment)
No time
92 (other comment)
day is handled with time so the error message should be the same
93 (other comment)
The activity diagrams might be too complex, perhaps we should split some up using the rake symbol. It seems that this guy here made a rake symbol that you can define in
style.puml
Do you mean the sequence diagrams or the activity diagrams?
Oh now that I look at it it's not your activity diagrams but @VaishakAnand and mine 😠
Nvm
94 (other comment)
Merging my last PR also added new tests cases for EditCommandTest to check for clashing ClassTime, so i think you can remove the ones you have added. ps
95 (other comment)
Could you number your figures before I merge?
96 (other comment)
Should we follow the traditional style instead? (Figure 1, Figure 2, etc.)
Hmmm I guess aight
97 (other comment)
For all the sequence diagrams, does the newly created Student really get destroyed, since this Student object replaces the older student in the Model, when
setStudent(student, copy)
is called.
I can't comment on the exact lines since they're from a previous pr. Outside of this, everything looks ok to me.
The command takes an existing student (the student in the diagram) and creates a copy from it, then replaces it in the model. Then the old student should get deleted since nothing points to it anymore.
98 (other comment)
For all the sequence diagrams, does the newly created Student really get destroyed, since this Student object replaces the older student in the Model, when
setStudent(student, copy)
is called.
I can't comment on the exact lines since they're from a previous pr. Outside of this, everything looks ok to me.
The command takes an existing student (the student in the diagram) and creates a copy from it, then replaces it in the model. Then the old student should get deleted since nothing points to it anymore.
AH ok gotcha. Then in that case, should we show the new student object (copy) creation? Or would that be considered a low level detail that we don't have to show.
I feel like I can elaborate on it in the description bah
@yan-soon
(48 comments)1 (commented on others PR)
I think all NUS mods follow that format right? Unless we branch out to cover other Unis
2 (commented on others PR)
Did we refactor the EditCommandDescriptor class to EditModuleDescriptor class?
3 (commented on others PR)
Same comment as above regarding the EditCommandDescriptor.
4 (commented on others PR)
I think there are some trailing white spaces at line 26 and 30, causing the first check to fail.
5 (commented on others PR)
I think same issue as the one I had, should we explicitly state the call of the DeleteCommandParser.parse() method?
6 (commented on others PR)
I think our current delete system still works with indexes, but possibly can KIV for future updates?
7 (commented on others PR)
yup agree!
8 (commented on others PR)
Is this part supposed to return true now? now that we changed the find command to .contains()
9 (commented on others PR)
Do we currently have the 1.5 secs time delay implemented?
10 (commented on others PR)
Maybe we can specify what Similar to previous means exactly?
11 (commented on others PR)
Same comment as above
12 (commented on others PR)
Same comment as above!
13 (commented on others PR)
Same comment as above!
14 (commented on others PR)
think we can remove this line haha
15 (commented on others PR)
Ya HAHAH i think that would be a lot clearer
16 (commented on others PR)
Okay dope
17 (commented on others PR)
NIT: Maybe we can standardise to put fullstops or not
18 (commented on others PR)
Maybe we can catch the possible IllegalArgumentException error thrown by the StringUtil.ignoreCase() method here so that we can display an error message to the user that something has gone wrong.
Currently if the user types in "search MA 1521", the IllegalArgumentException error is thrown in IntelliJ but not in the GUI. Maybe we can try something like that, but I'm not too sure what error message you would wanna show them hehe
try {
String moduleCode = StringUtil.ignoreCase(trimmedArgs);
return new SearchCommand(moduleCode);
}
catch (IllegalArgumentException e) {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchCommand.MESSAGE_USAGE));
}
19 (commented on others PR)
Currently, the check for the new module and the module to be edited both throws the same error message "Failed to find module", if it is an invalid module. Hence, if a user does "edit CS1111 c/CS2222" (two wrong modules), they wouldnt be able to tell which module is invalid.
Maybe we can consider having personalised error messages for the two different module checks, so that the user will know which module is invalid.
20 (commented on others PR)
Minor nit: EditModuleDescriptorTest does not currently cover this portion of the code under test coverage, can consider testing this portion out, but not that important HAHAHA.
21 (commented on others PR)
Maybe we can add the Scenario of when we might want to use the command?
22 (commented on others PR)
Grammar nit: NUS course catalogues
23 (commented on others PR)
Sentence structure nit: These data are retrieved on the go in realtime, directly from NUSMods.
24 (commented on others PR)
Think we can replace GUI with Main Page?
25 (commented on others PR)
I think if we bold module info we can bold NUS course catalogues as well
26 (commented on others PR)
I think this line might have a formatting error
27 (commented on others PR)
This line might have a formatting error as well
28 (commented on others PR)
Will have to include SCIENCE_COMMAND and GEM_COMMAND as well
29 (commented on others PR)
Perhaps we can leave this out? Not really relevant to the delete command
30 (commented on others PR)
I think we can leave the “as shown below” inside, as it helps improve navigability.
31 (commented on others PR)
Same comment as above
32 (commented on others PR)
Same comment as above
33 (commented on others PR)
Same comment as above
34 (commented on others PR)
I think we can remove this? since its not being used hehe
35 (commented on others PR)
Minor nit to make the code look cleaner, the assertions can be simplified:
// same object -> returns true
assertEquals(forceDeleteFirstCommand, forceDeleteFirstCommand);
// same values -> returns true
ForceDeleteCommand forceDeleteFirstCommandCopy = new ForceDeleteCommand(CODE_FIRST_MODULE);
assertEquals(forceDeleteFirstCommand, forceDeleteFirstCommandCopy);
// different types -> returns false
assertNotEquals(1, forceDeleteFirstCommand);
// null -> returns false
assertNotEquals(null, forceDeleteFirstCommand);
// different module -> returns false
assertNotEquals(forceDeleteFirstCommand, forceDeleteSecondCommand);
36 (commented on others PR)
I think you can just use the data in found in main/resources/data/GEM, since all the modules are the same
37 (commented on others PR)
Since GER and GEQ are the same both Sem 1 and 2, I think we can reuse the paths? HAHAH
38 (commented on others PR)
I think we can reuse the testModules method and attribute so we can reduce the clutter and make the code cleaner? HAHA since the setUp methods all have roughly the same function
39 (commented on others PR)
Same comment as above!
40 (commented on others PR)
Actually, now that this method has to interact with model and deal with some filtering logic, should it be in the GemCommand class instead?
41 (commented on others PR)
Same for this method!
42 (commented on others PR)
for this portion, I think the error message shown is "Invalid module code" instead of "invalid common format"
43 (commented on others PR)
grammar nit: a search command
44 (commented on others PR)
nit: the phrasing for 4 and 6 seems a bit confusing cause both 4 and 6 mention the creation of the SearchCommand
.
45 (commented on others PR)
think you have to update the "d" to "s" cause its reflecting on some of the blocks HAHAH
46 (commented on others PR)
nit: I think for this portion, might be good to put : "SearchCommand("CS2103T"). so when the reader reads the whole diagram, the module code doesnt suddenly gets lost in transition
47 (commented on others PR)
same for this part, can put searchModule("CS2103T")
48 (commented on others PR)
maybe we can change the "r" here to "module info" or something?
49 (commented on own PR)
Okay, updated the description! Thanks for feedback.
50 (commented on own PR)
Updated!
51 (commented on own PR)
Updated to include entire method name!
52 (commented on own PR)
Changed to deleteModule(1)!
53 (commented on own PR)
Updated!
54 (commented on own PR)
Wah this one rly good find...
55 (commented on own PR)
Renamed!
56 (commented on own PR)
Changed!
57 (commented on own PR)
Changed!
58 (commented on own PR)
Good suggestion! Added in
59 (commented on own PR)
Changed the structuring! For the edit {index}, I decided to keep it as {index} for now to match the expected outcome images! I can change it accordingly once we have updated our code
60 (commented on own PR)
Not too sure as well, was kinda going for the notion that saving would be done automatically throughout usage of the app, cause I realise we didnt mention anything about saving throughout, and I thought people might think of saving when they think of exiting HAHAHA
61 (commented on own PR)
Alright, made a new class RequiredCommandMessages
in the storage component!
62 (commented on own PR)
True! I combined the 3 methods into one (those that compare foundation, ITprof and mathandsci mods) into one method. I decided to keep the compareInternship() and compareScience() methods as they have slightly different implementations than the other 3 module categories
63 (commented on own PR)
Good call, changed it!
64 (commented on own PR)
Okay did not know about this HAHAHAH changed accordingly!
65 (commented on own PR)
aHHHHH so this is the way....HAHAH I totally forgot I could do this. thanks man, changed accordingly 😄
66 (commented on own PR)
I changed it such that I used the static import of the SCIENCE_PATH.
67 (commented on own PR)
Okay, changed accordingly, similar to what I did for RequiredCommand
68 (commented on own PR)
Rectified!
69 (commented on own PR)
Changed the whole class design so, no more Optional>> attributes HAHAHA
70 (commented on own PR)
okay roger doger! changed accordingly
71 (commented on own PR)
oh right HAHAH okay abstracted further
72 (commented on own PR)
accidentally flipped the booleans HAHAH changed the conditions and booleans accordingly
73 (commented on own PR)
sorry for the misleading boolean names AHAHHA changed the whole code, so no more booleans, just an If-else block to settle if the module is present or not
74 (commented on own PR)
Oh ya good point, added in!
75 (commented on own PR)
Woops forgot about that part hahaha, thanks for the find, replaced!
76 (commented on own PR)
Good point, I've made it private and changed the method and param names HAHAHA. I think I got the method mixed up.
77 (commented on own PR)
Roger, changed as per above!
78 (commented on own PR)
HAHAHA I initially took it straight from the intellij java docs, but I've listed the constaints explicitly now.
79 (commented on own PR)
Roger, changed as per above!
80 (commented on own PR)
Great point, I've shifted it to the RequiredCommandStorageTest
class and the other test classes now import from there instead of the RequiredCommandMessages
class.
81 (commented on own PR)
Oh right, good point HAHAH. Removed the numbering and placed in the note.
82 (commented on own PR)
Good call, removed from both storage classes and put it in JsonUtil
83 (commented on own PR)
HAHAH renamed to GemCommandPaths
84 (commented on own PR)
Ok roger, put it back
85 (commented on own PR)
Same as above
86 (commented on own PR)
oh ya HAHAHA TRUE TRUE, ok changed accordingly!
87 (commented on own PR)
woops, fixed the typo!
88 (commented on own PR)
Yup, to make it cleaner, I made a new method called setCompiledModules() in the GemCommandStorage class!
89 (commented on own PR)
resolved typo!
90 (commented on own PR)
true! HAHAH i scraped all of them and made them into just a single setUpTestModules(Path path) that will just take in different paths when needed.
91 (commented on own PR)
ok HAHAHA standardised across
92 (commented on own PR)
Woops, must have missed this out....added in!
93 (commented on own PR)
rip HAHAH changed accordingly
94 (commented on own PR)
okay I think i seriously mixed up the definion of prefix HAHAHA
95 (commented on own PR)
MIGHT AS WELL TBH
96 (commented on own PR)
Good point, I'm unsure if I should store it as a class variable because idk if the RequiredCommand object should deal with the preclusionMap storage. But it does make the code a bit cleaner if I store it as well HAHAHA
97 (commented on own PR)
Good point....I totally forgot Im already storing it in storage HAHAH changed accordingly!
98 (commented on own PR)
Oh right, it actually does HAHA changed accordingly
99 (commented on own PR)
got it,moved the String modToCheckAgainst outside of the loop
100 (commented on own PR)
HAHAHA thanks, changed accordingly
101 (commented on own PR)
okay roger! I think i'll open up another PR to fix all the java docs separately to avoid over crowding this one
102 (commented on own PR)
Updated accordingly!
103 (commented on own PR)
Oh ya good point, ok added in the module specific part, and the writing part
104 (commented on own PR)
tyty xDDDD
105 (commented on own PR)
o dang, didnt know about this HAHAH changed accordingly!
106 (commented on own PR)
Roger, changed accordingly
107 (commented on own PR)
oh right my bad....HAHAH forgot to update accordingly. Updated!
108 (commented on own PR)
ya my bad HAHAH, I was trying to say it will eventually have those 2 storages. phrasing is bad on my part. I changed it to uninitialised storage attributes w/o the names, to make it clearer.
109 (other comment)
Great find guys, I've edited accordingly to your comments. Thanks 😃
110 (other comment)
LGTM!
111 (other comment)
LGTM!
112 (other comment)
LGTM! (apart from very minor comment)
113 (other comment)
As per Sam's reviews, I have made some changes to the PR.
The major changes are as such:
RequiredCommandStorage
Added this class to deal with all the pulling of modules from the respective JSON files.
RequiredCommandMessages
Added this class to store all the standard messages and paths that the RequiredCommand will use.
RequiredCommand
Changed the class such that it no longer has to deal with storage of the required modules! It now simply uses Getter methods from the RequiredCommandStorage to get the respective modules from the various fields.
The class now mainly deals with all the comparison of GradPad modules against all the required modules.
ScienceCommand
RequiredCommandTest
Changed the tests to suit the new methods
RequiredCommandStorageTest
Added the test class to test the new RequiredCommandStorage
class.
114 (other comment)
Updates:
Updated code as per team review.
Notable changes:
Added more preclusion modules.
Now, only the isModuleAPreclusion() method will deal with the preclusion map.
To deal with modules that have multiple preclusions, the map now stores a String of all the precluded modules
and in order to check if the module is a preclusion, a contains() check will be done to see if that module is within the
String of all precluded modules.
@zhiayang
(48 comments)1 (commented on others PR)
sure, makes sense
2 (commented on others PR)
will fix
3 (commented on others PR)
i wasn't smart enough to think of this at the time
4 (commented on others PR)
doesn't compile, looks like we both need to retake 2030
5 (commented on others PR)
yes, it is designed to modify its input arguments. this wouldn't be necessary if java had some semblance of decent features after 14 versions, like pattern matching;
this is how i use bisect in a proper language:
std::string_view x;
std::string_view xs;
std::tie(x, xs) = util::bisect(input, ' ');
if(x.empty()) return { };
if(x[0] == '@')
{
parse_tags(msg, x);
std::tie(x, xs) = util::bisect(xs, ' ');
}
if(x[0] == ':')
{
parse_prefix(msg, x);
std::tie(x, xs) = util::bisect(xs, ' ');
}
unfortunately this can't be done in java (there's no std::tie
equivalent, nor can there ever be). rather than introduce loads of syntactic noise by needing to (a) declare a pair to store the bisectionr result; (b) declare or assign a variable for the first part; (c) declare or assign a variable for the second part, it is more convenient this way.
besides, bisect()
clearly documents its mutating behaviour.
6 (commented on others PR)
for this kind of boolean parameter, i suggest doing something like this:
return new CommandResult(SHOWING_HELP_MESSAGE, /* showHelp: */ true, /* exit: */ false);
so that it's easier to see what the true
and false
mean without going into the definition of the class/function.
7 (commented on others PR)
sm0l style issue but there should probably be a newline here
8 (commented on others PR)
another small thing but probably it'll be easier to define the commandResult
only when you need it (ie. on line 43 instead of 41)
9 (commented on others PR)
this isn't c89 can you please define the int
in the correct place
10 (commented on others PR)
is this better named currentIndex
11 (commented on others PR)
is it possible to make this a List>IngredientRef>
(or a List>JsonAdaptedIngredientRef>
) or something? feels a bit fragile to be storing it as name (qty)
as a string in the json file
12 (commented on others PR)
return Quantity.parse(words[1])
.map(qty -> new IngredientReference(words[0], qty);
13 (commented on others PR)
surely you meant words[0]
here since you want the name? (line 39)
14 (commented on others PR)
can use Mass.grams(10)
so you don't need to unwrap the Result
15 (commented on others PR)
not done yet ah
16 (commented on others PR)
wait a minute, isn't this file a duplicate of the CommandDispatcher
17 (commented on others PR)
ups
18 (commented on others PR)
can we just use String.format
for this instead of this stringbuilder nonsense
19 (commented on others PR)
isn't this just this.isSame((Entry) other)
20 (commented on others PR)
what's with this monkaMEGA indentation
21 (commented on others PR)
doesn't this regex mean tag names can't contain spaces?
22 (commented on others PR)
eh i dun understand why y'all love to copy-paste this equals method with these same useless comments
23 (commented on others PR)
did you forget that you had Tag::getTagName()
24 (commented on others PR)
maybe you should make a smol nested helper class for this
25 (commented on others PR)
pog
26 (commented on others PR)
shouldn't this also check if the item was a number? wouldn't you want to let the user do view #3
for example
27 (commented on others PR)
I changed all of these to assertions a while ago, this should probably be changed too
28 (commented on others PR)
this should be kind.equals("Expiry date")
29 (commented on others PR)
feels a bit dubious but maybe you should make static methods instead to handle these cases?
30 (commented on others PR)
forgot to change
31 (commented on others PR)
same thing with the constructor
32 (commented on others PR)
forgot to change
33 (commented on others PR)
obv you copied this from somewhere else now
34 (commented on others PR)
update the comment leh, since you clearly expect named arguments
35 (commented on others PR)
isn't this format inconsistent with the rest? ie. yyyy-MM-dd
36 (commented on others PR)
same date thing here
37 (commented on others PR)
wait why are there two types here? isn't >T extends Usage>
enough...?
38 (commented on others PR)
shouldn't this check that it's instanceof StatsRecipeMostCookedCommand
also? though idk who tf is out there calling .equals()
on instances of Command...
39 (commented on others PR)
ya since the class don't have any attributes i suppose any StatsRecipeMostCookedCommand
is equal to any other StatsRecipeMostCookedCommand
tbh i pikachu also
40 (commented on others PR)
what are you doing the picture is alr there 4 lines below
41 (commented on others PR)
you did NOT just check in a merge conflict
42 (commented on others PR)
this should be a 3-# header.
43 (commented on others PR)
pls change thanks
44 (commented on others PR)
excellent use of xml
45 (commented on others PR)
wow
46 (commented on others PR)
very model view controller
47 (commented on others PR)
cmon rename this to ied
48 (commented on others PR)
s/delete/edit/
49 (commented on own PR)
less typing. as you know typing places strain on your wrist, which is bad for health <- cwf="C:\repos\nus-cs2103\dashboards-base\contents\cs2103\tp-comments-panels.mbdf"> var
is good for health
ok but most of the time, var
is used either (a) when the type is obvious, like this:
var foo = new SomeOverlyLongClassName();
// versus:
SomeOverlyLongClassName foo = new SomeOverlyLongClassName();
and (b) when the type is not important, like in this case. explicitly writing Map.Entry<Optional<ExpiryDate>, Quantity>
is tedious and doesn't contribute anything to the clarity of the code.
</->
50 (commented on own PR)
It's just to act as a base class for the 3 sub-edit-descriptors, which was necessary cos of the way i wrote parseEditCommand
51 (commented on own PR)
5head
52 (other comment)
pog
53 (other comment)
Looks good to me 👍. Thank you for your contribution!
54 (other comment)
Looks good to me 👍. Thank you for your contribution!
55 (other comment)
Looks good to me 👍. Thank you for your contribution!
56 (other comment)
Look good to me 👍. Thank you for your contribution!
57 (other comment)
Looks good to me 👍. Thank you for your contribution!
58 (other comment)
Looks good to me 👍. Thank you for your contribution!
59 (other comment)
Looks good to me 👍
60 (other comment)
Closed by #43
61 (other comment)
Closed by #38 and #40
62 (other comment)
ready for merge
63 (other comment)
ready to merge
64 (other comment)
Closed by #40
65 (other comment)
Closed by #38
66 (other comment)
looks good to me, blah blah etc. etc thumbs up
67 (other comment)
Closed by #52
68 (other comment)
Closed by #52
69 (other comment)
ups
70 (other comment)
Looks good to me 👍
71 (other comment)
hmm, yea that makes sense. but idk if we’re gonna put some sample data by default like AB3?
but ya either way i think should have some getting started text on that page, but maybe only the first launch bah
72 (other comment)
i don't actually know why there's a need for regex validation, especially now that the regex is just all ascii.
also why can't i name my recipe お握り
73 (other comment)
cool
74 (other comment)
sorry i mean
LoOkS GoOd tO Me! 👍 ThAnK YoU FoR YoUr cOnTrIbUtIoN!
75 (other comment)
ready to merge
76 (other comment)
Duplicate of #76
77 (other comment)
oops
78 (other comment)
branch is even with master, plz merge
79 (other comment)
done
80 (other comment)
ez
81 (other comment)
ah, this is a good solution.
82 (other comment)
btw doing closes A, B, C, and D
only marks A
as being closed by this pr
83 (other comment)
cool
84 (other comment)
👍
85 (other comment)
👍
86 (other comment)
👍
87 (other comment)
👍
88 (other comment)
👍 regarding the first keypress, is it possible to just set the command box to be focused by default when the app starts?
89 (other comment)
👍
90 (other comment)
also, the RHS of the addition (here, '5') should probably be the combined quantities of the entire set of ingredients, cos right now it only prints for the first (or last -- or something) set. (i had 29 blueberries)
91 (other comment)
👍
92 (other comment)
@hjl99 i think it should be fine to follow from the other commands? something like
filter [/tag >TAG_KEYWORD>]... [/ingredient >INGREDIENT_KEYWORD>]...
? then below just say you need at least one of them
93 (other comment)
👍
94 (other comment)
👍
95 (other comment)
👍
96 (other comment)
👍
97 (other comment)
👍
98 (other comment)
👍
99 (other comment)
👍
100 (other comment)
👍
101 (other comment)
👍
102 (other comment)
👍
103 (other comment)
👍
104 (other comment)
👍
105 (other comment)
Closed by #191
106 (other comment)
This has been (partially?) mitigated by #198
107 (other comment)
yes boss
108 (other comment)
@seowalex can you make the "see the User Guide for a list of commands" part link to the command summary instead? teh href is CommandSummary
.
109 (other comment)
like we said jn feel free to work on this, but i think we'll put feature freeze on (next) friday night.
110 (other comment)
Closed by #202
111 (other comment)
Will change ItemReference.parse
to fallback to referring by name if the input doesn't strictly follow #[0-9]+
. This lets you have recipe names like #1a
, #10 asdf
, etc. It will still error when trying to do #-1
, so that is fine.
112 (other comment)
Closed by #202
113 (other comment)
Duplicate of #215, since we can't edit ingredients
114 (other comment)
Intended behaviour
115 (other comment)
Favourites have been yeeted
116 (other comment)
Duplicate of #217
117 (other comment)
Tracked by #147
118 (other comment)
This includes adding/deleting tags to/from ingredients
119 (other comment)
wtf is this
120 (other comment)
Tracked by #243
121 (other comment)
Tracked by #243
122 (other comment)
Duplicate of #213
123 (other comment)
Tracked by #243
124 (other comment)
Duplicate of #227
125 (other comment)
Probably related to the logger being 3Head. Will mitigate by wrapping log methods, and wrapping the actual logger call in a try catch.
126 (other comment)
We'll change it to make recipe
and view recipe
127 (other comment)
Tracked by #243
128 (other comment)
We'll keep it the way it is, I think each UI component has enough text to warrant its own subsection.
129 (other comment)
Related to #205
130 (other comment)
EDIT: was not related to the logger being 3head.
131 (other comment)
👍
132 (other comment)
👍
133 (other comment)
duplicate of #251
134 (other comment)
also, recipe view doesn't "start to scroll" if items are added offscreen. repro:
start with some N recipes that fit entirely in the view without scrolling
start adding a few recipes. since we switch to the recipe detail view, the recipe list view is hidden
go back to the list view (in any way); the recipes now exceed the window height, but the view can't be scrolled
it starts scrolling only when the window is resized
135 (other comment)
Incomplete; autocompletion will not escape the name, causing issues
136 (other comment)
👍
137 (other comment)
All tests that use assertCommandSuccess
also test for undo now, as well as some other tests that I wrote, so i'm closing this for now.
138 (other comment)
First and second problems are WONTFIX. Third issue tracked by #263
139 (other comment)
Duplicate of #233
140 (other comment)
Ref #207
141 (other comment)
you can talk about implementing the command part of the editing recipes too
142 (other comment)
I changed some of the stats stuff so please deconflict carefully
143 (other comment)
my bad
should be a 3-liner at MainWindow.java:164
144 (other comment)
Will update the UG accordingly in #286
145 (other comment)
Mostly fixed by #286, missing the GUI annotations in the beginning.
146 (other comment)
Closed by #293
147 (other comment)
Postponed to 1.5
@claracheong4
(46 comments)1 (commented on others PR)
Change e to to another more descriptive name?
2 (commented on others PR)
Similarly for this, change e to a more descriptive name.
3 (commented on others PR)
change address to description
4 (commented on others PR)
change address to description
5 (commented on others PR)
Should we remove all the tutorials?
6 (commented on others PR)
change to package seedu.momentum.logic.commands;
7 (commented on others PR)
Do we really need to store the entire project object in a timer?
8 (commented on others PR)
Maybe we generate and use an unique project id?
9 (commented on others PR)
calculate looks quite long, maybe you can abstract out some of the logic here?
10 (commented on others PR)
I think the @param should end with a full stop.
11 (commented on others PR)
The method is > 30 lines. I see you tried to reduce the length of the method with combinePredicates but I think you can abstract more of the logic.
12 (commented on others PR)
Similarly, full stop for @param
13 (commented on others PR)
Here also the full stop for @param
14 (commented on others PR)
.
15 (commented on others PR)
Maybe you can store "Kurz Elle Kunz" as a String variable since you used it more than once in this class?
16 (commented on others PR)
Similarly for the starbucks elephant cats here
17 (commented on others PR)
And friends owesMoney here
18 (commented on others PR)
Similarly for "\\s+"
19 (commented on others PR)
Similarly for "Alice Bob"
20 (commented on others PR)
Store the array as a private static variable also?
21 (commented on others PR)
Also for the "Alice Bob" in this class
22 (commented on others PR)
Maybe change the getFormatted method in deadline to return no deadline set when there is no deadline instead so that a project does not have to know whether it has a deadline.
23 (commented on others PR)
New line needed before @throws
24 (commented on others PR)
Make name implement a comparable instead?
25 (commented on others PR)
The method is quite long, maybe extract this into another method?
26 (commented on others PR)
similarly for this
27 (commented on others PR)
and this?
28 (commented on others PR)
. for @params
29 (commented on others PR)
Also for this
30 (commented on others PR)
Empty @return
31 (commented on others PR)
line before @param
32 (commented on others PR)
line before @param
33 (commented on others PR)
Add some javadocs for this class?
34 (commented on others PR)
Similarly for this class?
35 (commented on others PR)
Implement the conversion from enum Timeframe to ChronoUnit in the enum class instead then call the method here?
36 (commented on others PR)
Override toString method in TimeFrame to something like name().charAt(0) + name().substring(1).toLowerCase()
?
37 (commented on others PR)
@throws should end with a .
38 (commented on others PR)
.
39 (commented on others PR)
.
40 (commented on others PR)
.
41 (commented on others PR)
.
42 (commented on others PR)
.
43 (commented on others PR)
.
44 (commented on others PR)
new line
45 (commented on others PR)
missing @return
46 (commented on others PR)
.
47 (commented on own PR)
fixed
48 (commented on own PR)
fixed
49 (commented on own PR)
I think 8 spaces not 4. Changed to 8 spaces.
50 (commented on own PR)
Hmm I don't think is matters
51 (commented on own PR)
Name is not optional right?
52 (commented on own PR)
maybe just include as coming soon
53 (commented on own PR)
Fixed
54 (commented on own PR)
Hmm not sure
55 (commented on own PR)
Changed to edit
56 (commented on own PR)
Yeahh we should
57 (commented on own PR)
Yupp
58 (commented on own PR)
Not sure, but if we add a bunch examples, then a table would be like 1 line | a lot of lines
59 (commented on own PR)
Fixed
60 (commented on own PR)
Fixed
61 (commented on own PR)
Fixed
62 (commented on own PR)
This is to show deletion of a deadline so the deadline "created" is an empty one.
63 (commented on own PR)
It's just the work of reformat code to align with the next @param
64 (commented on own PR)
I'm not sure, both will have the same behaviour but its more of a parse error than unable to execute command error since it is related to validity, but this will make the overall design better?
65 (commented on own PR)
I think the main reason to include check for created date is to ensure that we will never run into a utc offset problem, rather than making sure the deadline is actually after the created date and we are also not currently storing the created time. So I think its fine since only the created date is stored as long as the date of the deadline is later than created date we can just take it as valid.
66 (commented on own PR)
Anyways I decided to change it
67 (commented on own PR)
There is no reference to the Project class in CompletionStatus thou
68 (other comment)
Time is compulsory for LocalDateTime in java.time so unless a dummy time is added in, LocalDateTime cannot be used.
I think it would be cumbersome to try to differentiate between the dummy time and the actual time if any. I think this mainly has to do with the backend part.
Then since the time and date is separated, it would easier to parse them separately.
69 (other comment)
I think I will create a general date superclass then make datetime, date and time inherit from it.
70 (other comment)
After checking the hierarchy of java.time, I realised the only common class ancestor of Date, Time and DateTime is java.lang.Object but they do implement similar interfaces. So I decided to make Date, Time and DateTime to implement a common Instance interface instead of a common class. And also if Date and Time inherit from the same class, it would imply that Date and Time is comparable.
71 (other comment)
I thought that this was the desired behaviour?
For 2 projects to be considered as duplicate, it needs to be created on the same date.
72 (other comment)
So no prefix will mean match any be default?
73 (other comment)
By default the tasks are grouped by incomplete then complete, then sorted by created date. Thus, this is the correct behaviour. To disable this, c/ should be added after sort type/created
74 (other comment)
By default the projects are grouped by incomplete then complete, then sorted by created deadline, this is the correct behaviour. To disable this, c/ should be added after sort type/deadline
75 (other comment)
By default the projects are grouped by incomplete then complete, then sorted by deadline, this is the correct behaviour. To disable this, c/ should be added after sort type/deadline
76 (other comment)
The reminder panel cannot be shown directly using the show command. It will only be shown automatically at the date and time of the reminder. The only supported functionality for the show command is the hide the reminder panel after it is shown.
77 (other comment)
Fixed
78 (other comment)
Fixed
79 (other comment)
I don't think that this is a typo, the intended effect would be for prefix dd/ there could be a DEADLINE_DATE an optional DEADLINE_TIME with prefix dt/. In other words, dt/DEADLINE_TIME is part of dd/DEADLINE_DATE.
80 (other comment)
Fixed
81 (other comment)
I think we didn't update the docs after changing it.
82 (other comment)
Fixed
83 (other comment)
I think we didn't update the user guide after changing it.
84 (other comment)
Seems like a typo in the user guide. Fixed
85 (other comment)
Fixed
86 (other comment)
I think this might be similar to the issue with Clock.now() not working for java CI.
87 (other comment)
By default the tasks are grouped by incomplete then complete, then sorted by deadline. Thus, this is the correct behaviour. To disable this, c/ should be added after sort type/deadline
88 (other comment)
I think we didn't update the user guide after changing it.
89 (other comment)
The reminder panel cannot be shown directly using the show command. It will only be shown automatically at the date and time of the reminder. The only supported functionality for the show command is the hide the reminder panel after it is shown.
90 (other comment)
Add extra tests according for codecov (mainly equals methods not covered)
91 (other comment)
The is a real problem. Not only the tags pane resize unexpectedly, the other panes in the sidebar resizes
92 (other comment)
I think the show component command also cannot be undone
93 (other comment)
I think there are still some full stops missing that I didn't comment mainly for the @returns
@ZhangWanlin98
(45 comments)1 (commented on others PR)
Do we need to have 2 add
here? coz it looks a bit weird from the preview
Will it be better if we separate the command word add
with the example into 2 lines?
Or can just delete the 2nd add
to just have a command word + command body format
2 (commented on others PR)
would help page of Nuudle
be better? or just another way to avoid not using 's
3 (commented on others PR)
would the method name be better if it sounds like a question?
like isAppointmentOverlapping
4 (commented on others PR)
it might be better if this public method could have a javadoc
5 (commented on others PR)
That is possible.
Although the initial purpose of the DateTimeLoader class is just improve the OOP for the AssignCommandParser to pass the date and time, we can make it into an inheritance or other implementation to broaden the usage when necessary
6 (commented on others PR)
If you want to get rid of the AssignCommand.
, I guess it would better to import the DateTimeLoader
class so the code looks more precise.
7 (commented on others PR)
Will the white space be too much?
8 (commented on others PR)
do we still follow the user guide? coz from there the done should be with the use of the AppointmentId, so maybe it would be better to use AppointmentId class instead of dateTimeLoader?
9 (commented on others PR)
I think this should be NuudleParser
?
10 (commented on others PR)
The package name should be nuudle?
Since here is for the entire project
11 (commented on others PR)
I think the VersionedPatientBook
also? Since the undo/redo includes the appointment
12 (commented on others PR)
PatientBook
should be Nuudle
?
13 (commented on others PR)
I have another idea tho.
Do we actually need to check the overlapping of target and editedAppointment? I feel not checking makes more sense to the reality where the patient just want to shift the appointment a bit forward or backward.
Let me know what you think about this 👍
14 (commented on others PR)
Should the name be WithIn
be one word? like Within
15 (commented on others PR)
[REMARK]
should be without square bracket?
16 (commented on others PR)
I'm not sure about this, but usually there is no space between prefix (r/
) and content (Likes to swim
) right?
17 (commented on others PR)
I think we need a short description before the @param
?
18 (commented on others PR)
I think this should catch ParseException
since the parseIndex
throws it and no mention about IllegalValueException
I went to check and found out that actually we have not tested this try and catch block for other commands.
I guess we can add in V1.4.
19 (commented on others PR)
Good effect for all remarks! 🤣
20 (commented on others PR)
Oh that makes sense 👍
21 (commented on others PR)
I would think that we should disable cancel
if the date of the respective appointment to be cancelled is alright passed since there is no point to cancel an appointment which is already in the past.
However, I think it would be different for done
since there may be cases that the admin forgets to mark done and just lets it expire. done
allows for the correction.
How about the rest?
22 (commented on others PR)
should be checks
?
23 (commented on others PR)
is period needed here?
24 (commented on others PR)
Thanks for the correction 👍
25 (commented on others PR)
The space between addressBook
and the ...
is too much?
26 (commented on others PR)
Should be Creates
?
27 (commented on others PR)
I think can remove at
?
Just like the one in DateParserUtil.java
28 (commented on others PR)
have
should be singular?
29 (commented on others PR)
I would think this helps abstract information.
The only problem is that we need to arrange it well.
Maybe we can clean it up in some time.
30 (commented on others PR)
Sorry that I'm a bit confused why all the numbering is 1
?
Is it supposed to be that?
31 (commented on others PR)
Would a short description of the method be better?
32 (commented on others PR)
I have to say it too!
It solves the warning from get()
of Optional
!
Thanks for the enlightenment.
33 (commented on others PR)
🤣
How about we take out our code of the EditAppointmentDescriptor
and DurationSupporter
to have a common class!
34 (commented on others PR)
Should we check in the other way?
Coz in this case, the command can be successful with even just one of the prefix content present. Hence isPresent()
should be used instead of isEmpty()
I think you can refer to the EditCommandParser
class
What do you think? 👍
35 (commented on others PR)
would present tense be better?
36 (commented on others PR)
Should Get
be Gets
?
37 (commented on others PR)
Should Archive and remove
be Archives and removes
?
38 (commented on others PR)
Woh, @see
is a new thing to me.
Cool! 👍
39 (commented on others PR)
Shoud it be Gets
here?
40 (commented on others PR)
Should we paste the description here instead of give a reference?
41 (commented on others PR)
Should here be Creates
?
42 (commented on others PR)
Is a Javadoc missing here? or it is too obvious?
43 (commented on others PR)
This is definitely a great test! 👍
44 (commented on others PR)
Good deal with the punctuation 👍
45 (commented on others PR)
I agree with Jinhao about this point 😄
46 (commented on own PR)
alright!
47 (commented on own PR)
Yes, thanks for pointing out
48 (commented on own PR)
Yup, I did use PREDICATE_SHOW_ALL_APPOINTMENT
, but just due to bugs of ystd, I doubted it was related to it so I changed. After solving the bug, forgot to add back.
Thanks for the suggestion!
49 (commented on own PR)
Hence, it actually indicates an invalid command format if PREFIX_DATE is empty as it would mean that something else is written
@Avalionnet yup, I covered empty arg in the switch cases in NuudleParser, which is just list other one word command
but now I have changed to cover it in the ViewCommandParser
I think both ways are good, what yall think?
50 (commented on own PR)
Thanks guys!
Yes that is good indeed, I have changed it.
51 (commented on own PR)
Good spot and thank for pointing them out!
52 (commented on own PR)
Definitely!
And I just realized that use in minutes
to express it 🤣
I think that is simpler and clearer?
53 (commented on own PR)
Haha, you too!
54 (commented on own PR)
Good job reviewing all my codes 👍
55 (commented on own PR)
Oh, this UI part has been done by Yang Yue, so I guess this one can just ignore.
56 (commented on own PR)
Good spot!
57 (commented on own PR)
Oh this part is supposed to be Ming Lim's, I accidentally touched it.
58 (commented on own PR)
my pleasure 👍
59 (commented on own PR)
This is definitely better!
60 (commented on own PR)
Thanks for bring this up!
61 (commented on own PR)
thanks for the advice!
62 (commented on own PR)
I don't think we need to give an example here since we are reminding the user to enter a date, it is not that they don't know how to enter the date.
How do the rest think?
63 (commented on own PR)
if using the CLOSING_TIME - OPENING_TIME
, there will not be a ParserException
if the user enters something smaller than the limit but still out of operation hour, since this will only give an error for ending time is before start time in the appointment that cannot be viewed in jar.
64 (commented on own PR)
so I just keep it and change the ChangCommand
also?
65 (other comment)
Hmm if I remember correctly, we are required to use lowercase for naming our profile image file. Do check it up before merging!
Noticed. Changes have been made 👍
@dhafinrazaq
(45 comments)1 (commented on others PR)
should this be mid-v1.2?
2 (commented on others PR)
okay agree
3 (commented on others PR)
I got the same warning and also mentioned here: https://github.com/nus-cs2103-AY2021S1/forum/issues/232
(it's an error log output). So this should be fine
4 (commented on others PR)
Should the parameter name be client instead of Client?
5 (commented on others PR)
Should the parameter name be clients?
6 (commented on others PR)
should Clients be clients?
7 (commented on others PR)
ohh, if the checkstyle version/file in both GitHub and IntelliJ are already configured properly but the outputs are different, I'm not sure which one to follow. Perhaps @benclmnt have a suggestion regarding this code quality?
8 (commented on others PR)
I think this is what wei jie means. Perhaps you can change these jsons from "Clients" to "clients"
9 (commented on others PR)
Or should we ignore the GitHub's checkstyle warning for now and merge, and fix it along the way?
10 (commented on others PR)
Should this be FitEgo?
11 (commented on others PR)
Should this be Clients or clients? (for consistency)
12 (commented on others PR)
should the name be something like "hasFunctionToRun"?
13 (commented on others PR)
Should this be non-public?
14 (commented on others PR)
should this be session builder? noticed the same cases in this file as well
15 (commented on others PR)
should the variable name index be changed? since there are 2 "index"
16 (commented on others PR)
just curious, any reason why this takes in LocalDateTime instead of String (since the other with__ takes in string)?
17 (commented on others PR)
in terms of consistency with the other with__ methods, should we pass the String? What do you all think?
18 (commented on others PR)
should FitEgo shows list of client and session?
19 (commented on others PR)
should this be inside [] to show this is optional?
20 (commented on others PR)
are these 2 fields used? In editClientDescriptor, the index of the entity that we want to edit is not included. Only the fields that might be changed due to the edit command are included
21 (commented on others PR)
will this throw NoSuchElementException if the input does not include su/...
? This issue arises when implementing payment/adding schedule remark features. I think would be better not to declare it here, since if the schedule remains unedited, it's already handled in line 71
22 (commented on others PR)
Should these 2 lines be wrapped in a try-catch block, like the EditSessionCommandParser and EditClientCommandParser to check whether the clientIndex or sessionIndex is missing?
23 (commented on others PR)
should the edited field, i.e. updateSessionIndex be encapsulated in editScheduleDescriptor?
24 (commented on others PR)
should this takes in updateSessionIndex
only? since the field that would be edited is only session index (for now)
25 (commented on others PR)
should updatedSessionIndex be encapsulated in editSchedDescriptor?
26 (commented on others PR)
for consistency, do we need to add what is contained in the client?
27 (commented on others PR)
command change to commands?
28 (commented on others PR)
should we write "commands" instead of command?
29 (commented on others PR)
should we include "weight measured"?
30 (commented on others PR)
this might change if we want to use ses
and sch
31 (commented on others PR)
should we say duration is in minutes?
32 (commented on others PR)
should this be session list?
33 (commented on others PR)
Would this mean we need to have this extension in every command? (extension if we have a missing argument)
34 (commented on others PR)
now pd/paid or pd/unpaid
35 (commented on others PR)
to keep this consistent, should there be no space before ":"?
36 (commented on others PR)
I don't know which one is better, "value" (used in most classes), or "weight"
37 (commented on others PR)
shd this call isValidWeight?
38 (commented on others PR)
this is still understandable to me, but would it be confusing to call 2 methods with the same name? For other objects, usually we call .getName().value (but value shdn't be public).
so another possible naming is getValue().
39 (commented on others PR)
yes. but actly doesnt really matter
40 (commented on others PR)
should this check with all sessions in fitego, instead of just those that are shown?
41 (commented on others PR)
in case they think Schedule List is the "today's schedule" in home page and to be more consistent, would it be better to be
"The Schedule already exists in FitEgo"?
for duplicate client: "This Client already exists in the address book."
42 (commented on others PR)
based on another kelvin's comment, then this one might be "on the right"
43 (commented on others PR)
should the second session start with capital s?
44 (commented on others PR)
not sure about this, but should we wrap the folder name (images and data) in a code
format or some quote?
45 (commented on others PR)
probably I mistyped here, could you change this into "the first session in"...
46 (commented on own PR)
Is it better if I change it into:
Use case: UC03 - Edit a Client
MSS:
1. User requests a list of Clients using `clist` (UC02) or `cfind` (UC04)
..the rest
47 (commented on own PR)
done
48 (commented on own PR)
sessionIndex is the previous index (index of session to change)
the reason I delete the updatedSessionIndex is because it is already contained in the descriptor (since this is an optional field). also, I'm afraid that if we have updatedSessionIndex in both command and descriptor, we must ensure both of them are the same
@benclmnt any comment?
49 (commented on own PR)
thanks for spotting them, that was auto-filled by IntelliJ (because ModelStub implements Model).
I'll change it
50 (commented on own PR)
yep, it represents phone in add client cmd. Do you have any suggestion for this?
im thinking of paid/ or pay/, but afraid that those are too long
51 (commented on own PR)
i think maguire is editing this part
52 (commented on own PR)
yes, it works even without the true. not sure why @benclmnt also have the true in the cmd usage message
53 (commented on own PR)
oh @kelvinvin 's suggestion is to have the else to make it clearer
so make it like the prev commit?
54 (commented on own PR)
is this too technical/revealing the implementation?
55 (other comment)
should the find feature be implemented later? Also, the current AB3 only supports search by name
56 (other comment)
Is this like adding a new command? If yes, should this be for v1.2 or mid-v1.2?
57 (other comment)
The division of 3 sections is in the other PR. Should we bold the nextSession line?
sorry just read this. both bolded/not bolded looks good for now
58 (other comment)
Some things to take note:
1. Command has been changed from "[c/CLIENT] [s/SESSION]" to "[INDEX] [s/SESSION]" which makes more sense.
2. 1 issue which is that when the input session is higher than the total number of session, there's an exception on the terminal but nothing is being printed on FitEgo. The issue is with RescheduleCommand only having the [INDEX] which takes care of the problem when [INDEX] > total schedules, but in Parser, I'm not able to retrieve the filteredSessionList as it requires Model to retrieve it, so FitEgo can't detect the issue when input session is higher than total sessions.
3. Testing for this Reschedule is not fully up yet because there isn't a ScheduleCommandTestUtil class, not sure if this is required because now it's a bit tricky in a sense that Schedule contains Client and Session while RescheduleDescriptor contains clientIndex and sessionIndex of Index class. If RescheduleDescriptor were to contain Client and Session, it should be easier but in RescheduleCommandParser, similar to issue 2 above, I'm not able to retrieve the filteredSessionList as it requires Model to retrieve it.
try to detect the issue in command.execute() instead of parser?
59 (other comment)
A good feature to have. will the implementation be like inside DeleteSessionCommand, iterate through the model's ScheduleList?
60 (other comment)
looks good
61 (other comment)
solved
62 (other comment)
Should PR from branch
63 (other comment)
i've implemented some of my suggestions from here to my payment PR
feel free to try that feature and see if there is any unecessary changes made
64 (other comment)
Can anyone check if this is correct? The new diagram is a bit different
Before:
Now:
65 (other comment)
Looks good generally
resolved
66 (other comment)
added just now
67 (other comment)
Scroll down, and I think the example will be shown
68 (other comment)
@maguireong maybe can do the edit schedule (reschedule)
i'll do the schadd
69 (other comment)
i think shd fix the isIdentical to check if same email or phone
70 (other comment)
will change to invalid format
71 (other comment)
this means need change in almost all fields (remark, tags, etc)
72 (other comment)
fixes #189 #184
73 (other comment)
fixes #183
74 (other comment)
I think either "all clients should be All Clients"
or "Listing is not the correct word"
75 (other comment)
fixes #234
76 (other comment)
fixes #198
@jeannetoh99
(44 comments)1 (commented on others PR)
This is also used for Travel Plan name!
2 (commented on others PR)
Name is also used by TravelPlan, not just TravelPlan object. Maybe we can add that in?
3 (commented on others PR)
Maybe here can also implement Predicate>TravelPlan>, then we can overload the test method with test(TravelPlan tp) as well?
4 (commented on others PR)
I meant implements Predicate>TravelPlanObject>, Predicate>TravelPlan>
since a class can implement more than one interfaces.
5 (commented on others PR)
As for this, 2 separate (overloaded) test methods:
public boolean test(TravelPlan travelPlan)
and public boolean test(TravelPlanObject tpObject)
6 (commented on others PR)
I think this should be return the Travelplanner?
7 (commented on others PR)
What is the reason for this change? Previously I changed it to Graph so that it allows for names with some punctuations, such as "Alice's Home", i also tested it so it was working.
8 (commented on others PR)
I see, then can change to "(\\p{Alnum}\\p{Graph}*\\p{Space}?)+"
? Because I have multiple test cases with names that includes punctuation.
9 (commented on others PR)
Maybe can change to "The wishlist only stores activities, not accommodations or friends!". If not it sounds like the accommodations and friends of wishlist is empty.
10 (commented on others PR)
Is this additional newline intentional? (There's two empty lines in a row)
11 (commented on others PR)
Maybe can add a Javadoc comment here. "Takes the value -1 if no tab changes are required. Otherwise, represents the index of the tab to set the travelPlanObjectListPanel to."
12 (commented on others PR)
Don't have to change now, but maybe we should store these constants under the respective classes (i.e. Activity, Accommodation and Friend class) as TPO_WORD, since we are referring to these strings in multiple other classes. Similar to COMMAND_WORD.
13 (commented on others PR)
Class is missing JavaDoc. I'm not sure if this is allowed since it passes CI?
14 (commented on others PR)
Class is missing JavaDoc here as well.
15 (commented on others PR)
should we use {@code ParseException} here instead of seedu.address.logic.parser.exceptions.ParseException?
16 (commented on others PR)
Missing JavaDoc for this method.
17 (commented on others PR)
I think I added a space after Activities on purpose previously, so that the tabs are more spaced out.
18 (commented on others PR)
Is this additional new line intentional? Sorry I'm abit OCD, can ignore if you are okay with it!
19 (commented on others PR)
I think this part it's okay, since travelPlanObjectType for ShowCommand should not be -1. Maybe it would be clearer to throw this exception in the constructor instead of here. Same for the exception above.
20 (commented on others PR)
The space supposed to be after though.. HAHA
21 (commented on others PR)
Can use the {@code ParseException} syntax instead of just the string?
22 (commented on others PR)
travelPLanObjectType spelt with capital L by accident I think. Same throughout this file.
23 (commented on others PR)
Is the additional line here intentional?
24 (commented on others PR)
Just clarifying here, what's there TODO here?
25 (commented on others PR)
Yea yixian is right.... HAHA it's the name of the travelplans in the travelplanner panel
26 (commented on others PR)
can use constants to name numbers?
27 (commented on others PR)
Returns instead of Return? And not sure if there should be a full stop here.
28 (commented on others PR)
Not sure if there should be a full stop here.
29 (commented on others PR)
Should it be:
List>String>
) and return true if there is any match with Nameable.getName().name
30 (commented on others PR)
Can this be implemented in model instead? Then call the model method instead of accessing travelPlan methods here directly. Treat model as a facade.
31 (commented on others PR)
Same comment as above! 😃
32 (commented on others PR)
Not this line, but for line 97, can change "person" in the javadoc comment to accommodation?
33 (commented on others PR)
I think userguidess is misspelt
34 (commented on others PR)
include move and copy under wishlist, and exit and help under both.
35 (commented on others PR)
Is this a clearer phrasing?
"Please go to your desired travelplan to edit friend, activity or accommodation, using the goto command.";
36 (commented on others PR)
I think you accidentally added a big space here haha
37 (commented on others PR)
Can use switch case but not a big problem.
38 (commented on others PR)
Can add example to this?
39 (commented on others PR)
Should you check this outside of the switch case and just throw SortCommand.MESSAGE_USAGE instead?
40 (commented on others PR)
Yea i get why you did it, i just implemented the other way for delete to reduce code duplication haha.
41 (commented on others PR)
can rename tags to parameters? to be consistent with UG
42 (commented on others PR)
can replace this with:
assert model.hasTravelPlanObject(activityToMove, travelPlanIndex.getZeroBased()) : "Activity was not moved";
This is a new method I recently added to model. Will merge my PR soon. Can pull from upstream to retrieve.
43 (commented on others PR)
can replace this with:
assert !model.hasActivity(activityToMove) : "Activity was not deleted after moving";
This is an already existing method in model.
44 (commented on others PR)
can replace this with:
assert model.hasTravelPlanObject(activityToCopy, travelPlanIndex.getZeroBased()) : "Activity was not copied";
This is a new method I recently added to model. Will merge my PR soon. Can pull from upstream to retrieve.
45 (commented on own PR)
yeap! It's meant to be Jan, Feb, etc.
46 (commented on own PR)
I did that at first, but it failed checkstyle because apparently abbreviations must be capitalised for the first letter only.
47 (commented on own PR)
Just tested, the ListView implemented in TravelPlannerPanel implements scrolling already!
48 (commented on own PR)
Same as above too!
49 (commented on own PR)
Thanks! Updated accordingly.
50 (commented on own PR)
Updated. Thanks!
51 (commented on own PR)
We can typecast back to Travelplan to access AccommationList, if we are sure the directory is a travelplan.
52 (commented on own PR)
I think this is still considered polymorphism though?
53 (commented on own PR)
It's for testing purposes and to also remind programmers under what conditions this call should be made only. I wrote this with the intention that the programmer should only call setToAccommodationList() if the directory is a Travelplan. I was thinking about try catch, but it's not a scenario the user will face, since this should be configured by programmers (and should not happen because of user input/calls). It's also okay to write try catch, but there should not be any exception in the first place unless there is a bug in the program.
54 (commented on own PR)
if want to check can use instanceof!
55 (commented on own PR)
Thanks, updated!
56 (commented on own PR)
Updated, thanks!
57 (commented on own PR)
ok!
58 (commented on own PR)
yeap! so commands must check the directory before setting accommodationlist etc, since commands will have to know the directory to execute local commands anyway.
59 (commented on own PR)
This is to ensure the internalList does not hold the exact same copy of the TravelPlan.
60 (commented on own PR)
Not too sure if this is okay, removing it resolves execute_validIndexFilteredList_success in DeleteFriendCommandTest
61 (commented on own PR)
This is resolved in the most updated version of this PR.
62 (commented on own PR)
updated to duplicate travel plans! 😃 thanks!
63 (commented on own PR)
right!
64 (other comment)
Todo: Update to link to directory.
@siangernlow
(44 comments)1 (commented on others PR)
I think for this, it could just be "User enters the required details" since implementation details are not needed for use cases
2 (commented on others PR)
Same as the above. Instead of this, perhaps you could try "User requests to cancel the command"?
3 (commented on others PR)
I think for this, it could just be "User enters the required details" since implementation/UI details are not needed for use cases.
4 (commented on others PR)
Same as above. Perhaps you could try "User requests to cancel the command" instead?
5 (commented on others PR)
I believe bullet points are required for indentation here as well.
6 (commented on others PR)
Perhaps a new indentation would be good here?
7 (commented on others PR)
is there a typo here?
8 (commented on others PR)
Might be better to mention that this command deletes everything before and up to the given date. It may be misunderstood to just delete visits on that date itself.
9 (commented on others PR)
What might this suppress warning be for?
10 (commented on others PR)
There shouldn't be a space after the method name. Also, since this method deletes multiple visits, maybe calling it deleteVisits would be more suitable.
11 (commented on others PR)
This functionality could perhaps be moved into the for loop above? Then there would not be a need for an additional ArrayList to keep track of the visits to be deleted.
12 (commented on others PR)
argMultimap.getPreamble().isEmpty() should be !argMultimap.getPreamble().isEmpty(), otherwise the code fails.
13 (commented on others PR)
Only this part causes errors; the other comments are queries/small formatting errors.
14 (commented on others PR)
The JavaDocs for this Predicate could be clearer as this Predicate is not as straightforward as the others.
15 (commented on others PR)
Might be better to name the conditions separately with informative names as this line of code can get confusing.
16 (commented on others PR)
Now that there are three parameters for the constructors, perhaps it could be better if each parameter is tested for NullPointerException in a separate method.
17 (commented on others PR)
Typo here. Shouldn't be nullLocation but instead the parameter that is null in this method.
18 (commented on others PR)
Shouldn't date be required to be non null as well?
19 (commented on others PR)
Could this be moved to the ModelPredicate class as the predicates are being stored in that class at the moment?
20 (commented on others PR)
Is there a typo in the method name?
21 (commented on others PR)
Typo in the word 'where'
22 (commented on others PR)
Perhaps Generating could be used instead of Listing
23 (commented on others PR)
I think for this, referencing the index rather than id is required. I believe the current master branch has an example of this.
24 (commented on others PR)
There might be a typo here (extra semi-colon)
25 (commented on others PR)
As this is a public constructor, perhaps you could consider making this code more defensive by ensuring that Prefix could only be PREFIX_PERSON_ID or PREFIX_LOCATION_ID? Since a wrong argument is likely to originate from a command inputting the wrong prefix, an assert statement here should be good enough.
26 (commented on others PR)
Alternatively, checking and throwing an exception may make this constructor easier to test.
27 (commented on others PR)
Might need to add the corresponding tests for constructor related to the comment in the IndexIdPair class.
28 (commented on others PR)
Are the try-catch statements required here as the test is not supposed to fail anyway, and the parse exception isn't part of an assertion.
29 (commented on others PR)
A section describing the different icons (bulb, info, etc) is missing. Perhaps it could be slotted in between the preface and glossary?
30 (commented on others PR)
Since visits don't have a unique ID, we might want the user to note that they can only use indexes for visits.
31 (commented on others PR)
The green used for Command Result seems to blend in with the background. Perhaps you could consider using a color that stands out more?
32 (commented on others PR)
You could consider marking out the index and id in the diagram to improve readability. Something like a highlight or circling them will be sufficient in this case.
33 (commented on others PR)
As with the previous feedback on the UG, we probably should insert section headings explaining what the bullet points mean. E.g. Notice, Warning, etc. This could be done in a future PR.
34 (commented on others PR)
I think it is important to let the user know that they cannot use both indexes and IDs.
35 (commented on others PR)
Could also mention exporting to CSV and reading that CSV file in another computer here.
36 (commented on others PR)
This section is a bit information packed, perhaps you could consider adding small diagrams illustrating your points? For example, for the part about index changing, you could show an example of the same person but with a different index after say, an add operation.
37 (commented on others PR)
Could also mention that Ids used must be unique and can be of any format.
38 (commented on others PR)
To add on, a more meaningful assert would be one at the start of the method which asserts a value for a parameter taken in, rather than a variable created within the method itself.
39 (commented on others PR)
I personally feel that the explanation here could be a bit clearer as I do not understand what it means for a visit to be affected by a given visit.
40 (commented on others PR)
Similarly, what does a visit being affected mean? I don't quite understand this method
41 (commented on others PR)
This part is quite technical, so you could perhaps consider adding some diagrams? A simple diagram would suffice. Alternatively, you may provide an example with concrete numbers to bring the idea across more clearly.
42 (commented on others PR)
Small grammatical error. ... is in used
-> is in use
.
43 (commented on others PR)
Small grammatical error. In the case when the user...
44 (commented on others PR)
Is this supposed to be deleteVisit instead? It is in the DeleteVisitActivityDiagram.puml file.
45 (commented on own PR)
Yes, these methods should already be functional barring unforeseen bugs.
46 (commented on own PR)
The method was added for the following reasons:
The Person and Visit classes both have these two methods in Model - getFiltered[x]List() and updateFiltered[x]List() where x is either of those classes. As the InfoHandler class requires the getFilteredLocationList(), I felt it was apt that updateFilteredLocationList() was added as well.
Also, the addLocation method in the ModelManager requires the updateFilteredLocationList() as well.
As for the test above, the function is required to be overwritten for the ModelStub to be created.
47 (commented on own PR)
Done
48 (commented on own PR)
Done
49 (commented on own PR)
Done
50 (commented on own PR)
Done
51 (commented on own PR)
Done
52 (commented on own PR)
This equals method first tests equality using the equality method of ReadOnlyIndexIdPair (the first statement).
By comparing the prefix in IndexIdPair, we ensure that IdOpt, IndexOpt and the prefix are all equal in this case.
Currently, all tests execute successfully, so maybe you could perhaps direct me to the tests you think may be problematic as a result of the change and I'll look into it.
53 (commented on own PR)
I see. Currently, I believe the commands all use ReadOnlyIndexIdPair, so in this case, the tests should still work since the comparisons are between ReadOnlyIndexIdPairs.
Anyway, for classes that use IndexIdPair, it would be more suitable for them to compare prefixes of the IndexIdPairs as well since having a different prefix can mean that the IndexIdPair are different.
54 (commented on own PR)
I separated them because their error messages are different
55 (commented on own PR)
Done
56 (commented on own PR)
Done
57 (other comment)
When creating an issue, try to specify the part of the project the issue is meant to be working on by using square brackets in the title. If the issue does not specify anything, it is assumed to be implementation-based, i.e., related to modifying AB3/VirusTracker code.
Example: [DG] Add UC01 and UC02
indicates that this issue works on adding user cases 01 and 02 to the developer guide.
Mandatory label:
priority.*
Indicates the priority level of the task. Has three levels, low, medium and high.Apart from the mandatory priority label, you may include other labels to make it easier to search and locate issues. Feel free to add any labels, but please ensure no similar label already exists.
58 (other comment)
General note: PRs can only be merged only when two or more other people have reviewed and approved of the merge.
When creating the PR, please state which issues the PR closes on the last line of the description.
Commit message: keyword #xx, keyword #yy, keyword #zz
for multiple issues
keyword
refers to any one of the following three words, close
, fix
, resolve
.
Using these keywords will cause the issue to be automatically closed once the PR is merged successfully.
_Note: Other tenses for the above words could be used as well, such as closes
or closed
, but let us standardise using the
imperative form of the words above._
#xx
references the issue number, where xx is the number. For example, xx = 10 will reference issue number 10.
Example: xx = 30
...PR description here
Close #xx
The above will close issue 30 upon the successful merging of the PR.
The actual form of #xx is not used in this comment as it would reference actual issues. Please refer to the PRs page for more examples.
59 (other comment)
The user cases have been added, and this issue will be closed
60 (other comment)
This user story has been added, and this issue will be closed.
61 (other comment)
This user story has been added, and this issue will be closed.
62 (other comment)
Location classes have been completed, statistics classes will be moved to v1.2.
63 (other comment)
A new LocationHandler class should be created to be in charge of handling the statistics.
64 (other comment)
I've updated the title accordingly to avoid confusion
65 (other comment)
Rather than LocationHandler, we can instead create an InfoHandler class which additionally handles people and visits
66 (other comment)
Issue can be closed, InfoHandler class has been implemented with relevant methods.
67 (other comment)
As of this commit, coverage for commands have been increased.
68 (other comment)
Made a draft PR instead
69 (other comment)
As of this commit, coverage of the logic package has been increased.
70 (other comment)
As of this commit, coverage of the model package has been increased
71 (other comment)
This issue was fixed in the latest version of VirusTracker.jar before the PE-D. This issue will be closed.
72 (other comment)
This feature is currently intended.
From the UG, In the case of repeating parameters, VirusTracker takes the last parameter.
73 (other comment)
We should consider setting a format for ID patterns, as users currently have too much freedom in the format of IDs they use.
74 (other comment)
We should mention the allowed formats for parameters in the User Guide so as to avoid misconceptions like this issue.
75 (other comment)
We can consider making Address
unique like LOCATION_ID
as no two locations should have the same address.
76 (other comment)
I believe prefixes are still needed since we are using both indexes and IDs.
77 (other comment)
This change could be considered.
78 (other comment)
Duplicate of #257
79 (other comment)
Duplicate of #235
80 (other comment)
Duplicate of #251
81 (other comment)
The user guide and command specify that the path provided when exporting should be absolute paths. However, no such checks are actually implemented.
Instead of implementing such checks, we can specify in the user guide where the file will be created by default, to provide users with a choice to use absolute paths or just create the files in the default path.
82 (other comment)
Renamed the branch to PR from. This PR will be closed.
83 (other comment)
As of this commit, DG has been updated. Future commits would be for UG unless stated otherwise.
84 (other comment)
UG has been updated
@foojingyi
(43 comments)1 (commented on others PR)
Should this document need to be refactored?
2 (commented on others PR)
Should we edit the tutorial document?
3 (commented on others PR)
Perhaps this document does not have to be edited as well?
4 (commented on others PR)
Is this part of a tutorial as well? Should it be changed?
5 (commented on others PR)
Perhaps we should keep this in view?
6 (commented on others PR)
Should we change "ab" to "mb"?
7 (commented on others PR)
Same as for UndoRedoState0.puml, maybe we should change in all the diagram files?
8 (commented on others PR)
Should this be changed since there is a link to AB4?
9 (commented on others PR)
Good renaming here!
10 (commented on others PR)
Does this document need to be changed? I'm not very sure 😕
11 (commented on others PR)
Should the tutorial be refactored?
12 (commented on others PR)
Should this be changed?
13 (commented on others PR)
Should this be "MediBook" instead? Since it looks like the product name
14 (commented on others PR)
Is this refactoring the correct word?
15 (commented on others PR)
Similar to a previous comment, is this the correct thing to change?
16 (commented on others PR)
Again, should this be changed?
17 (commented on others PR)
Should this be left alone?
18 (commented on others PR)
Should this be changed?
19 (commented on others PR)
Here as well
20 (commented on others PR)
Should this comment be changed?
21 (commented on others PR)
Should this comment be changed?
22 (commented on others PR)
Should the comments in this class be changed?
23 (commented on others PR)
Should this be refactored?
24 (commented on others PR)
Should this be changed?
25 (commented on others PR)
Should these comments be changed?
26 (commented on others PR)
Should this be changed?
27 (commented on others PR)
Should this comment be revised?
28 (commented on others PR)
Perhaps change this to "MediBook" as well? Not that important as it's just for logging
29 (commented on others PR)
Was this supposed to be changed?
30 (commented on others PR)
Here as well
31 (commented on others PR)
Perhaps change this variable name?
32 (commented on others PR)
Perhaps the comments in this class can use "MediBook" instead?
33 (commented on others PR)
Should "ab" be changed?
34 (commented on others PR)
Sounds grammatically incorrect to say "the user then access" even though it is clear in the markup that this is a command. Is there a way to rephrase this sentence?
35 (commented on others PR)
May look better to properly punctuate this comment?
36 (commented on others PR)
Maybe capitalise this comment?
37 (commented on others PR)
If this class is solely to create static Index objects, does there need to be separate objects to use for patient and medical note tests? Since they are pointing to similar objects anyways. Additionally, "index first" sounds a little strange. Maybe "index one" or "first index"? Not sure what makes sense.
38 (commented on others PR)
Should this be "'*' not allowed in name" instead of having quotations around the whole comment?
39 (commented on others PR)
Maybe add a JavaDoc comment (single line "/** comment here */) to describe innerList?
40 (commented on others PR)
Is it possible to abstract out some parts of this constructor?
41 (commented on others PR)
May want to add JavaDoc comments to this class?
42 (commented on others PR)
Should this be a user story in the UG? May not be relevant to some readers of the UG. Is there a better way to phrase this/refer to doctors themselves? i.e. If you are a doctor...
43 (commented on others PR)
Can this sound more user centric? i.e. If you are viewing the profile of a patient with the IC...
44 (commented on own PR)
Good eye 👍
45 (commented on own PR)
Maybe we can refactor this if needed after looking at the implementation? Since this is based on conventions in the other Patient detail classes i.e. Name, Tag, etc.
46 (commented on own PR)
Will that make the code harder to read and be a bit unnecessary? I also made it similar to other classes so maybe we would want to be consistent?
47 (other comment)
Will create a PR on branch instead of master
48 (other comment)
Resolved by #80
49 (other comment)
Resolved by #80 using UI parts instead
@khoodehui
(43 comments)1 (commented on others PR)
Perhaps can add a description saying that this is the constructor?
2 (commented on others PR)
Should be project book instead of address book.
3 (commented on others PR)
Same here too as above comment.
4 (commented on others PR)
Perhaps there should be a whitespace after the slashes?
5 (commented on others PR)
Yup think it will better to describe that it will construct a new project, just like the javadocs in other classes.
6 (commented on others PR)
Will it be better to give an example of how the ISO8601 time format looks like in the error message? A user might not know what this format is.
7 (commented on others PR)
Should have a new line before the param.
8 (commented on others PR)
Think the persons here should be timers instead.
9 (commented on others PR)
Should have a new line after the description. Same for the 2 methods above.
10 (commented on others PR)
Newline after description.
11 (commented on others PR)
Extra line here should be removed.
12 (commented on others PR)
Extra asterisk here should be removed.
13 (commented on others PR)
Newline after description.
14 (commented on others PR)
Newline before method.
15 (commented on others PR)
Should we remove all the navigation commands first? Since they are not yet implemented.
16 (commented on others PR)
Description has been changed to an optional field.
17 (commented on others PR)
Should both name and description be optional fields here?
18 (commented on others PR)
I think we can indicate [coming soon] for this.
19 (commented on others PR)
I'm not sure if this section should be done by @boundtotheearth, since he implemented this and according to the tP instructions, it is recommended that features in the user guide should be written by the person who implemented it.
20 (commented on others PR)
Similarly, should we remove this first or indicate it as [coming soon]?
21 (commented on others PR)
Same as above, for Create and Update, some of the fields are/are now optional.
22 (commented on others PR)
Not sure if it would be better to rename this as 'Editing a project'? It might be more clear that the name of the feature is the same as the command.
23 (commented on others PR)
I think it should be. Because it doesn't make sense for the user to have to enter something for the name when they are not intending to change it. I think we might have made a mistake when writing this section of the user guide.
So the edit command will be like the addressbook's, where all fields except index are optional, but at least one of the optional fields must be provided.
24 (commented on others PR)
Same case for **Note:** here as above.
25 (commented on others PR)
Seems like markdown isn't converting **Note:** over here to bold. I think it's because it's embedded inside HTML. Try using >strong>Note:>/strong> instead.
26 (commented on others PR)
I think the asterisks here are causing Markdown to not format the table correctly.
27 (commented on others PR)
Newline before param
28 (commented on others PR)
Newline after description
29 (commented on others PR)
Code might be easier to understand if parseSortOrder()
only returns the argument which the user entered in the command. Then under the variable declaration for isAscending()
, do an equal()
check to see whether the argument the user provided is equal to ASCENDING_ORDER
.
This is so that the nature of the parseSortOrder()
method is also consistent with that of the parseSortType()
method.
30 (commented on others PR)
I think we should.
31 (commented on others PR)
Noticed that you have declared various form of SortCommands
as private static final variables in SortCommandTest.java
, and they are repeated here. Will it be better to just abstract all of the various SortCommands
into a utility class, then have the test classes get the different commands from there.
32 (commented on others PR)
Accidental capitalisation here
33 (commented on others PR)
Line before param
34 (commented on others PR)
Line before param
35 (commented on others PR)
Line before throws
36 (commented on others PR)
Line before throws
37 (commented on others PR)
Line before throws
38 (commented on others PR)
Line before throws
39 (commented on others PR)
Line before throws
40 (commented on others PR)
Line before param
41 (commented on others PR)
Should the javadoc for this method and the one above be on just one single line?
42 (commented on others PR)
Should projects here be changed to trackedItems?
43 (commented on others PR)
Incomplete javadocs
44 (commented on own PR)
Ok yup I agree with this. Will make the changes.
45 (commented on own PR)
I feel that it is ok to have this method as well as the hasDescription() method in the Project class, as a Project should be aware of the contents of its own fields and I can directly ask a Project whether it possesses these fields.
However, what you said sounds fine to me too. What do the others think?
46 (commented on own PR)
Yes, but in tests only, particularly these:
All of these tests invoke setTrackedItem() from Model, which will call resetUi(), which then calls updateApplicationSettings() in SettingsUpdateManager. However, SettingsUpdateManager is not initialised in the test and so Ui and Statistics will be null, leading to NullPointerException when running the tests.
47 (commented on own PR)
Oh forgot to change it back. Changed it to make an earlier implementation work.
@ngzhenteng
(42 comments)1 (commented on others PR)
Maybe we could add a javadoc comment as follows:
Represents the string consisting of a dash followed by an alphabet such as "-m" included in the user's command.
2 (commented on others PR)
Thanks for the refactor
3 (commented on others PR)
Method looks great
4 (commented on others PR)
Looks great, maybe we need to extract some cases out later, to reduce the code to beneath 30loc.
5 (commented on others PR)
Awesome find, thank you for fixing the bug!
6 (commented on others PR)
Great addition, consultation features should work well now!
7 (commented on others PR)
Great mention!
8 (commented on others PR)
Great!
9 (commented on others PR)
Nice!
10 (commented on others PR)
It is great that the history is stored and used in this manner.
11 (commented on others PR)
Great way of ensuring that the pointer is pointing to the correct command
12 (commented on others PR)
Great defensive coding technique with the use of inputPointer > 0
13 (commented on others PR)
Good use of defensive coding
14 (commented on others PR)
The amount of logging is great, especially now when we are trying to reduce bugs
15 (commented on others PR)
This is a great use of Observer patterns
16 (commented on others PR)
Great use of Abstractions
17 (commented on others PR)
Another great use of abstractions, this makes the code neater. thank you!
18 (commented on others PR)
Great protective measure!
19 (commented on others PR)
Perhaps this test method signature could be setGreeting_validString_success()?
20 (commented on others PR)
This type of checking is indeed really important, thank you for writing these tests cases!
21 (commented on others PR)
This is a great way of using guard clauses
22 (commented on others PR)
Thanks for writing the code to be congruent with the abstractions used
23 (commented on others PR)
Useful exception!
24 (commented on others PR)
Since MasteryCheck is using a separate tab from Consultations, Making Mastery check no longer extend Consultation makes sense now.
25 (commented on others PR)
Thanks for marking out the code to make it more readable.
26 (commented on others PR)
Great addition of test cases! Perhaps this could be generateTaskId_success()
27 (commented on others PR)
Perhaps a name like: generateTaskId_nextId_notEqualPrevious()
28 (commented on others PR)
Thank you for adapting to the coding standards!
29 (commented on others PR)
Do remember to remove the comment once we are certain that we dont need this method 😃
30 (commented on others PR)
Great, a more verbose error message will help with the practical exam!
31 (commented on others PR)
Thank you for implementing this method, we will be able to save and retrieve MCs now!
32 (commented on others PR)
Thank you for adding this image
33 (commented on others PR)
This makes the UG more beautiful. Thank you
34 (commented on others PR)
This is a nice use of constants!
35 (commented on others PR)
Great set of tests, thank you!
36 (commented on others PR)
Nice find!
37 (commented on others PR)
great use of guard clauses!
38 (commented on others PR)
Perhaps this has to write "Please edit your username and password“?
39 (commented on others PR)
Great naming the class. now when any code calls MasteryCheckNameContainsKeywordsPredicate.test(mc) it makes a lot of sense!
40 (commented on others PR)
Nice use of a stub!
41 (commented on others PR)
Nice way of using typicalQuest objects.
42 (commented on others PR)
Thank you for writing this, i will use it to write integration tests for MainWindow, LogicManager and the other classes involved from methods called in MainWindow.java
43 (commented on own PR)
Yeah this was the problem, i wrote consultations and you wrote consultation haha
44 (commented on own PR)
Thank you!
45 (other comment)
Week 6 tutorial, no need to merge.
46 (other comment)
LGTM!
47 (other comment)
LGTM!
48 (other comment)
branch was wrongly named
49 (other comment)
LGTM, thank you!
50 (other comment)
LGTM! thank you
51 (other comment)
Awesome update, LGTM!
52 (other comment)
LGTM thanks!
53 (other comment)
Looks awesome, looks good to merge.
54 (other comment)
Thank you Jun Jie!
55 (other comment)
Thank you!
56 (other comment)
Apart from the failure of CI, looks good to merge.
57 (other comment)
LGTM!
58 (other comment)
LGTM, nice diagrams, thank you!
59 (other comment)
LGTM! the bugs can be fixed before tuesday night.
60 (other comment)
Awesome additions, thank you. LGTM
61 (other comment)
No longer necessary
62 (other comment)
LGTM, thank you for editing the UserGuide
63 (other comment)
LGTM!
64 (other comment)
Currently the added consultations and mastery checks are not added into addressbook.json. Hence it is the storing and retrieving that may need to be solved
@shawn-nyk
(41 comments)1 (commented on others PR)
Small issue, but should this line not begin with a whitespace? (Even though the syntax highlighting does not appear here on GitHub, I believe it still works to markdown the text in this case so shouldn't be an issue!)
2 (commented on others PR)
Should we markdown these lines with backticks as well, to put them in code format, as per the other examples?
3 (commented on others PR)
I assume we're using Person's Name and Phone classes for now since they help guarantee certain text properties. We'll probably have to change this in the future (at least the naming, for example wage being a Phone object seems odd)? Perhaps using String for now may keep things even simpler, but I suppose this works for now!
4 (commented on others PR)
Perhaps we could name this InternshipStatus
or something along those lines instead? Do let me know if I'm mistaken, but it seems that we have a Job class that has the variables - jobTitle, companyName and industry. So this status object should be reflective of an Internship status rather than a Job status? Shall we ensure that "Job" and "Internship" are not interchangeable terms throughout our code base? Another issue that might still arise even after changing the name to InternshipStatus
is that we will then have a Status
and InternshipStatus
class, and it may not be obvious what the difference is between the 2 in terms of their names? Would it be possible/better to make this a private enum within the Status class?
5 (commented on others PR)
I suppose having this field means in the UI, we'll have some text like "As of: date
"?
6 (commented on others PR)
As we'll also need to add Jobs in a company object, this Job
object seems to differ implementation-wise from the Job
object that we may use for company objects, though they should probably be the same? For example, in a Company
object, during its creation via a user command, the user can input multiple industries and jobs that a company has. This creates the Company
object, along with its multiple jobs and industries. So in those Job
objects in the Company
object, will each of them have multiple industries tagged to them instead of just one industry as in this Job
object? Also, since a Company
stores Job
objects, would this create a cyclical dependency if we change the Name companyName
part to Company company
in the future (I assume we will)? At this juncture, it seems that if Job
is going to store Company and Industry, perhaps we may not even need Job
objects? Perhaps we could simply use String (or Name) for jobs? This may also help to synchronize with how jobs will have to be represented in a Company
object.
7 (commented on others PR)
Sounds good to me! Shall check with the rest if they're okay too! (Sounds like in the future we could perhaps repurpose the "Person" package to become like a text-format-enforcer package of sorts?)
8 (commented on others PR)
Ah I see, thanks for the clarification! I think the Status
and ApplicationStatus
names suggested work, but perhaps sticking to InternshipStatus
might still be better so we don't introduce more terms for the same object (for e.g. application and internship both refer to internship applications)? So maybe swapping the current Status
and InternshipStatus
names will do? May have to consult the rest haha, just some suggestions!
9 (commented on others PR)
Ah okay! My bad for missing this out, thanks for highlighting!
10 (commented on others PR)
Should this return companyName instead?
11 (commented on others PR)
To stick to a standardization, shall we also rename the InternshipApplication
class to InternshipApplicationItem
?
12 (commented on others PR)
I believe these attributes for Company and Internship are the outdated ones?
13 (commented on others PR)
I see we've changed the tab name from plural to singular. I was wondering if it would be odd since the user would be looking at a tab labelled "Company" but in it can be multiple companies? Likewise for "Application" as well, which to me sounds like I'll view a single application if I click on it. Small matter but perhaps we could discuss this further and see what the team thinks too!
14 (commented on others PR)
Alright, no worries! Will merge this first and we can settle this next time.
15 (commented on others PR)
Just to confirm, does company application refer to internship application i.e. our application class in this case?
16 (commented on others PR)
Ah I see! Thanks for the clarification Sean!
17 (commented on others PR)
Just tried using the same line of code for the add company command I'm working on and yep, even upon successful addition of a company, this line of code does not switch tabs. Will follow Isaac's observation and see if I can make it work for add company in the time being!
18 (commented on others PR)
Just tried successfully on my end for add company command, regarding the switching of tabs, changing this to return new CommandResult(String.format(MESSAGE_SUCCESS, applicationItem), false, false, true);
will do the trick!
19 (commented on others PR)
This works if all our commands require a switch? At the moment that seems to be the case apart from the help and exit commands if I'm not mistaken. Also, I suppose it depends on how we want our app to behave exactly - do we want it to switch every time a command is executed even if the user is already on the right page, or do we want to switch only if the user is on the wrong page? I suppose this may not be detectable visually unless the switching of tabs introduces its own behavior (for example if switching causes the list of cards to jump to the top of the list, and not switching allows the user to stay at wherever they've scrolled to in the list, then executing a command that always switches vs. one that only switches when necessary will provide different user experiences).
20 (commented on others PR)
Should the second argument be AddProfileCommand.MESSAGE_USAGE
instead?
21 (commented on others PR)
Should this be outside of the exceptions package?
22 (commented on others PR)
Minor nit, but perhaps we could change this to setRequirements
in the future? Just to keep all the namings consistent.
23 (commented on others PR)
Same thing regarding the tags naming here. Unless I'm misunderstanding the use of the word "tag" in the context of this UI portion of code. Apologies if that's the case!
24 (commented on others PR)
Perhaps this newline is an extra addition?
25 (commented on others PR)
Now that the return statements have been shifted into the if-else block, I think there may not be a need to declare a String resultMessage
variable anymore on line 40? Perhaps we could just use return new CommandResult(sameScreenText, false, false, false, false);
on line 44 and return new CommandResult(switchedScreenText, false, false, true, false);
on line 49. This would help us keep in line with the coding standard rule - "Variables should be initialized where they are declared".
26 (commented on others PR)
Does reintroducing this line reintroduce the issue we faced where the user is currently on a tab and wants to view something on another tab, the app will switch to that tab but always show item number 1? (for e.g. user is viewing company tab and executes view me 3
and the app switches to profile tab but views the first item instead of the third)
27 (commented on others PR)
As all our list commands are going to have similar success messages, perhaps we could do what we did with the rest of the commands which would be to add something like this after line 25: String listSuccessMessage = String.format(MESSAGE_LISTED_ITEMS, APPLICATION_NAME);
where MESSAGE_LISTED_ITEMS
resides in Messages.java and goes something like: "Listed all %1$s items";
? Just a suggestion!
28 (commented on others PR)
Is this redundant given that ListApplicationCommand
can use ListCommand
's COMMAND_WORD
? This is with regards to how all the other commands exhibit the same pattern in that they use the parent's COMMAND_WORD
.
29 (commented on others PR)
Super minor point, but with regards to the phrasing, I suppose this might read a little awkwardly for more than 1 item found, such as "3 company listed!"? But it's just the phrasing so it's not a big deal and we can probably handle this in the future if we want!
30 (commented on others PR)
Will this throw an inappropriate error message? Correct me if I'm mistaken, but does this throw the error message "Item type has to be either 'com', 'int', 'app' or 'me'"? If so, I believe that since we can't run switch int
, should we revert back to the old error message / something along the lines of "Item type has to be either 'com', 'app' or 'me'"?
31 (commented on others PR)
Should we be using model.updateFilteredApplicationList()
instead to avoid LoD violations?
32 (commented on others PR)
oh yea great idea!
33 (commented on others PR)
Yup true! Sounds good!
34 (commented on others PR)
Should it be are listed
rather than is listed
?
35 (commented on others PR)
Perhaps User searches for a company by name
may be more appropriate?
36 (commented on others PR)
Similar to another comment, should this be are
instead of is
?
37 (commented on others PR)
Should we add a guarantee for this use case as well, to standardize with all our other use cases? Same question goes for UC10, 23 and 26.
38 (commented on others PR)
I think this is a very neat way of reducing duplication in our use cases section! Whenever we reference other use cases like this, should we perhaps be a little more specific by providing the use case number and exact title? For example, writing Similar to UC02 - Delete a company, except that the user is deleting an internship
instead?
39 (commented on others PR)
should this and the method below have the name deleteCommand...
rather than addCommand...
?
40 (commented on others PR)
Should this be using getUnfilteredApplicaitonList()
instead?
41 (commented on others PR)
Should this be using companyCardWithIndustries
?
42 (commented on own PR)
True, this class is indeed very similar to the Name class. However, in order to do the following:
pass in the messageConstraints to signify a different error message if need to
perhaps we can modify the Name class to, say, take in an extra argument in its constructor for the messageConstraints
variable, and then the passing in of this variable could be done by the Industry class that extends the Name class and simply passes its own messageConstraints through the parent (i.e. Name's) constructor via super(). As such, we'll reduce code duplication but still maintain the existence of the Industry class. I feel that it may be necessary to have such unique classes because variables such as private final Set>Industry> industries = new HashSet>>();
would look rather odd as private final Set>Name> industries = new HashSet>>();
. And ultimately, in order to "pass in the messageConstraints to signify a different error message if need to", I believe we'll still need to have some sort of Name as parent class for subclasses such as Industry, Descriptor, Requirement, etc. arrangement, since Industry is not the only class affected by this / has this characteristic.
All that said, modifying Name and abstracting all the common fields to subclass from it at this juncture would be inappropriate in the context of this PR. Would it be okay if we let this portion through first and do the necessary abstraction / refactoring after all 4 items (inclusive of this Company item) are present in our codebase, as discussed in our Tele group?
43 (commented on own PR)
My bad, thanks for catching this!
44 (commented on own PR)
Oh yep great idea! I've made the changes!
45 (commented on own PR)
I can't shift it straight into the current if-else block due to the nature of the condition checking. If we want to make it all part of one block, here's an option:
if (model.getTabName() != TabName.APPLICATION) {
model.setTabName(TabName.APPLICATION);
shouldSwitchTab = true;
model.setViewIndex(targetIndex);
} else if (model.getViewIndex().equals(targetIndex)) {
resultMessage = messageAlreadyViewing;
shouldSwitchDisplay = false;
} else {
model.setViewIndex(targetIndex);
}
But this means model.setViewIndex(targetIndex)
appears twice.
Another option is to simply remove the if condition and do:
if (model.getTabName() != TabName.APPLICATION) {
model.setTabName(TabName.APPLICATION);
shouldSwitchTab = true;
model.setViewIndex(targetIndex);
} else if (model.getViewIndex().equals(targetIndex)) {
resultMessage = messageAlreadyViewing;
shouldSwitchDisplay = false;
}
model.setViewIndex(targetIndex);
But this means that even when the model's view index is already the index that the user inputs, we still set it anyway (unnecessary call to setViewIndex). It won't affect the program though.
Between the current code and these 2 options, which do yall think is better? Or are there other alternatives yall may have?
46 (commented on own PR)
Hi Keane! Unfortunately that would not be possible. Variables can't be declared in an if-else block and then used outside of it due to variable scope. Even doing something as simple as:
if (true) {
boolean shouldSwitchTab = false;
} else {
boolean shouldSwitchTab = false;
}
shouldSwitchTab = true; // line X
Will lead to an error on line X whereby it doesn't detect that shouldSwitchTab has been initialized.
(More on it here: https://stackoverflow.com/questions/17444020/why-cant-variables-be-declared-in-an-if-statement)
As such, this already is the smallest possible scope!
47 (commented on own PR)
To justify having these boolean vars initialized and declared where they are, we can take it that by default, we assume the user in on the appropriate tab (shouldSwitchTab = false
) and not viewing the current item (shouldSwitchDisplay = true
) which is why they would want to execute the view command in the first place. However, they may happen to be on the wrong tab (first if statement checks for that), or they may happen to be on the right tab and already viewing the item (the following else-if statement checks for that). That is how I would intend the code to be read!
48 (commented on own PR)
Ah good question! I raised this in our Tele group last night, but basically how the view index works is that it takes the index from the tab that is currently in view. So for example, if a user is on say the Application tab and he is viewing the 3rd Application, if he executes view com 3
, if we do not check for the tab first, then the program will simply think we're already viewing the 3rd item so it doesn't need to do anything, which is wrong of course. That said, now that you've raised this point, I believe I may be able to abstract away the first if statement, but I'll definitely need that condition check in the else-if statement that checks for if the user is on the same tab and currently viewing the indexed item. So I can minimize the tab checking but we need that one minimally.
49 (commented on own PR)
Ah my bad! But then will we be violating this coding standard rule?
50 (commented on own PR)
No problem, thanks for highlighting! Have made the changes!
51 (commented on own PR)
Oh if that's the case, sure I don't mind changing it! But then again I'm not sure if our evaluators have the same understanding though? For example when we eventually evaluate our peers' work, I would probably follow the coding standard to cross-check my evaluation and if I spotted this violation in their work, I would probably just mark it as a violation since it is stated in black and white and not have to think too much. If you have the source, could you point me to where Prof Damith mentioned that we could do otherwise? Would be much appreciated!
52 (commented on own PR)
My bad, I was not certain if we were adding picture for delete and list at first. I've added them in!
53 (commented on own PR)
As per today's discussion, will do away with these captions instead. Thanks for pointing this out though!
54 (other comment)
Overall looks great. Good job. Just a few nits and it will be good to merge.
Thanks for pointing them out Sean! Have gone ahead to fix those inconsistencies across the whole doc.
55 (other comment)
Overall looks great! Just wondering if grouping the 2 stars and 3 stars together would be better? Perhaps edit an object should be considered a high priority as well? Otherwise LGTM
Ok! Made the edit commands high priority, which solved the 2/3 star grouping issue as well!
56 (other comment)
Hmm. The dilemma now is that this is just a proof of concept and we may be abstracting common logic down the line and scrapping all these, so overwriting Javadocs now may redundant. The danger is that if the code is kept and the comments are missed in the future. What is the team's opinion on this? @ZoroarkDarkrai @keanecjy @seanjyjy @shawn-nyk
I agree that overwriting Javadocs now may be redundant, especially because our code can change over time up until the final version. At the same time, I also agree that we may miss them in the future, and doing a one-time run-through of all our code at the end may be very tedious and error-prone. As such, how about we do something like: every time we create new bits of code that require Javadocs, or we modify code that already has Javadocs attached to them, we place a standardized comment, such as TODO: Javadocs
above the code we need to write/edit Javadocs for? That way we get the syntax highlighting that IntelliJ provides for the TODO
keyword, and we can also search for this standardised comment throughout the code base to hone in on where we'll eventually need to write/edit Javadocs when the time comes. Any thoughts on this?
57 (other comment)
Great work! I noticed you helped to check all our commands to ensure consistency in the messages too. Just need to fix some checkstyle issue before merging can be done.
Thanks Keane! And oops my bad, made some last minute changes and pushed after I first made the PR (introduced some checkstyle errors in the process). I've made a few other further changes to remove some hard-coded messages and make our add commands' success messages similar in execution to that of delete commands (calling upon the Messages class). For your vetting!
58 (other comment)
Besides the point that @keanecjy has raised, I believe it is good to merge after it is resolved.
Thanks Sean! Have made the changes!
59 (other comment)
To explain this code:
Line 43 executes a function that creates delete int commands and executes them, causing the model's internal tab name to be set to company. Thus, before that line is executed, we need to save the current actual tab the user is on, which is done in line 40. Since we are checking against this saved tab instead of the model's current tab (would become company because of line 43), we cannot use the CommandUtil.getCommandResult()
method.
60 (other comment)
For the model diagram, I believe that the arrow from the
ApplicationItem
, etc should be in solid line to theItem
as ours is an Inheritance relationship.
Thanks for catching this! Will make the change.
I am not sure but maybe it is
ViewManager
andTabManager
rather thanView
andTab
Hmm, looking at ModelManager
, it stores a Tab
and View
as its fields though, therefore it should be as per the current diagram?
I am not sure if
ApplicationItem
has a composition withInternshipItem
? But rather there should a relationship betweenCompanyItem
andApplicationItem
Ah yep I believe you're right, ApplicationItem
should not have a composition with InternshipItem
, and InternshipItem
should also not have a composition with CompanyName
. But CompanyItem
and ApplicationItem
have no relationship I believe, because checking the code for CompanyItem
, it is not aware that ApplicationItem
exists.
Thanks again for highlighting all the above, do let me know if this is ok!
61 (other comment)
- Sorry that i missed out again but I think the ProfileItemCategory is an
enum
class.
Ah my bad, good catch! Will fix that too.
- Not sure if the association labels are pointing in the wrong direction(is this a plantuml limitation? if it is then nvm)
Yup it's a plantuml thing haha, but I think it should still be quite obvious to the reader as to which direction to read the label, I hope!
- not sure if package is the right word to use, perhaps they are classes?
Good point, I thought about this one quite a bit yesterday and settled on "package" eventually cos I realised that if I were to say that the diagrams are a breakdown of the Company
, Application
, Internship
and Profile
"classes", it may not be accurate because there are no classes actually called Company
, Application
, Internship
and Profile
- those are the names of our packages and within them are the numerous classes as shown in the diagram. Do let me know if there is a better term we could use though!
- I think the user stories are arranged in Company -(internship)- application - profile - general. Then maybe the 1st and 2nd user stories should be put in the general section instead, for consistency in the arrangement.
Sounds good, will shift the stories!
62 (other comment)
Updated and now:
Resolves #382
Resolves #387
Resolves #390
@hansebastian
(41 comments)1 (commented on others PR)
I think "module" here should be "modules" instead.
"Lists all modules provided by the university"
2 (commented on others PR)
Unless 'n/' command is taken, I think we should use "n/" instead of "un/", it seems more intuitive for the user to add his/her own name as "name" rather than "username"
3 (commented on others PR)
Should we allow the user the flexibility of determining start and end date? Isn't it better to only allow the user to specify the academic year, and we will provide the start and end date for the user. I think this would make it more convenient for the user.
4 (commented on others PR)
Similar concern to my above comment, whether we should use "n" instead, as well as whether we should allow the user to have control over the start and end date semester.
5 (commented on others PR)
'DAY' has* instead of have. Also, I think it'll be good to capitalize first letter of the days Monday and Sunday:)
6 (commented on others PR)
Similarly, "WEEK" has*.
Additionally, "Total number of weekS".
If we do decide that user shouldn't be able to select start and end dates, then the total number of weeks will be pre-determined already.
7 (commented on others PR)
Same grammatical error as above comment
8 (commented on others PR)
There's an additional 'e' here in "edituseretask"
9 (commented on others PR)
task ID example given here is not really consistent with the sample command (line 248) which uses "id/usrta001". Additionally, the example command here uses "dy/3", I think it should be "da/3".
10 (commented on others PR)
I feel that the command could be better named, for example using "edittemplatename" instead. Although its a slightly longer command, however it gives more clarity than "edittemplate" as to what the user is editing. "edittemplate" gives off the impression that I can edit preset user tasks in the task template?
11 (commented on others PR)
Why is this named "listtasktemplate" instead of "listtemplate" for consistency with the above commands "edittemplate" and "createtemplate"?
12 (commented on others PR)
Grammatical error:
"total tasks for that day exceeds"
13 (commented on others PR)
Similar grammatical error for "exceed"
14 (commented on others PR)
I don't you need "pti/1" in a cleartemplate command.
15 (commented on others PR)
Grammar: I think it should be "List all the task templates that were created" instead
16 (commented on others PR)
Is MODULEINDEX here a list index like "3"/"5", or would it be a module code like "CS2103T"?
17 (commented on others PR)
I think deletetemplate here should have a "tti/TASKTEMPLATEINDEX"
18 (commented on others PR)
In the e.g given, cleartemplate shouldn't have "pti/1"
19 (commented on others PR)
I think we are going to omit MyModules from the architecture, we will be using ModuleSchedule instead, so this use case should be View ModuleSchedule instead
20 (commented on others PR)
Should we follow the three part format for naming of test methods?
21 (commented on others PR)
Likewise for the naming of the test method
22 (commented on others PR)
Similarly for the naming of test method
23 (commented on others PR)
Same here for the naming of test method
24 (commented on others PR)
With this implementation of the parsing of user input, what happens if the user inputs something like:
addexp ... f/for now no
OR addexp ... f/think no
.
Although in an actual use scenario this is very unlikely to, or will never happen, but would the parser still allow the creation of the expense object in this scenario?
25 (commented on others PR)
GrAB3 should be SuperSalon
26 (commented on others PR)
I think you can add system and actor here and for all other use cases
27 (commented on others PR)
I think we can change the method to saveClientManager
28 (commented on others PR)
The comments here should be for the BreakdownExpenseCommand
class instead of the constructor?
29 (commented on others PR)
I think this implementation still allows for intYear
to be negative? For example range.isValidIntValue(-999)
will still return true. Since the java.time.Year class has a MAX_VALUE
of +999,999,999 and MIN_VALUE
of -999,999,999.
30 (commented on others PR)
Should we fix the VALID_YEAR
to be 2020? Would this still work when I'm using this after the year 2020?
31 (commented on others PR)
I think your method naming here should be breakdownRevenue
instead of breakdownExpenses
32 (commented on others PR)
Same here for method naming
33 (commented on others PR)
Should use logging instead of the SOUT?
34 (commented on others PR)
Similarly for this SOUT
35 (commented on others PR)
The additional && appointmentDate.equals(other.appointmentDate)
check is not required right since isClashing
is only called if appointmentDate.equals(otherAppointment.appointmentDate)
in line 123
36 (commented on others PR)
Maybe using "exists in Homerce" is sufficient instead of "homerce book"?
37 (commented on others PR)
Yes I think it happened during the refactoring from Addressbook to Homerce
38 (commented on others PR)
Moving forward, I think it'll be good to have an empty state screen for the user
39 (commented on others PR)
If these aren't required, just remove them instead of leaving them as comments?
40 (commented on others PR)
I added this in my PR already
41 (commented on others PR)
I think Ms Amy meant for us to include these details as notes / tips for users in like a callout instead of it being in the table. Let's see what the rest thinks!
42 (commented on own PR)
Okay thanks! I'll change it
43 (commented on own PR)
Okay, thanks for this, I've updated the response messages accordingly!
44 (commented on own PR)
Got it. Will extract the check into a separate checkValidity
method. Thanks!
45 (commented on own PR)
Thanks for pointing that out! I have changed the implementation to fix this.
46 (other comment)
Thanks for the comments @khoongwk @yanlynnnnn , I have made the changes as requested!
47 (other comment)
Thanks for the comments @khoongwk @yanlynnnnn, I have made the changes as requested!
@joshtyf
(40 comments)1 (commented on others PR)
Would you mind adding documentation to this? So that others will understand what this method is doing.
2 (commented on others PR)
Do you think overriding the equals()
is better?
3 (commented on others PR)
Would it be better to change the method name to getTagName
? This is for consistency purposes.
4 (commented on others PR)
Could you change the documentation? This is so that others can understand what this class is about.
5 (commented on others PR)
Should we start renaming the other classes soon?
6 (commented on others PR)
Why is this deletable though? I thought this was the initial data to be used to populate a brand new instance of QuickCache
7 (commented on others PR)
Should we should rename these methods as getQuestionAsList
and getQuestionAsString
? Might be less confusing in the future.
8 (commented on others PR)
Is there a better way to represent this instead of question.size() == 1
? Maybe abstract it into a separate method for this check?
9 (commented on others PR)
I initially named it as content
because I thought it would reduce confusion from having too many "choice" names.
But choice
works fine too.
10 (commented on others PR)
alright cools
11 (commented on others PR)
okay great
12 (commented on others PR)
alright!
13 (commented on others PR)
alright!
14 (commented on others PR)
The
StatsCommandParser
will take in a single argument forIndex
.
I think it's not very accurate to say this. Maybe you could specify the exact method or if it's a constructor, then specify it as a object field
instead of argument
15 (commented on others PR)
replace the
Flashcard
at the specifiedIndex
with a newFlashcard
I think can specify that a copy of the original flashcard is made but with the statistics reset to default numbers.
Also, what does default numbers mean? Perhaps you could be more specific about it
16 (commented on others PR)
thanks for correcting my mistake 👍
17 (commented on others PR)
Could you change it from
Adds an open ended question
Plants give out ___ when they photosynthesise?
with answerOxygen
and tagged toBiology
.
to "Adds a flashcard with an open ended question Plants give out ___ when they photosynthesise?
. The flashcard will have an answer Oxygen
and has a tag Biology
."
18 (commented on others PR)
Could you change it from
Adds a multiple choice question
Plants give out ___ when they photosynthesise?
with 3 optionsOxygen
,Carbon
,Carbon dioxide
and with answerOxygen
.
to "Adds a flashcard with a multiple choice question Plants give out ___ when they photosynthesise?
with 3 options Oxygen
, Carbon
, Carbon dioxide
. The flashcard will have an answer Oxygen
.
19 (commented on others PR)
is there a missing q/
before the keyword CS2103T
?
20 (commented on others PR)
The preface of the feature should not in the header. Refer to my implementation of the delete section
21 (commented on others PR)
The format should be moved to the header
22 (commented on others PR)
Could you have a newline between the picture and this sentence?
23 (commented on others PR)
Same as above, could you have a newline between the picture and this sentence?
24 (commented on others PR)
Could you add a :exclamation:
❗ emoji?
25 (commented on others PR)
Same as my comment above
26 (commented on others PR)
I think this information block should use the :information_source:
ℹ️ emoji instead of a bulb.
27 (commented on others PR)
I think this would better as an :information_source:
ℹ️ emoji instead of a bulb
28 (commented on others PR)
Voila siol
29 (commented on others PR)
same as my comments above
30 (commented on others PR)
if you want to find flashcards with the tag
TCPforLife
in the displayed list
I believe the mention of the words "in the displayed list" is confusing as it makes the user think that he can only filter against whatever is displayed currently. I think you can just remove "in the displayed list" to make it less confusing.
the keyword
What
I think you can add the phrase "in the question" to the end of the statement to make it less ambiguous to the reader
31 (commented on others PR)
I can't really view this over GitHub but I think we might need to check this against what others have done for their sections cause I don't think anyone has used the alert-dark
class yet.
32 (commented on others PR)
This is a great addition!
33 (commented on others PR)
Thanks for helping us change it to html markup
34 (commented on others PR)
Nice. I think can consider adding a link to the words "summary" that will link to the command summary section
35 (commented on others PR)
I think can add an :exclamation:
❗ emoji for this alert class. Same for the rest of the alert-danger
classes
36 (commented on others PR)
edits*
37 (commented on others PR)
maybe its better to word it as "or the newly edited flashcard is the same as another flashcard" instead of
or the flashcard already exists.
38 (commented on others PR)
Is there supposed to be a whitespace for " 1"
?
39 (commented on others PR)
is there supposed to be a whitespace at " 1"
?
40 (commented on others PR)
is there supposed to be a whitespace at " 1"?
41 (commented on own PR)
good suggestion. will change it
42 (commented on own PR)
fixed in the latest commit!
43 (commented on own PR)
fixed in the latest commit!
44 (commented on own PR)
truly a CS2030 TA, thanks for the suggestion!
45 (other comment)
Let me update the UG for the find
command first before merging the PR
46 (other comment)
UserGuide updated. Ready for review and merge
47 (other comment)
Updated my user guide in my commit 596b8cdc37112c815fbe794de967e5521dc4edad
48 (other comment)
We will leave this issue towards the end
49 (other comment)
According to the feedback from Jane, we need to add in a preface describing the "format" of the features section, how the user should read through the features section and other misc. items such as each emoji (eg. ℹ️) mean
50 (other comment)
Do it once everything has been finalised
51 (other comment)
We need to make a few changes according to the feedback from Jane:
Add a space between image and sentence
Move the alert classes after giving the context/preface
Add ending messages after each feature section (eg. You have successfully tested yourself)
Spacing between features/section needs to be consistent
52 (other comment)
We should sort this summary by the action column in alphabetical order
@claraadora
(40 comments)1 (commented on others PR)
Are we going to pass Logic object (only) in the UiManager for later iterations?
So that UI is only directly associated with Logic object, and Logic object will decide which Logics (LogicMode, LogicPerson, LogicMeeting, or LogicDeliverable) to call.
(If yes, can we add a TODO comment? e.g. /**TODO: Pass only Logic object**/
2 (commented on others PR)
Maybe we can add a TODO keyword in the comment so it's easier for us to locate in the future
i.e. // TODO take this out of Person
3 (commented on others PR)
As mentioned above, we can discuss this soon 😄 But, I think we don't need to make any changes for this iteration 👍
For a reminder, maybe we can add a TODO comment too here?
4 (commented on others PR)
Subject to the discussion above 😄
5 (commented on others PR)
I think we can move this to the common directory? What do u think? 😄
6 (commented on others PR)
As mentioned above, we should discuss this 👍
7 (commented on others PR)
I will update the fields today so that we can use and uncomment these soon 👍
8 (commented on others PR)
I think it would be great if we can use a more descriptive constant name to indicate an invalid index e.g. MESSAGE_MEETING_INDEX_INVALID
9 (commented on others PR)
I'm not sure but does the condition handle negative values or characters too?
10 (commented on others PR)
Maybe update this to Meeting and Title?
11 (commented on others PR)
Likewise for this
12 (commented on others PR)
I think this should be From
not To
13 (commented on others PR)
Very minor, but maybe can use 'specifically' or 'different modes: dashboard, deliverable,...'
14 (commented on others PR)
LogicModeManager
15 (commented on others PR)
Maybe can be assertive and say "Aligns with / Follows the Single Responsibility Principle better"
16 (commented on others PR)
Not sure, but LogicManager
s ?
17 (commented on others PR)
Maybe can use a more descriptive name than 's'?
18 (commented on others PR)
Not sure, but is mode the same as result?
19 (commented on others PR)
Not sure, but may be clearer to useDeliverable
, Meeting
, Contact
?
20 (commented on others PR)
How view executes
21 (commented on others PR)
I think we may not need to sort here
22 (commented on others PR)
I think the comment here is outdated
23 (commented on others PR)
I think this as well?
24 (commented on others PR)
Is this supposed to be constructor_invalidLocation?
25 (commented on others PR)
I think we can change the method names to meeting here?
26 (commented on others PR)
Should we delete this comment or add a TODO comment?
27 (commented on others PR)
Okayy
Maybe add a TODO comment
28 (commented on others PR)
V minor, but I dont think the titles reflect meetings'
29 (commented on others PR)
Do we have to change this to 'fields and parameters' then?
30 (commented on others PR)
Do we still want the space i.e. "- "?
31 (commented on others PR)
Ditto
32 (commented on others PR)
I think it is deliverable, meeting or contact mode i.e. without the `` format
33 (commented on others PR)
Since we are talking about a component (not code), I think the backquotes should be removed as well i.e. The UI component.
34 (commented on others PR)
I think 'The Done feature' instead of 'This Done feature' would be more appropriate
35 (commented on others PR)
the UI component
36 (commented on others PR)
Should we use an ordered list here? Since they are described as 'steps' too
37 (commented on others PR)
This applies to other instances below
38 (commented on others PR)
I think should be XYZ = Deliverable, Meeting or Contact
39 (commented on others PR)
Here too
40 (commented on others PR)
Is this supposed to be getXYZInView()?
41 (commented on own PR)
Yes, it was. Meeting B's From value is 'earlier' than A's. Since we are comparing the result of deleting a meeting from a model that is auto sorted with getTypicalMeeting().get(INDEX_FIRST_PERSON.getZeroBased())
, the ArrayList retrieved from getTypicalMeeting()
should be sorted too.
42 (commented on own PR)
Ahh, I see. Good point
43 (commented on own PR)
Ohh, but on second thought, isValidFromAndTo()
is executed inside new Meeting()
already. I think it would be redundant to execute twice, at least for our current implementation? What do you think? @chrystalquek
44 (commented on own PR)
createEditedMeeting()
throws IllegalArgumentException when it creates an invalid Meeting object through Meeting's constructor. @chrystalquek
45 (commented on own PR)
requireNonNull
Are you referring to the assertion? i.e. requireNonNull(meetingToEdit)
46 (commented on own PR)
probably an exception? since its invalid user input not problems with our code
try {
editedMeeting = createEditedMeeting(meetingToEdit, editMeetingDescriptor);
} catch (IllegalArgumentException e) {
throw new CommandException(e.getMessage());
}
assert Meeting.isValidFromAndTo(editedMeeting.getFrom(), editedMeeting.getTo())
: "From should be earlier than To";
If you are referring to the assertion, it is to make sure that after the try-and-catch block, editedMeeting is a valid Meeting. If it's invalid, the catch block throw an Exception.
47 (other comment)
Closes: #77
48 (other comment)
Change OCP too @gabztcr 😄
@ZoroarkDarkrai
(39 comments)1 (commented on others PR)
@seanjyjy is going to redo this part(?) so should I ignore this?
2 (commented on others PR)
Could be confusing saying job name because the format actually uses the position of internship in the company?
3 (commented on others PR)
I don't think these are the right precondition and guarantees?
4 (commented on others PR)
just a nitpick but I noticed that other use cases use list user profile items instead user profile item?
5 (commented on others PR)
shouldn't precondition be the state of the system and not the user?
6 (commented on others PR)
Another nitpick, maybe it's better to use InternHunter rather than the app? As the next points use InternHunter rather than the app?
7 (commented on others PR)
I think you missed this comment?
8 (commented on others PR)
I think you missed this comment?
9 (commented on others PR)
I think you missed this comment an others below too?
10 (commented on others PR)
should be instanceof UserProfile?
11 (commented on others PR)
is it the user profile?
12 (commented on others PR)
type is category right? because it can only be either education, skill, or achievement should it be an enum instead?
13 (commented on others PR)
I assume this is a planned extension for the profile items to have tags?
14 (commented on others PR)
should be two profile items? and several comments below
15 (commented on others PR)
should be profileItem? and for other comments below too
16 (commented on others PR)
wrong exceptions in this file or are they placeholders?
17 (commented on others PR)
Is it switching to the applications tab?
18 (commented on others PR)
I noticed you changed of a company to in a company for others
19 (commented on others PR)
for consistency maybe use tab because we usually describe them as tabs and not pages(?) for this and others below
20 (commented on others PR)
this is a really small nitpick but i feel the flow of the second sentence can be improved? just feel a bit weird having the if any in the middle.
maybe something like any applications with the deleted internship, will also be deleted?
21 (commented on others PR)
is this safe when string length is >= 1? or is it guaranteed that the length > 1?
22 (commented on others PR)
validity?
23 (commented on others PR)
any reason why an assert instead of an exception?
24 (commented on others PR)
CMIIW:
2 application items are equal if their internshipItem, status, and statusDate are all the same.
deepDelete uses the above equality to delete things.
ApplicationItem(internshipItem) will create a new application item with the default status and statusDate
The application with the internship we are deleting may not have the default status and statusDate?
25 (commented on others PR)
shouldn't this be the javadoc for the method below?
isn't util just a general purpose utility class?
26 (commented on others PR)
Why does it have higher cohesion?
Isn't low dependency --> low coupling?
27 (commented on others PR)
"Coupling is a measure of the degree of dependence between components, classes, methods, etc. Low coupling indicates that a component is less dependent on other components." ?
28 (commented on others PR)
"Only dependent on the one Item
type" --> low dependency --> low coupling?
29 (commented on others PR)
?
30 (commented on others PR)
what is this for?
i mean if it's abstract it can't be initialized anyway right?
31 (commented on others PR)
internship?
32 (commented on others PR)
I think i missed why is it limited to 2 words in particular?
33 (commented on others PR)
honestly I don't think this is a good idea?
suppose the requirement is "c" a common programming language, it will literally match with any word with a letter c (like cooking) or java with javascript, etc.
34 (commented on others PR)
the links should point to our repo instead of ab3's?
35 (commented on others PR)
Matching done is a bit weird(?)
Matching is case-insensitive?
Matching is done case insensitively?
36 (commented on others PR)
phrase rather than sentence?
37 (commented on others PR)
application job title?
38 (commented on others PR)
Applications?
39 (commented on others PR)
why not MatchCommand#getMatchingInternships(...)
?
40 (commented on own PR)
oh yeah, thanks for noticing 😅
41 (commented on own PR)
Sure!
42 (commented on own PR)
Yes, would it be better to start from empty ones? Will change it then.
43 (commented on own PR)
Nope, the storage just need the isValidMethod
44 (commented on own PR)
Ahh forgot to change it back, was testing. Same with the application item one. Thanks
45 (commented on own PR)
Hmm, it's copy and pasted from AB3's. Hahaha.
46 (commented on own PR)
Sure?
47 (commented on own PR)
image of the application?
48 (commented on own PR)
Idk either? I was just removing person from AB3.
49 (commented on own PR)
nice catch! and it does
50 (commented on own PR)
better remove it? or would it be useful in the future?
51 (other comment)
I noticed that many of the javadocs used "person" and "address book", should we change it now? or leave it for later?
52 (other comment)
LGTM, good work! Some merge conflicts to resolve first.
Fixed!
53 (other comment)
lol i just pushed the change
54 (other comment)
I think it's okay just I find many hard coded strings can be converted to const. If urgent can merge now and fix later?
Is it not normal to use hard-coded strings for test cases? Could you point on where exactly is the issue? Thanks
I mean the toString, equality, hashcode tests. Could use VALID_WAGE, VALID_PERIOD, etc? If it's a better practice to use "Sunday", "React Native", etc. it's fine then.
55 (other comment)
I think it's okay just I find many hard coded strings can be converted to const. If urgent can merge now and fix later?
Is it not normal to use hard-coded strings for test cases? Could you point on where exactly is the issue? Thanks
I mean the toString, equality, hashcode tests. Could use VALID_WAGE, VALID_PERIOD, etc? If it's a better practice to use "Sunday", "React Native", etc. it's fine then.
Not too sure what's the correct which is the correct way, but I just thought that doing it this way by writing 2 strings that are different objects would be better since we will be comparing periods with different strings in the actual implementation too
Sure then! I just thought maybe using constants could make it easier to see, that creating an object with the same input will result to an equal one. Like 2 objects created with VALID_PERSON_ALICE are equals but not with one created with VALID_PERSON_BOB.
LGTM!
56 (other comment)
I don't think you should be writing tests for ApplicationItem, Status, and StatusDate? Since we should be writing tests for our own classes and not helping others write their tests
Oh, I think I misunderstood then. When I said I couldn't do the storage ones then because lack of sample data, I think someone said I should do the application ones. So, do you want me to remove them?
57 (other comment)
I don't think you should be writing tests for ApplicationItem, Status, and StatusDate? Since we should be writing tests for our own classes and not helping others write their tests
Oh, I think I misunderstood then. When I said I couldn't do the storage ones then because lack of sample data, I think someone said I should do the application ones. So, do you want me to remove them?
Oh what I meant was create sample data for the storage tests and not to test the application classes themselves. So the rest of the files can stay except for
ApplicationItemTest
,StatusTest
andStatusDateTest
. Hope this clarifies!
Ok, removed them!
58 (other comment)
LGTM!
59 (other comment)
Nvm I'll just merge this first
60 (other comment)
LGTM, need to resolve some conflicts
resolved
61 (other comment)
I notice that some of the titles use verb only and some verb+ing?
It's "Listing all companies" but "List all user profile items"?
62 (other comment)
there seems to be no new LogicClassDiagram.png or DeleteSequenceSequenceDiagram.png?
63 (other comment)
LGTM!
64 (other comment)
LGTM!
@TianYong-Goh
(39 comments)1 (commented on others PR)
Would it be better to remove this statement? As I feel our product is not a series of the addressbook.
2 (commented on others PR)
Is it better to remove these Level 3?
3 (commented on others PR)
Just curious is this the Url part?
4 (commented on others PR)
Is this the sequence diagram explanation?
5 (commented on others PR)
Isn't we decide to use 1. 2. 3. and put the step under the sequence diagram?
6 (commented on others PR)
Same as above
7 (commented on others PR)
Can place this after the sequence Diagram? and also number it as 1. 2. 3. instead of Step1 Step 2 Step 3
8 (commented on others PR)
Might want to consider changing this to the explanation like delete consumption and delete ingredients
9 (commented on others PR)
Can consider moving this after the toc.
10 (commented on others PR)
Can include the explanation of consumption also.
11 (commented on others PR)
Thank you for helping me to change this.
12 (commented on others PR)
Can try to rephase it? cause I don't think the user know what is a drawer. Maybe "Close the recipe full view" ?
13 (commented on others PR)
Can add on explanation that deleteR will not affect the consumption list.
14 (commented on others PR)
I think we can remove the 'also' in this sentence since is a bullet point.
15 (commented on others PR)
Typo error. Haha
16 (commented on others PR)
Typo Error.
17 (commented on others PR)
Typo Error.
18 (commented on others PR)
Forgot to change the Consumption list to Consumption List
19 (commented on others PR)
Might want to consider changing this to Header 1 instead of Header 2 cause if Header 2 in toc this might appear under Feature section.
20 (commented on others PR)
I feel the.jpg/jpeg/png a bit confusing people might not take the '/' as 'or'.
21 (commented on others PR)
Should we caps and bold the 'Optional Field'? I not sure haha
22 (commented on others PR)
same as above
23 (commented on others PR)
same as above
24 (commented on others PR)
Is it forgot to remove this comment part?
25 (commented on others PR)
Same as above
26 (commented on others PR)
Same as above
27 (commented on others PR)
Put this file in the unused instead
28 (commented on others PR)
Same as above
29 (commented on others PR)
I feel the eg is a bit extra cause we only have another one get edit command
30 (commented on others PR)
Agree.
31 (commented on others PR)
I think can remove the colon for the note.
32 (commented on others PR)
Same as above
33 (commented on others PR)
same as above
34 (commented on others PR)
same as above
35 (commented on others PR)
same as above
36 (commented on others PR)
#3532-aspect-2?
37 (commented on others PR)
Maybe can rephrase this line?
Instruction should not be empty?
38 (commented on others PR)
I feel is more readable to use this instead of putting CommandTestUtil in front
39 (commented on others PR)
I feel use this is more readable
40 (commented on own PR)
Jia qi changes the way of adding instruction and I not sure how does it look like as that part is not merged to the master yet. The addRecipeCommand UG documentation is base on what I know so far.
41 (commented on own PR)
Ok changed. Will push later.
42 (commented on own PR)
Same as the previous reply.
43 (commented on own PR)
ya is delete cause eatR use INDEX. I might change the add Recipe and add Ingredient to delete cause now I feel It actually work more like a delete but instead of removing, it adds.
44 (other comment)
lgtm
45 (other comment)
Has already Opened by Caitlin
@ruilingk
(39 comments)1 (commented on others PR)
Extensions is spelt inaccurately. Subsequently also. 😅
2 (commented on others PR)
I think use case should end here.
3 (commented on others PR)
I think use case should end here.
4 (commented on others PR)
I think indexing of 2a1 would be good.
5 (commented on others PR)
I think this line should not have indexing.
6 (commented on others PR)
I think there should be a Use case ends.
line after this.
7 (commented on others PR)
I think there should be a Use case ends.
line after this.
8 (commented on others PR)
Would it be better to include this.showPlanner = false;
too?
Same as the overloaded constructor at the top too. e.g. this.showCountdown = false;
9 (commented on others PR)
Remember to change to Countdown tab! 😄
10 (commented on others PR)
Is this supposed to be CountdownCommandParser()
?
11 (commented on others PR)
I think there should not be a space after ModuleCommand
?
eg. public ModuleCommand(Module toAdd)
?
Same goes for the constructor for deletion below.
12 (commented on others PR)
Maybe can consider adding a space for x -> true
for better readability?
13 (commented on others PR)
Missing JavaDocs for public method.
14 (commented on others PR)
oh can already!
15 (commented on others PR)
Maybe can add a new line here for readability.
16 (commented on others PR)
Here too! 😂
ModelManager.java
too.
17 (commented on others PR)
Missing Javadocs for public methods.
18 (commented on others PR)
bump
19 (commented on others PR)
Maybe can specify "Event names should only..."?
20 (commented on others PR)
Missing Javadocs.
And also the parameter in method signature should just be UniqueEventList
and then import seedu.tr4cker.model...
!
21 (commented on others PR)
Maybe can add a new line for better readability.
22 (commented on others PR)
Maybe the tag can change into something more task-related?
23 (commented on others PR)
Think you forgot to remove this.
24 (commented on others PR)
think you meant countdown
! haha
25 (commented on others PR)
and TR4CKER helps you to...?
26 (commented on others PR)
what if the user exceeds 100 characters?
27 (commented on others PR)
i think you meant "can enter" haha
28 (commented on others PR)
Remember to add Javadocs!
29 (commented on others PR)
Javadocs for public methods.
30 (commented on others PR)
Bump!
31 (commented on others PR)
the subsections will now be just ####
(4 hashtags) instead of 5 haha
32 (commented on others PR)
maybe can add section numbers! like 3.3.2
33 (commented on others PR)
additional line hehe
34 (commented on others PR)
maybe can rename this method to testIsValidName()
so that it sounds more like a test method?
35 (commented on others PR)
extra line
36 (commented on others PR)
think u forgot to remove >br>
37 (commented on others PR)
extra line
38 (commented on others PR)
maybe can be Display the number of days left to an event and the date of an event
?
39 (commented on others PR)
i think it should be Users will be able to spot their mistakes in adding any event more easily.
?
40 (other comment)
Merged #14
41 (other comment)
Merged #13
42 (other comment)
There is already a command that does this and it is stated in the User Guide.
@MarcusTw
(38 comments)1 (commented on others PR)
Perhaps change the name of the class to Session
2 (commented on others PR)
Will we support delete+?
3 (commented on others PR)
Perhaps can change this variable name to tab?
4 (commented on others PR)
Perhaps you can make use of your Enum here?
private static final int CLASS_TAB = Tab.CLASSES.getValue();
5 (commented on others PR)
Perhaps you can add in your public static final int value here.
public enum Tab {
CLASSES(0),
ATTENDANCE(1)
private final int value;
Tab(int value) {
this.value = value;
}
public int getValue() {
this.value;
}
}
Would it be a better design?
6 (commented on others PR)
Perhaps missing a fullstop?
7 (commented on others PR)
Perhaps "Constructs a {@code SessionDate}" ?
8 (commented on others PR)
Perhaps "Standardizes" instead of "Standardize"?
9 (commented on others PR)
Is there a missing space between RunTimeException and "{}"?
10 (commented on others PR)
Awesome!
11 (commented on others PR)
Sure thing!
12 (commented on others PR)
Perhaps we might want to remove "(coming soon)"?
13 (commented on others PR)
Perhaps may want to add in a Javadoc here to make it clearer?
14 (commented on others PR)
Just a query, would returning null be a good idea?
15 (commented on others PR)
Just a query, would returning null be a good idea?
16 (commented on others PR)
Sorry, I meant for getNextIndex method!
17 (commented on others PR)
Sorry, I meant for getNextIndex method!
18 (commented on others PR)
Perhaps missing a JavaDoc here?
19 (commented on others PR)
Perhaps @return Display name of the tab ?
20 (commented on others PR)
Perhaps "If no arguments are found" ?
21 (commented on others PR)
Perhaps "if the argument passed in is an"?
22 (commented on others PR)
Perhaps throw an AssertionError here instead?
23 (commented on others PR)
Agreed with Eris.
24 (commented on others PR)
Perhaps could start with "Replaces" instead as mentioned by Eris.
25 (commented on others PR)
Perhaps start with "Recalculates" ?
26 (commented on others PR)
Perhaps missing Javadocs for this class?
27 (commented on others PR)
Perhaps missing the Format and Expected result structure?
28 (commented on others PR)
Perhaps can follow the Format and Expected result structure as mentioned.
29 (commented on others PR)
Perhaps can follow the Format and Expected result structure as mentioned.
30 (commented on others PR)
Perhaps can follow the Format and Expected result structure as mentioned.
31 (commented on others PR)
Perhaps use :instruction_source: instead of 💡?
32 (commented on others PR)
Perhaps the comments can be removed?
33 (commented on others PR)
Perhaps a typo "It" instead of "I" ?
34 (commented on others PR)
Perhaps could add "addstu" and "deletestu" modifications here?
35 (commented on others PR)
Perhaps add a comment to explain what does this code do?
36 (commented on others PR)
Perhaps this could be private-access?
37 (commented on others PR)
Perhaps "remove students who are no longer taking the module"?
38 (commented on others PR)
Perhaps "user who has limited class time"?
39 (commented on own PR)
Ahhh I see, thanks!
40 (commented on own PR)
Yes there should be. Missed it out.
41 (commented on own PR)
This was left with the intention of easy deleting if there comes an error.
42 (commented on own PR)
Ahh I see. Thanks!
43 (commented on own PR)
Thank you for the comment, I have resolved it!
44 (commented on own PR)
Thank you for the comment, I have resolved it!
45 (commented on own PR)
Thank you for the comment, I have resolved it!
46 (commented on own PR)
Thank you, I've missed it out!
47 (commented on own PR)
Thank you for pointing it out!
48 (commented on own PR)
Thank you for pointing it out! I've made the necessary changes.
49 (commented on own PR)
Thank you for the suggestion!
50 (commented on own PR)
I think it should be "Figure 1.3-1".
51 (commented on own PR)
Should I? I'm afraid it wouldn't be clear enough which previous I am referring to.
52 (other comment)
Changed according to comments
53 (other comment)
28/9/2020 - still lacking test cases.
54 (other comment)
Minor error in checkstyle after resolving merge conflict, resolved in PR #90
55 (other comment)
Went ahead with Sheng Yang's version in PR #64 .
56 (other comment)
Complete under PR #117
57 (other comment)
I believe pre-loaded data follows AB3 which provides the user with an example for how it looks like. We hope you understand the point of these default data.
58 (other comment)
We don't see anything wrong with this because there may be a chance of a user using this application only halfway through the semester and he or she wants to import session data from the past!
59 (other comment)
Thank you for the suggestion!
60 (other comment)
Linked to #201
61 (other comment)
Thank you for the suggestion!
62 (other comment)
Perhaps it'd be better if you could maybe list out the specific bug fixes for easier referral in the future though?
I have linked this PR to the specific issues.
@murtubak
(38 comments)1 (commented on others PR)
Maybe we could add an output method for whoever is doing the "View Module" portion.
2 (commented on others PR)
Is this just for short form?
3 (commented on others PR)
We should discuss what predicates to use for this class
4 (commented on others PR)
This test is not updated for additional info added to Module like Grade Tracker which I recently added. I will update this in the future.
5 (commented on others PR)
Also not updated for new info in the Module class, will update in the future commits
6 (commented on others PR)
Also needs updating for additional info put into module.
7 (commented on others PR)
I think we should find what other ways we can implement non-static init blocks.
8 (commented on others PR)
Can addcontact take in only the name without taking in the email and telegram? If it is a valid operation, I think these two lines of code might return null? Not so sure about this
9 (commented on others PR)
We should do boundary value testing for this in the future
10 (commented on others PR)
Could either elaborate on these parameters or remove them.
11 (commented on others PR)
Maybe we should re implement PrefixPosition in the future.
12 (commented on others PR)
Maybe there should be a description for the Javadocs of this constructor
13 (commented on others PR)
Should this be @code comparator instead of @code predicate?
14 (commented on others PR)
This was shifted into argument tokenizer from being in a separate class? Is it because only argument tokenizer is utilising this class?
15 (commented on others PR)
Should expand to single line imports to pass CI checks
16 (commented on others PR)
The other methods in this interface do not mention the access modifier, should we standardise?
17 (commented on others PR)
This probably fails the CI check.
18 (commented on others PR)
Can date be edited? if so perhaps should update the usage message
19 (commented on others PR)
If im not wrong, index out of bounds error message is stored under commons messages, can refer to the other features to see how it has been checked.
20 (commented on others PR)
Should this be in ParserUtil?
21 (commented on others PR)
Minor error. Maybe Event should be event instead of capitalised? and should be an event instead of a event.
22 (commented on others PR)
module is repeated multiple times throughout the javadocs.
23 (commented on others PR)
Module is referenced here instead of event.
24 (commented on others PR)
maybe logger doesn't need to be implemented if its not going to be used?
25 (commented on others PR)
Actually I don't think this needs to be under grade tracker? Since it would already be caught under module list parser and clearing module list would clear all attached grades as well, but there isn't any issue with leaving it here either.
26 (commented on others PR)
I think we should standardise this, either use INDEX or MODULE_POSITION across the board.
27 (commented on others PR)
I think Michael makes sense, but it should not be applied under the equals method. It sounds like a new method should be created for isSamePerson(). Matthias makes sense since the two objects should be exactly the same under the equals method.
28 (commented on others PR)
I think this should be changed from otherPerson to otherContact? likewise for the JavaDocs of this method.
29 (commented on others PR)
Since tags has been implemented for contacts, maybe we should look back at this and update it to also check for tags.
30 (commented on others PR)
minor typo here
31 (commented on others PR)
small type error
32 (commented on others PR)
another error here
33 (commented on others PR)
maybe can remove this.
34 (commented on others PR)
is this still necessary?
35 (commented on others PR)
is this supposed to show module for calculate cap success?
36 (commented on others PR)
not sure if necessary?
37 (commented on others PR)
Maybe we should reference all Persons as contacts just for clarity
38 (commented on others PR)
Perhaps should change from person to contact for clarity.
39 (commented on own PR)
Thank you for the comment. Agree with you, and have submitted new changes.
40 (commented on own PR)
Thank you for the comment. Have submitted changes for this.
41 (commented on own PR)
Agree with you, have made changes accordingly.
42 (commented on own PR)
Ok, sounds good.
43 (commented on own PR)
Ok thanks for the feedback, will update to make my code more defensive
44 (commented on own PR)
Ok, got it, thanks for the feedback.
45 (commented on own PR)
Thanks for the comments, I'll update accordingly.
46 (commented on own PR)
Thanks for the comments, updated the code to fix the issues raised.
47 (other comment)
Poor Pull Request with too many conflicts to merge easily. Will resolve conflicts and make a separate pull request
48 (other comment)
Theres a conflict to resolve with the MainApp file before merging, otherwise LGTM.
49 (other comment)
I think version 1 is most suitable.
50 (other comment)
closed as issue was repeated in #406
51 (other comment)
Updated the code to resolve the issues raised during feedback
52 (other comment)
fixes #568
@shadowezz
(38 comments)1 (commented on others PR)
I think maybe its better to switch the role.toString and role.getArgument() here as people may think role.toString is what they shld key in. Just a nitpick.
2 (commented on others PR)
I think this should be deliverable index.
3 (commented on others PR)
I think its better to import them first
4 (commented on others PR)
Perhaps it is better to make it into a datetime object
5 (commented on others PR)
Same as above
6 (commented on others PR)
Same as a above
7 (commented on others PR)
Maybe its better to display NIL like the rest
8 (commented on others PR)
Not sure if we should resolve overflow in this way. Perhaps we can check for it during parsing and regard this as an invalid date.
9 (commented on others PR)
I think there are some challenges with this cos we would then need to check if localDateTime is meant to be only a date or there is a time component also.
10 (commented on others PR)
I think you have some typos in the this class. Should be "meeting" instead of "person".
11 (commented on others PR)
I think can just remove this function
12 (commented on others PR)
When editing I thot all fields should be optional so we use a square bracket.
13 (commented on others PR)
I think I created a TitleDescriptionContainsKeywordsPredicate class in my latest pr so this may not be required.
14 (commented on others PR)
Can consider using "Finding meetings" so that phrasing is consistent with contacts
15 (commented on others PR)
I think should be title instead of name
16 (commented on others PR)
Same as above and I think you mean Mcdonalds.
17 (commented on others PR)
Minor grammar, "Displays more details of the specified ..."
18 (commented on others PR)
I think this can be clearer, maybe something like A stage in the software development process associated with a particular group of deliverables.
19 (commented on others PR)
Can consider "An item which need ..."
20 (commented on others PR)
I think its better to make it strictly less than.
21 (commented on others PR)
Perhaps its clearer to state that single digit hour and minute must start with a leading zero
22 (commented on others PR)
Could you include hour here as well
23 (commented on others PR)
Is this the same as TIME_REGEX?
24 (commented on others PR)
I think VALID_TO_B should still work since its updated to 12:00
25 (commented on others PR)
If we change the part in front this will now return false.
26 (commented on others PR)
Might need to change the comments here
27 (commented on others PR)
Perhaps we should shift this message to the deadline and from class and state explicitly that deadline/from should be in the format ...
28 (commented on others PR)
Same as above I think its better to shift this message into to class and say To should be in the format ...
29 (commented on others PR)
The error message for this prob needs to change also cos "to" is no longer a date.
30 (commented on others PR)
"without noticeable sluggishness"
31 (commented on others PR)
Is this point and the next point considered NFR? It seems to be requirements the user should meet instead of what our app should meet.
32 (commented on others PR)
An item to be completed as part of the project development process
33 (commented on others PR)
Capitalise first word of glossary below
34 (commented on others PR)
Sounds weird but idk what to change to
35 (commented on others PR)
yea sure
36 (commented on others PR)
like for each of the term below the explanation part
37 (commented on others PR)
Maybe change the first sentence to "The state of the application that affects how each command will be executed."
38 (commented on others PR)
Dont need a condition right since the rightPanelPlaceholder is cleared.
39 (commented on own PR)
wait i dont think so right
40 (commented on own PR)
But doesnt meeting have different attributes
41 (commented on own PR)
Marking deliverable as done is implemented through setDeliverable which already includes setDeliverableInView
42 (commented on own PR)
Didn't amend this cos I feel the hyperlink and find
formatting doesn't really look well together.
43 (commented on own PR)
yup done
44 (commented on own PR)
its in my other pr
45 (commented on own PR)
yes I did in the other PR
46 (commented on own PR)
Its cos i decided to wrap contacts also but with the space there the entire thing will go to next line. Do you think its ok?
47 (commented on own PR)
I think this is following the original AB3 DG
48 (commented on own PR)
I think here it refers to the big UI class so shld have ``
49 (commented on own PR)
I think we need to standardise cos chrystal also used prose
@xnoobftw
(37 comments)1 (commented on others PR)
maybe leaving commented code could get confusing in the future?
2 (commented on others PR)
@Wincenttjoi
3 (commented on others PR)
hi @Wincenttjoi
4 (commented on others PR)
Perhaps initializing maxQuantity to a value other than "0" is a better idea? Similarly to tags maybe leaving it empty is fine
5 (commented on others PR)
Perhaps not checking is fine too? Since we do not require max quantity to be a mandatory field. Having this check will go against our design
6 (commented on others PR)
Similarly if maxQuantity can now be empty i think having a method to check if maxQuantity is null prior to this block of code would prevent a parsing error
7 (commented on others PR)
Similarly to tag i think initiazing to a 0 is not a good idea because we'll eventually be using it to calculate percentages
8 (commented on others PR)
Agree. MaxQuantity is an Optional>Quantity>
9 (commented on others PR)
should quantity come before item name?
10 (commented on others PR)
Should be address, not supplier
11 (commented on others PR)
HAHA i think we should just commit on his behalf. it's a minor issue
12 (commented on others PR)
@halcon-blanco as discussed in telegram, we should probably create a wrapper class so we can make use of polymorphism instead of using instanceof
13 (commented on others PR)
But for now let's implement the rest on top of this first
14 (commented on others PR)
Should it check for deliveryModel to be nonNull too?
15 (commented on others PR)
Should it check for deliveryModel to be nonNull too?
16 (commented on others PR)
@halcon-blanco i have a suggestion. We should make use of DeliveryCommand and ItemCommand abstract class to have a abstract method execute that takes in its respective model. This will adhere to OpenClosed principle better
17 (commented on others PR)
I feel that similarly to the command Hisotry there should be a limit of how many times u can redo incase of memory overflow
18 (commented on others PR)
Like limit the number of state stateList holds
19 (commented on others PR)
In my experience with CommandHistory's previousCommand(), be wary of the corner case if suppose:
you have 2 states, state#1, state#2
undo() should return you to state#2 and not state#1.
Could you give that a shot? Maybe either via junit tests or manual testing
20 (commented on others PR)
This is a complication from having the pointer pointing at the last element of the list
21 (commented on others PR)
Nvm ignore me i've read through your implementation and realised its different
22 (commented on others PR)
Perhaps instantiate arraylist with a initial capacity to optimize performance (remember from 2040s they taught us that arraylist copies over and doubles in size everytime its limit is hit)
23 (commented on others PR)
Eg private static List>DeliveryBook> deliveryBookStateList = new ArrayList>>(MODEL_STATE_LIMIT);
24 (commented on others PR)
and i feel that it shouldn't be a static variable simply because we may use different instantiation of deliverybooks in testing as well
25 (commented on others PR)
i think a better condition would be canRedo() instead
26 (commented on others PR)
having it as canRedo optimizes performance as we only really need to do a copy if there exist downstream "commits"
27 (commented on others PR)
ArrayList.size() != Capacity btw @halcon-blanco
28 (commented on others PR)
Thanks!!
29 (commented on others PR)
shall merge into master first so others can work with new design prior to implementing undo/redo tests
30 (commented on others PR)
Add
undoThenUndoThenRedo test
and
undoThenUndoThenRedoThenRedo test
31 (commented on others PR)
maybe state what for!
32 (commented on others PR)
same here
33 (commented on others PR)
is there an extra r?
34 (commented on others PR)
is this supposed to wrap around 4.7?
35 (commented on others PR)
misspell mee
36 (commented on others PR)
Ah got it! Thank you!!
37 (commented on others PR)
LMAO
38 (commented on own PR)
Yeap that sounds better! Made changes
39 (commented on own PR)
just pushed! take a look
40 (commented on own PR)
Fixed! thanks for pointing it out!
41 (commented on own PR)
Same! Fixed
42 (commented on own PR)
Take a look now! added comments
43 (commented on own PR)
Fixed! take a look!
44 (commented on own PR)
to adhere to similar level of abstraction in the code
45 (commented on own PR)
Done! Take a look
46 (commented on own PR)
o it's auto generated by intellj HAHA but i'll change it to match!
47 (commented on own PR)
The method name would be misleading in my opinion
48 (commented on own PR)
Attempting to do it now
49 (commented on own PR)
Done! @halcon-blanco please check
50 (commented on own PR)
@halcon-blanco did that! it turns out this helped iron out bugs so much thanks!
51 (commented on own PR)
I changed it to updateItemListFilter!
52 (commented on own PR)
Opps my bad! Thanks for pointing it out
53 (commented on own PR)
Changed!
54 (commented on own PR)
Changed!
55 (commented on own PR)
Thanks! Sorry for the oversight
56 (commented on own PR)
Done! That's a good idea thank you!
57 (commented on own PR)
Added!
58 (commented on own PR)
Paraphrased!
59 (commented on own PR)
Remedied! Good catch!
60 (commented on own PR)
Added! Thanks!
61 (commented on own PR)
The white spacing is indeed abit too big with 2 >br>
added your change! Thanks!
62 (commented on own PR)
Figure is hyperlinked instead of placed there
63 (commented on own PR)
Got it!
64 (commented on own PR)
Paraphrased! Take a look!
65 (other comment)
wednesday 16th September 2020 8pm start coding
66 (other comment)
@Wincenttjoi yeap that's the plan. it's in this week's tutorial submission
67 (other comment)
buggy PR
68 (other comment)
Highly likely it's because of preference.json as AB3 tries to read userpref before inputting default values for GUI
69 (other comment)
Would it be possible for it to bypass preferences.json by ignoring the presence of it instead of manually deleting the file?
70 (other comment)
@xnoobftw one way is to not put preferences.json inside gitignore, but this default value is meant for first time users. Since all of us are developers, its okay to delete it (because users perspective as first time users they will not have the preferences.json)
sounds good! LGTM
71 (other comment)
LGTM!
72 (other comment)
Hi @halcon-blanco could u comment out the failed test cases so i know which ones to work on + CI wont fail? Thanks!
73 (other comment)
@wengfaing btw have you fixed this in your add metric PR?
74 (other comment)
A delivery model requires name, phone, address and order. Is the PR meant to be complete or is it WIP? Just checking because I can't seem to find any of these in the PR
It's to be implemented by @zeranium97 when he implements storage
75 (other comment)
IMO having more space for delivery makes sense as it composes more information
76 (other comment)
Disagree. Different restaurants may use different kinds of metrics and having metrics follow enums we may not cover all cases. In such cases edit command would suffice to correct the error
77 (other comment)
You mean whether the search word is a substring of item?
78 (other comment)
could we implement that just for phone number and address?
79 (other comment)
Delivery order sounds good! We could potentially reuse Quantity from Items package
80 (other comment)
@halcon-blanco isit okay if u took this? Since you implemented find for delivery!!
81 (other comment)
Refer https://github.com/AY2021S1-CS2103T-T12-1/tp/commit/0f5717d4ac91e4074c182c77b4ffb670eb78f0fe
82 (other comment)
as discussed with @halcon-blanco , we feel that having a wrapper class that holds instantiation of both DeliveryModel and InventoryModel is better than having to use instanceof to check and having to overload the Command#execute method due to huge amount of repetition of code
Following the wrapper class idea adheres to SLAP principle more than the latter solution
@AY2021S1-CS2103T-T12-1/developers FYI
83 (other comment)
@xnoobftw If you are okay with implementing, I think it would be good to return a message on the commandbox to make it consistent with other commands
May i know what you mean by this?
84 (other comment)
@xnoobftw If you are okay with implementing, I think it would be good to return a message on the commandbox to make it consistent with other commands
May i know what you mean by this?
So an example would be after the command
sort ...
a line should return on the command box
A possible reply would be like: You inventory item/delivery is sorted according to .............
If i'm not wrong our agreement was that sorting will be done implicitly and does not require a sort command
85 (other comment)
Refer https://github.com/AY2021S1-CS2103T-T12-1/tp/commit/977699417b62170546c6bb6c477710e13d9b377b
86 (other comment)
Because there's alrdy one from AB3 and it's easier to refactor then to do from scratch
87 (other comment)
And I accidentally did it actually in my PR
88 (other comment)
HAHAHAHAH @halcon-blanco
89 (other comment)
@xnoobftw
- do you want to add small note on ur diagram to briefly describe what XYZ is?
- Arrow for >> Parser on the Parser section is abit misleading, mind to remedy that to make it more coherent?
- Perhaps you can also bring the Command and Parser box bigger (filling up >80% of the space) bcs there's too much white space and its too small for people to see. Size of individual blue boxes can also increase in size if you dm 👍
- Executes labelling on command part not clear on which line it should belong to
- HelpCommandResult extends from CommandResult missing
- I think there's no more concrete XYZCommand since they are all extracted to the smaller commands (items, delivery, help)
- Sequence diagram for logic seems ok
Will do!
Do you mean having a solid line? Because it's how its represented in AB3
Do you mean increasing the font size?
The PUML auto generates this D:
Added! Thanks
Redo, Undo command still does! exit too
90 (other comment)
@xnoobftw try to occupy the diagram >80% of the picture! If not too small hahha.
Edit: I realized that we can't reposition the arrows, just saw the documentation hahah. Not sure if 2 is doable
Idt 2 and 3 is doable due to puml automating it
But does this fulfil ur requirement!
91 (other comment)
It's enabled
92 (other comment)
refer https://github.com/AY2021S1-CS2103T-T12-1/tp/commit/977699417b62170546c6bb6c477710e13d9b377b
93 (other comment)
Idt 2 and 3 is doable due to puml automating it
But does this fulfil ur requirement!
@xnoobftw
Can check this out for 3 https://plantuml.com/skinparam
Reason being is because we need to make our dg comprehensible thats why we shdn't just leave this out even though it seems trivial
Yup looks good! (Apart from box sizing)
Increased fontsizes to 30!
94 (other comment)
There's a couple of errors in the diagram! Check out the ss i tagged
95 (other comment)
And another update! I dont see a uniquetaglist class in the folder unless im mistaken! and i dont think we should show inventory book in the item class diagram
96 (other comment)
Remember multiplicity and deliverybookstorage is an interface!
97 (other comment)
Is there anyway to adjust so that the multiplicity is not blocked? Try increasing the lenght of the arrow
98 (other comment)
This part is abit misleading, update an item sounds like editing
Updated to Adds instead of Updates
99 (other comment)
@AY2021S1-CS2103T-T12-1/developers i'll be adding introduction as such
Fine with you guys?
Looks good!
@AY2021S1-CS2103T-T12-1/developers
She actually annotated this though, shall we change to tuna?
as discussed Tuna would be abetter choice as CHICKE outright looks like a typo
100 (other comment)
@xnoobftw you may want to consider orientating the reader on your screenshot. Lets say the screenshot is to explain you want to key in inside the commandbox, questions to consider:
- Is it really necessary to screenshot the entire application for filling up the command box?
- Would you want to highlight the commandbox since that is the focus?
- Should you just screenshot the commandbox part instead?
Just feel that its a little bit overkill to repetitively screenshot, but just personal opinion.
I think that screenshotting the entire applciation helps with navigating the app esp to a user.
To preserve consistency can i ask for your help in the highlighting the commandbox and result boxes respectively in both png? reason being we'd probably want it to look similar to Figure 1
@Wong-ZZ
(37 comments)1 (commented on others PR)
Shouldn't example usage (below) be updated to include the IC field as well?
2 (commented on others PR)
Shouldn't a javadoc comment be included similar to the other models?
3 (commented on others PR)
Shouldn't there be a multiple ICs test?
4 (commented on others PR)
Shouldn't there be a missing IC prefix test?
5 (commented on others PR)
Shouldn't there be an invalid IC test?
6 (commented on others PR)
Shouldn't there be an invalid IC test?
7 (commented on others PR)
Shouldn't parse_oneFieldSpecified_success
and parse_multipleRepeatedFields_acceptsLast
also have tests for IC?
8 (commented on others PR)
Shouldn't there be tests for null and invalid IC?
9 (commented on others PR)
Shouldn't it be BloodType
instead of weight
?
10 (commented on others PR)
If you refer to the javadoc for the other methods, shouldn't it be @code String BloodType
and @code bloodType
?
11 (commented on others PR)
Shouldn't it be bloodtype
instead of weight
?
12 (commented on others PR)
Shouldn't there be a description of the parameter?
13 (commented on others PR)
Should it be Constructor
instead of constructor
?
14 (commented on others PR)
Javadoc comment does not follow the coding standards
15 (commented on others PR)
Shouldn't it be there be a space before Blood type:
?
16 (commented on others PR)
Shouldn't it be BloodType.MESSAGE_CONSTRAINTS
instead of Weight.MESSAGE_CONSTRAINTS
?
17 (commented on others PR)
Shouldn't it be blood type
instead of weight
?
18 (commented on others PR)
Shouldn't all the missing field prefix test also include VALID_BLOOD_TYPE_BOB
so that the tests would be consistent with each other?
19 (commented on others PR)
Shouldn't it be blood type
instead of weight
?
20 (commented on others PR)
Shouldn't method header comments start with a verb?
21 (commented on others PR)
The class header comment is not consistent with the class header comment like Phone
or Email
22 (commented on others PR)
Shouldn't all these "N/A"
be abstracted out?
23 (commented on others PR)
Why not use the stringEmail
, stringAddress
... methods?
24 (commented on others PR)
OPTIONAL_FIELD_EMPTY_MESSAGE
and "N/A"
has been used over multiple classes. Maybe they can all use the same constant in one of the classes?
25 (commented on others PR)
Same as before, why not use the stringEmail
, stringAddress
... methods?
26 (commented on others PR)
Is it necessary to use nested Optional
?
27 (commented on others PR)
You can use the or
method so that the get*Field*
method does not have to return a nested optional
28 (commented on others PR)
You could maybe use the ifPresent
method
29 (commented on others PR)
Why not use the stringEmail
, stringAddress
... methods?
30 (commented on others PR)
why not use the stringEmail
, stringAddress
... methods?
31 (commented on others PR)
I think you forgot to update this part
32 (commented on others PR)
Shouldn't it be getStringIc
instead of getStringIC
?
33 (commented on others PR)
TableView
is missing its generic type
34 (commented on others PR)
Shouldn't it be TableColumn>Patient, String>
instead?
35 (commented on others PR)
Shouldn't the imports be written explicitly?
36 (commented on others PR)
Shouldn't both "admin"
and the error message be abstracted out?
37 (commented on others PR)
Same as above
38 (commented on own PR)
Yep
39 (other comment)
Part of #148
@junhui-phoon
(36 comments)1 (commented on others PR)
think there's a typo here, eva.jar -> MyFitnessBuddy.jar
2 (commented on others PR)
should be the original persons, this MIT license file no need to edit.
3 (commented on others PR)
need to change the logger message also
4 (commented on others PR)
is this still supposed to be getAddressBook() or getPerson()? Only the Javadocs header is changed but not the actual code.
5 (commented on others PR)
Refactor this method
6 (commented on others PR)
hmm now calorie command no need dates?
7 (commented on others PR)
need a Javadocs header here to explain what this class is for.
8 (commented on others PR)
javadocs header for the class and the methods, just copy, paste and edit from other existing ones.
9 (commented on others PR)
refactor the ReadOnlyAddressBook interface
10 (commented on others PR)
refactor this whole interface class
11 (commented on others PR)
javadocs header here
12 (commented on others PR)
javadocs header
13 (commented on others PR)
javadocs header
14 (commented on others PR)
refactor this method
15 (commented on others PR)
Need to edit this javadoc
16 (commented on others PR)
This one should be Stopping My Fitness Buddy haha
17 (commented on others PR)
this whole class refactor to MyFitnessBuddyParser
18 (commented on others PR)
refactor this class to MyFitnessBuddy
19 (commented on others PR)
refactor this class to ReadOnlyMyFitnessBuddy
20 (commented on others PR)
Javadocs header
21 (commented on others PR)
Javadocs header
22 (commented on others PR)
Javadocs header
23 (commented on others PR)
Javadocs header
24 (commented on others PR)
Edit: Creates a {@code DayCard} with the given {@code Day}, index to display, and the given {@code MainWindow}.
25 (commented on others PR)
Edit: Creates a {@code DayListPanel} ...
26 (commented on others PR)
Maybe change this to describe that this method updates the calorie list panels when there is an update to the calorie lists, because the calorie placeholders are already filled in fillInnerParts method.
27 (commented on others PR)
Javadocs for class
28 (commented on others PR)
actually can just remove these statements, since we don't compare weight and tags
29 (commented on others PR)
Javadocs for both class and constructor
30 (commented on others PR)
Javadocs
31 (commented on others PR)
expend
32 (commented on others PR)
javadocs header
33 (commented on others PR)
javadocs
34 (commented on others PR)
javadocs header
35 (commented on others PR)
javadocs
36 (commented on others PR)
javadocs
37 (commented on own PR)
actually there is an overloaded constructor for other commands, but i will create one for the stats command for the 3 boolean values.
38 (commented on own PR)
ok added in the upcoming commit
39 (other comment)
i will wait for @wayne987 PR then i will merge to prevent conflicts.
40 (other comment)
can sync your fork with the team repo again? so the CI can pass
41 (other comment)
left @wayne987 part
42 (other comment)
yeap is correct
43 (other comment)
closed without merging
44 (other comment)
closed without merging
45 (other comment)
closed without merging
46 (other comment)
LGTM
47 (other comment)
I will leave this issue open if there's anything more to add. Link a new PR to it if have.
48 (other comment)
Still rewriting all the test cases code, CI will fail
49 (other comment)
Weight is added using the 'add' command with a prefix 'w/', additional fields will be removed in another PR.
50 (other comment)
Current UI modifications for MVP
51 (other comment)
@wayne987 please review thanks
52 (other comment)
Closed without merging, code not required
53 (other comment)
CI is expected to fail
54 (other comment)
Before Fix:
After Fix:
55 (other comment)
Looks good to me.
56 (other comment)
Calorie Stats:
Weight Stats:
Will change the miscellaneous stuff (background colour etc) later
57 (other comment)
will it be better if theres another separate Statistic class that calculates all the required data for calorie and weight instead?
no calculation involved here, all the required data is pulled from Observable List
58 (other comment)
Dark Theme for Charts:
59 (other comment)
Already done, just need to merge my previous stats PR #89
60 (other comment)
I would recommend that this will be merged first
61 (other comment)
Merge this PR only after PR #89 because this branch is merged with commits from PR #89
62 (other comment)
Merge only after PR #103; need to verify sorting for charts
63 (other comment)
Changed to Bar Chart for calorie stats for better visualization:
64 (other comment)
Duplicate of #190, #175
65 (other comment)
when you don't read user guide...
66 (other comment)
No bug for generation of graph, 'stats' command is used to display the graphs
maybe remove the mouse click functionality and instead implement a command to view the calorie details for a particular day.
67 (other comment)
will fix this, did not ensure input checking when refactoring from phone class
68 (other comment)
gonna add command summary to the window then
@Avalionnet
(36 comments)1 (commented on others PR)
Small nit but will it be better to use the word patient here instead?
2 (commented on others PR)
Hmm was wondering if IC here will now refer to INDEX instead as we adopted the new command syntax?
3 (commented on others PR)
Perhaps we can consider including another section detailing our acceptance of natural date syntax above to provide users with a clearer understanding of our date syntax.
4 (commented on others PR)
Yup! It looks great 😃
5 (commented on others PR)
Hmm maybe you can consider updating this too as they will probably ask us to do it in the weeks ahead. But it's not essential for this iteration so no worries!
6 (commented on others PR)
Yup I think he missed that out too, good spot @JinHao-L . Perhaps it'll be better to include a breakline after the "]" as well to separate the example from the format?
7 (commented on others PR)
Oh and I think DATE can be an optional input here as well according to our user guide. Adding the link here for quick access 😃
8 (commented on others PR)
Hmm, as @YangYue128-helen mentioned, perhaps it'll be ok to leave out this check as we are able to support view commands without a DATE
predicate as well?
Based on line 53 of ViewCommand.java
, the current system seems to support the display of all future appointments if the predicate input is null (in the case that a date is not entered by the user) so I think you've got it covered @ZhangWanlin98 👍🏻
9 (commented on others PR)
Oh wait after reviewing NuudleParser
as mentioned by @JinHao-L , I think the check done here is actually valid as the ViewCommandParser is only instantiated if extra input by the user following the view
command is detected. Hence, it actually indicates an invalid command format if PREFIX_DATE
is empty as it would mean that something else is written.
10 (commented on others PR)
Yeah I agree with @ZhangWanlin98 that it may be better to import the DateTimeLoader
class directly to improve code readability and keep the variables used on the same level of abstraction.
11 (commented on others PR)
Perhaps it will be better to phrase it in the following way Creates a DoneCommand to mark the specified appointment as done
? Let me know what you think of this 😃
12 (commented on others PR)
There seems to be some grammatical error here. It should be returns a DoneCommand object
instead.
13 (commented on others PR)
Think you missed out a "to" and full stop here. Perhaps it will be better to phrase it as if the user input does not conform to the expected format.
14 (commented on others PR)
Hmm perhaps you're referring to {@code editedAppointment} here instead of editedPatient?
15 (commented on others PR)
Perhaps the appointment should exist in the AppointmentBook instead of the PatientBook(formerly AddressBook)?
16 (commented on others PR)
Hmm perhaps the ! on line 66 should be omitted as it looks like it’s throwing an exception for duplicated appointments when it detects non overlapping appts instead. Let me know what you think about this 👍
17 (commented on others PR)
Nice catch 😉
18 (commented on others PR)
Thanks for changing them to more applicable tags for our context!
19 (commented on others PR)
Good catch!! And thanks for updating the user stories too 😄
20 (commented on others PR)
Should PersonListPanel
be PatientListPanel
instead?
21 (commented on others PR)
Hmm perhaps the phrase "mark appointments" and "feature" should be in lower case?
22 (commented on others PR)
Perhaps you may consider the following phrase instead "Please refer to the following for an example usage scenario on how the mark as done mechanism works in each step:".
Let me know what you think! 😄
23 (commented on others PR)
Maybe it'll improve the flow by replacing the phrase "As a last step" with "Lastly,".
Also, it seems to me that you missed out a "a" in "CommandResult
with a SuccessMessage
".
24 (commented on others PR)
Great job on the diagrams!! 😄
25 (commented on others PR)
Hmm, perhaps all instances of "Person" should be changed to "Patient" for the diagrams.
26 (commented on others PR)
Jin Hao's phrasing looks good to me too 👍🏻
27 (commented on others PR)
Hmm, perhaps you can consider the following phrase instead, "books an appointment at 2am for the 1st patient in the list on the coming Sunday for a duration of 40 minutes.
Additionally, I think it'll be better if we use 2pm as an example instead cause 2am is in the middle of the night and outside the usual operating hours 😅
28 (commented on others PR)
Same here for the am!
29 (commented on others PR)
Would it be better if we phrase it as "(unit in minutes)" instead?
30 (commented on others PR)
Excellent work on this 👍🏻
31 (commented on others PR)
Good job considering all the cases 👍🏻
32 (commented on others PR)
Perhaps the prefix [r/REMARK] can be added to the command syntax for both the add and edit commands.
I've just made this change in our user guide as well in my latest PR 👍🏻
33 (commented on others PR)
Perhaps a line showcasing the remark command can be included as well? Let me know what you think 😄
34 (commented on others PR)
Yea I agree with Jin Hao, but perhaps adding a the
in Writes the given string
would be better?
35 (commented on others PR)
Thanks for fixing this! Was gonna change it later cause I was consulting our TA abt it too. Apparently, Prof accepts Draw.io diagrams too haha but nonetheless using plantUML is a much safer choice
36 (commented on others PR)
Looks great! Just wondering if it'll make it look even better to add a >br> before and after the pics for the text to look better? Lemme know whatcha think 😃
37 (commented on own PR)
Thanks for pointing this out! I thought of this too but figured that it'll be better to change the package name in a separate PR as the current one only focusses on refactoring the AddressBook class. It will be easier for version control as well.
38 (commented on own PR)
Hmm I think it's more suitable to keep it as versionedPatientBook as the original extended AddressBook as well which does not handle appointments.
39 (commented on own PR)
Oh yes great spot! I'll make the necessary changes, though I believe that applying trim on our argument input will have also removed the trailing whitespace.
40 (commented on own PR)
Hmm I added the square brackets following the tutorial given in our textbook. I believe they added it in as entering an empty remark serves to remove an existing remark assigned to the same patient. Currently, nurses can use the remark command to both create new and modify existing remarks.
Will it be better to delegate this task to the edit command instead?
41 (commented on own PR)
Oh I've done some tracing and found that IllegalValueException
is normally used when your method is passed a wrong input.
In the case of parseIndex
, a ParseException
is thrown to represent the errors encountered when the input index isn't a valid number (i.e >0) or is a letter.
However, since ParseException
extends IllegalValueException
, using IllegalValueException
in this catch block will allow us to catch various kinds of ParseException
should we decide to extend the functionality of our code in the future since it's the parent class.
42 (commented on own PR)
Hmm makes sense, alright I'll change it over to ParseException
! Figured otherwise at first as the tutorial employed the use of IllegalValueException
as well.
43 (commented on own PR)
Personally, I think it'll be a good addition to have this enhancement for our future iterations as it may seem like a bug if we are able to cancel
an appointment that happened in the past. However, I realized that it shouldn't be the case for done
since we will only mark an appointment as completed after it has occurred. Thanks for pointing it out Jin Hao 😃
Would love to hear from the rest too!
44 (commented on own PR)
Yup I left it there as a placeholder as I'm still wondering if there are any forms an Invalid Remark can take. Any thoughts on this Jin Hao?
45 (commented on own PR)
Nice catch! Thanks for spotting this 😄
46 (commented on own PR)
Yup I agree with you too Wanlin.
47 (commented on own PR)
Changed it! 👍🏻
48 (commented on own PR)
Yea good point! I'm able to limit the number of characters a user can add for a remark. However, I think the challenge with doing this may be the need to display the number of characters remaining(while the user is typing?) as it'll be hard for the user to manually count the number of characters added.
49 (commented on own PR)
Thanks for spotting this 😉
50 (commented on own PR)
HAHA thanks bro 😃
51 (commented on own PR)
Yeah I agree with Wanlin on the abstraction part but I can also see the point about consistency. Hmm, I'll change it to match the style used in the rest of the files instead 👍🏻
52 (commented on own PR)
Thanks for spotting this! Missed this out when I was editing it 😄
53 (commented on own PR)
👍🏻
54 (commented on own PR)
oh yea nice spot 👍🏻
55 (commented on own PR)
oh, thanks for spotting this bro 👍🏻 missed it out when I was editing the code haha.
56 (commented on own PR)
HAHA thanks 😃
57 (commented on own PR)
Oh yea!! Nice catch thanks 😄
58 (commented on own PR)
Added! Realize it was absent in EditCommand so I added it there as well.
59 (commented on own PR)
Excellent spot!
60 (commented on own PR)
Hmm I've looked into using plantUML for the class diagram. However, the way plantUML generates its class diagram may not be accepted by our module due to its unconventional layout. Not really sure if I remembered correctly from one of our tutorial sessh but the following layout by plantUML looked familiar to the rejected version.
61 (commented on own PR)
Thanks! 😄
62 (commented on own PR)
Good idea!
63 (commented on own PR)
Oh i think xin zhe added the implementation for EditCommand. But yea we don't have the implementation details for AddCommand 😕
64 (other comment)
As a nurse, I can easily check the patient’s drug allergy history so that I can double-check if the medicines prescribed are not in the list.
65 (other comment)
Hey Jin Hao, thank you so much for pointing out the error!
I've been meaning to consult the team prior to seeing your comment. The links you provided were really helpful to the resolution of the test errors I encountered. Alternatively, I have updated the settings in my IntelliJ to resolve the issue. You can check out the following link for the alternative strategy I employed.
https://www.jetbrains.com/help/idea/configuring-line-endings-and-line-separators.html
66 (other comment)
LGTM 👍🏻
67 (other comment)
Duplicated issue. (#72)
68 (other comment)
Thanks @JinHao-L , currently working on the changes!
69 (other comment)
Fixed checkstyle, added and modified existing tests to support the addition of Nric.
70 (other comment)
Thanks for checking it out Jin Hao and Wanlin 👍🏻
71 (other comment)
Thanks Yang Yue and Jin Hao!! Originally planned to add the test files in a separate PR haha. Am working on them now 👍🏻
@teekoksiang
(35 comments)1 (commented on others PR)
Should there be a new line between 1a and 1a1? This is also applicable to line 334 and 335.
2 (commented on others PR)
Should there be an indication of the next step for the use case?
3 (commented on others PR)
Should the block and room number be separated? e.g. b/BLOCK r/ROOM_NUMBER
It would be easier for the user to type without the formatting error.
4 (commented on others PR)
This part perhaps can declare it as MESSAGE_USAGE
in the ExportCommand
?
So, it follows the current exception handling approach.
Can refer to AddCommand and AddCommandParser.
5 (commented on others PR)
Perhaps can replace 1
and 2
with named constant to improve the readability?
6 (commented on others PR)
Omit this blank line?
7 (commented on others PR)
handleEmail
and handlePhone
both need to create the file and get the person list first.
Can consider declaring a method to do this part, then pass the person list to handleEmail
and handlePhone
.
8 (commented on others PR)
The difference is minor, mainly to reduce the repeated codes.
9 (commented on others PR)
Perhaps can include the capitalized email
and phone
to show it is case insensitive?
Does it need to include the COMMAND_WORD
'export' for the second argument of assertParseSuccess
? As assertParseSuccess
from XYZCommandParserTest
does not include the COMMAND_WORD
.
10 (commented on others PR)
Should export email phone
and export phone email
be parsed successfully?
11 (commented on others PR)
Good test cases to check the feedback message.
Can consider checking whether the output file contains the correct exported information (email, phone).
12 (commented on others PR)
I just realised MESSAGE_USAGE
of ExportCommand
contains 'Invalid command format!\n' message, it should just contain the usage message similar to the MESSAGE_USAGE
from other XYZCommand
, so it will follow the current AB3 convention.
Can refer to the AddCommand
.
13 (commented on others PR)
Should parse
method handle exception related to the invalid command format? As ExportCommandParser
parses the command.
14 (commented on others PR)
Good job in comparing the output file with the correct output file.
Are the println
and lineNum
for debugging? Can return areEqual
.
15 (commented on others PR)
I added the comment for handling invalid command format in ExportCommandParser
.
Perhaps can consider adding test case for it.
16 (commented on others PR)
Oh I mean the PR review comment for ExportCommandParser
.
"Should parse
method handle exception related to the invalid command format? As ExportCommandParser parses the command."
If you throw ParseException
in ExportCommandParser
, then perhaps can add parse_invalidArgs
test case?
17 (commented on others PR)
Perhaps can declare MIN, MAX_FLOOR_NUMBER
and MIN, MAX_ROOM_NUMBER
as a static variable and use it to validate room
and floor
? It may be clearer and more readable.
18 (commented on others PR)
Perhaps can declare MIN, MAX_FLOOR_NUMBER
and MIN, MAX_ROOM_NUMBER
as a static variable and include it in the MESSAGE_CONSTRAINTS
?
19 (commented on others PR)
Should setBlockPref
and setRoomPref
be handled in ModelManager
to follow the separation of concerns principle? As ModelManager
handles Model
related functions.
20 (commented on others PR)
Move this method to UserPrefs
as it is more related to it? E.g. setGuiSettings
in UserPrefs
21 (commented on others PR)
Okay, I see what you are coming from. As storage.readAddressBook()
reads addressbook.json
and converts JsonAdapterPerson
to Person
, it will do the validation check for every Person
field.
Do remember to update JsonAdapterPerson#toModelType()
to do a null and validation check for Block
and Room
before declaring it.
22 (commented on others PR)
Perhaps String[]
will be more suitable for blockSettings
instead of String
?
And roomSettings
with 420
is quite confusing, can consider breakdown to min, max floor and room number.
23 (commented on others PR)
Should blockPref
be derived from UserPrefs#getBlockSettings()
?
24 (commented on others PR)
Can consider adding set MIN_FLOOR_NUMBER
and MIN_ROOM_NUMBER
, e.g. level 1 is the common lounge.
25 (commented on others PR)
Okay, noted.
26 (commented on others PR)
Change to camelCase for not constant variables?
27 (commented on others PR)
Oh, I refer to JsonAdaptedPerson#toModelType
method. The current convention will do a null and validation check for every field before converting the JsonAdapterPerson
to Person
.
There is missing of null and validation check for block
and room
String.
28 (commented on others PR)
Hmm you mean MESSAGE_DELETE_EVENT_SUCCESS
?
29 (commented on others PR)
For the invalid message, maybe can abstract "The first character represents the block, the next 3 {characters} represents the room number"
as MESSAGE_INVALID_BLOCK_ROOM_FORMAT
. And display the error message when the format is wrong.
E.g. edit 1 br/3232
Error message: Block should be 1 of the following alphabets A, B, C, D
As mentioned in #211, it might be clearer to mention the valid format for br
.
30 (commented on others PR)
Is this part also needed for EditCommandParser
?
31 (commented on others PR)
Should it be >=
instead of >
and >=
instead of >
?
Same for setMaxFloorSettings()
.
32 (commented on others PR)
Need to handle the case when minFloorSettings
> maxFloorSettings
, but maxFloorSettings
is invalid.
E.g. minFloorSettings
= 99, maxFloorSettings
= 100
After validationCheck()
, minFloorSettings
= 99, maxFloorSettings
= 4
Same for roomSettings
.
33 (commented on others PR)
"Locations"
is Event's name
here?
34 (commented on others PR)
One thing to consider, when comparing name
and location
, should it use equalsIgnoreCase
?
35 (commented on others PR)
Should there be some positive test cases as well?
Similar for EventNameTest
.
36 (commented on own PR)
Fixed, thanks.
37 (commented on own PR)
Yes, I forget about it, thanks 👍
38 (commented on own PR)
Good catch, will update it.
39 (commented on own PR)
Yes, will remove it, thanks for discovering it 👍
40 (commented on own PR)
Yes, I should add that step. Thanks.
41 (commented on own PR)
I was thinking about not writing it too. I will remove this then.
42 (commented on own PR)
Noted, thanks.
43 (commented on own PR)
Yes, accidentally typed "studyGroup".
44 (commented on own PR)
Good point, will update it.
45 (commented on own PR)
Good catch, I have updated the logic.
46 (commented on own PR)
Right, it complicates the logic, I have updated it to return addressbook.getPersonList()
. Thanks.
47 (commented on own PR)
Not really, updated the pr to follow the convention. Thanks.
48 (commented on own PR)
Good point! Updated the implementation.
49 (commented on own PR)
Good point, fixed.
50 (other comment)
Update command summary and change 'person' to 'resident' in the User Guide.
Need to confirm about the CLI syntax for block and room number (combine together or separate).
51 (other comment)
Update the CLI syntax for room number. r/ROOM_NUMBER
E.g. r/B402
52 (other comment)
Close this issue as it is implemented in #117
53 (other comment)
Close this issue as it is implemented in #114
54 (other comment)
Close as it is open in #180
@yanlynnnnn
(35 comments)1 (commented on others PR)
Agreed. The user might not know the exact start and end dates of his semester, and we also do not need to take into account the user entering invalid start and end dates if we provide them for the user instead.
2 (commented on others PR)
AY20/21 Sem
missing a '1'
3 (commented on others PR)
*Duration is measured in hours and must not exceed 24 hours
4 (commented on others PR)
Same rephrasing as above comment
5 (commented on others PR)
*has
Can omit the second line if we are providing them with the start and end dates?
6 (commented on others PR)
Will listpresettasks be more intuitive since it will be a list of preset tasks?
7 (commented on others PR)
Remove a Module and all its Module Tasks from the Module Schedule
8 (commented on others PR)
*load all its Module Tasks
9 (commented on others PR)
If its "CS2103T", maybe we can change it to MODULECODE
10 (commented on others PR)
Do we have a method to list all the task templates or will the GUI take care of that?
11 (commented on others PR)
Use either remove or delete
12 (commented on others PR)
Agreed
13 (commented on others PR)
*listmymodules
14 (commented on others PR)
List all the modules that the user has selected.
15 (commented on others PR)
tasks*
16 (commented on others PR)
Maybe can change to List all tasks instead of Listing a Task Schedule? As schedule itself refers to a list of tasks
17 (commented on others PR)
Think you might have added an extra '.' at the end!
18 (commented on others PR)
Should it be 'parameters' instead of 'parameter'?
19 (commented on others PR)
Should SERVICE_CODE be added here?
20 (commented on others PR)
maybe can replace 'additional' with another word, or just write 'displays a success message'?
21 (commented on others PR)
*updates
22 (commented on others PR)
*requests
23 (commented on others PR)
*deletes
24 (commented on others PR)
*match
25 (commented on others PR)
*match
26 (commented on others PR)
*shows a, *match
27 (commented on others PR)
*an
28 (commented on others PR)
*displays
29 (commented on others PR)
*an
30 (commented on others PR)
*At least one service exists in the service list
31 (commented on others PR)
Does it guarantee an empty service list as well?
32 (commented on others PR)
maybe can change description to details?
33 (commented on others PR)
*service
34 (commented on others PR)
*GrAB3 shows the list of expenses sorted in ascending order
35 (commented on others PR)
Should be 'expense' instead of 'revenue' here
36 (commented on own PR)
I'm currently using the Tag Class provided by AB3 which does not handle white space, will handle it subsequently if it is consistent with the other features using the same Tag Class.
37 (commented on own PR)
Noted, I have changed it from a character to a String. Thanks for pointing out!
38 (other comment)
@qlchan24
(34 comments)1 (commented on others PR)
Addressbook can be changed to CLI-nic
2 (commented on others PR)
'serves'
3 (commented on others PR)
name changed
4 (commented on others PR)
name changed
5 (commented on others PR)
Seems like this can be final also.
6 (commented on others PR)
Perhaps the updatedQuantity should be renamed to productQuantity, because it seems like this should be a general constructor that future functions other than updateQuantityForWarehouse can use.
7 (commented on others PR)
Since it is mentioned in your javadoc that this is meant specifically for suppliers, perhaps u can follow the naming convention that u did for toStringWarehouse. That being said, toStringForWarehouse may be better.
8 (commented on others PR)
Perhaps this can be renamed to ALLOWED_ARGUMENTS or ALLOWED_ARGUMENT_LIST
9 (commented on others PR)
I think there should be a \n here
10 (commented on others PR)
same as above
11 (commented on others PR)
perhaps its better code quality to explicitly specify the else with a separate if statement.
12 (commented on others PR)
To do javadocs
13 (commented on others PR)
comment should be updated as well
14 (commented on others PR)
i think the naming for this is a bit confusing, at least at first glance, perhaps can change everything to all
15 (commented on others PR)
I think you can just use list.of() instead of arrays.aslist(String[]{})
16 (commented on others PR)
ab used to stand for addressbook, now it has no meaning so i think it should be changed
17 (commented on others PR)
I think you might have forgotton to remove this.
18 (commented on others PR)
"ui" should be capitalised. "i.e." should have 2 dots.
19 (commented on others PR)
"set of products" or "set of Product
" or "product set" may sound more grammatically correct.
20 (commented on others PR)
"The retrieved product set will remove this product from the set" sounds a bit inaccurate. Perhaps it can be replaced by just "the retrieved product will be removed from the set"
21 (commented on others PR)
"The model will also update the warehouse with the new warehouse with the target product deleted." also can be replaced with "the model will also be updated with a new warehouse with the product deleted. "
22 (commented on others PR)
I think it should be " with a success message".
23 (commented on others PR)
It might be better to call the feature add product feature. 'addp' is the command word which should be used with the double tildas in my opinion
24 (commented on others PR)
I guess to make it clearer instead of "at any one time", u can say "in a single add command". will help also when macros can execute multiple at once (if implemented)
25 (commented on others PR)
perhaps the "(for warehouse only)" shouldnt be within the tildas, same issue repeated below. Also is there a reason for the "+".
26 (commented on others PR)
not sure if NAME should be in tildas
27 (commented on others PR)
Perhaps can add "the" like you did in warehouse
28 (commented on others PR)
"start".
Also "an identifiable full name of the product" sounds a bit off, perhaps can change to "the"
29 (commented on others PR)
perhaps can put "an".
30 (commented on others PR)
actually I think the word "additional" is unecessary here also
31 (commented on others PR)
Based on the language for the other commands, i think this should be "lists". Also maybe there should be an apostophe for "warehouses' entries"
32 (commented on others PR)
Minor issue but the space at the start of this comment and the next is missing
33 (commented on others PR)
I think you can use one of the valid quantities found in the util instead of putting a number here
34 (commented on others PR)
I think theres a type descriptor in the util also, so perhaps thats better to using the strings "w " "s "
35 (commented on own PR)
Yes, It is the case. the latter is the stricter check.
36 (commented on own PR)
Yup, its just a dummy function for the stub
37 (commented on own PR)
Yes, thats what I meant.
38 (commented on own PR)
Thats true, Ill update the example accordingly. Thanks!
39 (commented on own PR)
Hmm not sure either...full name is originally a public attribute with no getters, and this .fullname
is used is several places in the original code as well. Same for the other supplier/warehouse properties.
40 (commented on own PR)
Yes, thanks for spotting the error
41 (commented on own PR)
Thanks! will fix it.
42 (commented on own PR)
Actually both clinic and user macros are part of the {@code storage} thats why they are not in the brackets.
43 (commented on own PR)
True, will change it!
44 (commented on own PR)
Good spot! Thanks.
45 (commented on own PR)
True i'll amend it.
46 (commented on own PR)
Oh yes. Good spot.
47 (commented on own PR)
oh yes thanks!
48 (commented on own PR)
Yes I'll fix that!
49 (commented on own PR)
Perhaps. will update.
50 (commented on own PR)
I think can just leave as default, because the expected commandexception will already be caught in the above in the optional check
51 (commented on own PR)
I'll change all to valid .
52 (commented on own PR)
Thanks! will fix
53 (commented on own PR)
Yes thats true. thanks!
54 (commented on own PR)
Yes thanks!
55 (commented on own PR)
Fair point. Thanks!
56 (other comment)
LGTM
57 (other comment)
LGTM
58 (other comment)
For the part about commands only keeping the results from the last occurrence of a specified descriptor, I think it was originally not so much a bug but rather an intended outcome, as there are explicit test cases in the original AB3 to show that multiple descriptors of the same prefix will be accepted without error but only the last will be used. We can do an alternative approach though I would not think its absolutely necessary.
As for the case sensitivity, I guess we can discuss both the case sensitivity of the command syntax (command word/prefixes) and the user-supplied command arguments. For the command word at least, the case should not matter and we can make it case-insensitive to improve user experience, though I would think it's not a pressing issue as we can do without too.
For the redundant strings at the back of commands and the explicit ordering of arguments, it currently applies for those commands that dont actually use prefixes. For those with prefixes, changing it to allow redundant arguments may be a bit cumbersome, since currently all the arguments at the back will just be allocated to the last prefix, and we would require additional command-specific parsing to split the last prefix from the redundant strings if they would otherwise be parsed as invalid format for the last prefix. For those that don't, we can either make it explicit that redundant strings are allowed in the user guide for these commands or just don't accept them. Similarly for the ordering, we can either make these commands accept prefixes as well since they are multi-argument like the rest of the commands so that they disregard order, or we can explicitly state their difference in the user guide.
59 (other comment)
Resolved
60 (other comment)
Resolved.
@raysonkoh
(34 comments)1 (commented on others PR)
If the user meets a new business client then it would be someone that he doesn't know previously? This statement might be redundant if that is the case.
2 (commented on others PR)
LGTM
3 (commented on others PR)
Should setWidgetContent
be in Model
? Seems like this is mixing UI-related stuff with model-related stuff.
4 (commented on others PR)
Since Client
has a hasClientNote
and addClientNote
method, then you can bypass Model
and just call clientToAddNoteTo.adClientNote(clientNote)
?
5 (commented on others PR)
Might be a next TODO which is to abstract away this parsing logic.
6 (commented on others PR)
I think you can remove this TODO.
7 (commented on others PR)
remove this TODO also
8 (commented on others PR)
Can delete this line if not needed haha
9 (commented on others PR)
Do you mean "Similar to suggestion by/contract
" ?
10 (commented on others PR)
Possible typo. Should Collection>String> tags
be Collection>String> suggestionTypes
instead? Similar for the Set>Tag>
.
11 (commented on others PR)
Just a suggestion, should SuggestionType
be an Enum
instead? Since it is only taking frequency
, available
and contract
as valid inputs.
12 (commented on others PR)
Might want to consider extracting "untagged"
into a constant variable.
13 (commented on others PR)
Ideally, yes. Might need to update some of the tests
14 (commented on others PR)
Extra newline here
15 (commented on others PR)
I'm not sure what you mean. Can you give an example of this?
16 (commented on others PR)
This call still needed?
17 (commented on others PR)
I think the formatting seems a little weird here
18 (commented on others PR)
Might make the code more readable if it is something like getTextThree()
, getDiv4()
etc
19 (commented on others PR)
Might want to extract out magic numbers as constants so smth like TEXT_THREE_POS = 5
, DIV_THREE_POS = 6
20 (commented on others PR)
Agree that scrollbar should be shown, depending on how complex the implementation is I think it can be created as a separate issue.
21 (commented on others PR)
Can this be abstracted to a different method say generateSuggestionTypeComparatorList
that takes in the suggestionTypeOrderedSet
?
22 (commented on others PR)
should this be updateSortedFilteredClientList
?
23 (commented on others PR)
Seems like this javadoc is not updated
24 (commented on others PR)
Found the bug. Should be "notes"
25 (commented on others PR)
Will create an issue for this. Currently it is working and it is quite close to end of v1.3, changing this might introduce unintentional bugs.
26 (commented on others PR)
I think this logger is not being used.
27 (commented on others PR)
Good catch!
28 (commented on others PR)
Unrelated to your changes, but how is the order determined if two country notes have the same country code? Because from this compareTo
seems like the order is arbitrary.
29 (commented on others PR)
Might want to compare tags for the edge case where country code and note content are equal.
30 (commented on others PR)
This is important!! don't delete this
31 (commented on others PR)
Renaming note
to countryNote
might be clearer
32 (commented on others PR)
Made me chuckle
33 (commented on others PR)
Why is this hashcode method deleted?
34 (commented on others PR)
is this check needed since textClock would be reinitialised anyway and subsequently call textClock.play()
?
35 (commented on own PR)
Okay I have made the changes, can you guys check again?
36 (commented on own PR)
actually all those variables aren't constants in the sense that for each instance of Country
the countryName
, etc can be different. Not sure if they are still considered constants?
Edit: checkstyle throwing an error when I made a change.
Agree with using HashSet to avoid duplicate Note.
37 (commented on own PR)
Yup good catch
38 (commented on own PR)
I'm not quite sure what you mean. If the user enters a valid country code, then just create a new Country object on demand?
39 (commented on own PR)
Yea that was the intention to just init countryNotes from the start so there wouldn't be any bugs if someone using Country forgot to check if countryNotes exists. If there is a noticeable lag then probably can optimise in v1.3.
Save file can just store countries which actually have countryNotes in them, so no need to store all countries.
40 (commented on own PR)
Ok changed
41 (commented on own PR)
Must be my formatter oops
42 (commented on own PR)
Will be done in a separate issue.
43 (commented on own PR)
Ok added
44 (commented on own PR)
Added for both
45 (commented on own PR)
Ok I have removed the check
46 (commented on own PR)
Added
47 (commented on own PR)
Hmm strange that checkstyle didn't throw a warning. Added.
48 (commented on own PR)
Added
49 (commented on own PR)
Added this as follow-up issue.
50 (commented on own PR)
Added
51 (commented on own PR)
I think this should be done by @rtshkmr since he is going to implement Note
fully.
52 (commented on own PR)
I checked and its still 4 spaces lol
53 (commented on own PR)
Yep
54 (commented on own PR)
For this, I leave it up to how @rtshkmr wants to implement this. I just needed a basic Note
object for testing only.
55 (commented on own PR)
Changed.
56 (commented on own PR)
My idea is that whenever you are interacting with the existing Country
instances (other than just getting country notes), you should only do it via CountryManager
. I think this layer of abstraction is good especially for logging/debugging in the future since Model
only needs to operate on CountryManager
and I would be able to log all Country
method calls.
For classes like the CountryNoteParser
or CountryFilterParser
they should not be holding references to the existing Country as they do not have a reference to CountryManager
. Only Model
has a reference to CountryManager
. So when a Command
executes on a Model
, then they are able to check for duplicate notes, etc.
Also, Country
has a hasCountryNote
method, but I purposely made it protected
so that only CountryManager
can call that method. Other classes should only be able to call the constructor and getCountryNote
method of Country
only.
57 (commented on own PR)
Updated
58 (commented on own PR)
Updated
59 (commented on own PR)
Added
60 (commented on own PR)
Ok sure
61 (commented on own PR)
Done
62 (commented on own PR)
Done
63 (commented on own PR)
Ok done
64 (commented on own PR)
Done
65 (commented on own PR)
I think this cannot because the expectedFilteredClientList is going to be different based on country code
66 (commented on own PR)
Done
67 (commented on own PR)
Done
68 (commented on own PR)
Ok done
69 (commented on own PR)
If I pass in a regular Timezone
I can't guarentee what getCurrHourInTimezone
returns as the time is always changing. That's why I created TimezoneStub
so that I can hardcode return value for getCurrHourInTimezone
for testing my predicate
70 (commented on own PR)
good idea!
71 (commented on own PR)
Done
72 (commented on own PR)
Done
73 (commented on own PR)
Done
74 (commented on own PR)
Done
75 (commented on own PR)
Done
76 (commented on own PR)
yes, removed
77 (commented on own PR)
ok I removed it to standardise with other methods
78 (commented on own PR)
done
79 (commented on own PR)
Done
80 (commented on own PR)
yea seems neater. Done
81 (commented on own PR)
Created new class CountryCodeVerifier
that is responsible for verifying country code
82 (commented on own PR)
Yea country shouldnt be invalid
83 (commented on own PR)
Done
84 (commented on own PR)
Done
85 (commented on own PR)
Yup, good idea!
86 (commented on own PR)
Yea, I change to NULL_COUNTRY but forgot to update null checks.
87 (commented on own PR)
I will create a separate issue for this
88 (commented on own PR)
Done
89 (commented on own PR)
Done
90 (commented on own PR)
I didn't know there was such methods. I will create a separate issue for this because I have been using this style of checking ParseExceptions for all my tests.
91 (commented on own PR)
Yep
92 (commented on own PR)
Yes, good find!
93 (commented on own PR)
Can't use it since assertParseSuccess
takes in a Parser
and AddressBookParser
does not implement Parser
.
94 (commented on own PR)
Done
95 (commented on own PR)
Thanks for the find!
96 (commented on own PR)
Yea thanks for catching that mistake, will mention about CountryNoteAddCommandParser
and also say that it will be excluded from the sequence diagram for brevity.
Added the intermediate call to Addressbook#addCountryNote(countryNote)
97 (commented on own PR)
Not sure about this since I followed the implementation of client note add
command parser. @rtshkmr any comments?
98 (commented on own PR)
Yup, think so.
99 (commented on own PR)
I see, can you help to check the latest commit in CountryNoteAddCommand#execute
whether I am doing it correctly?
100 (commented on own PR)
Ok removed calls to updateTagNoteMapWithNote
in ClientNoteAddCommand
and CountryNoteAddCommand
. Now the method will be called inside ModelManager#addCountryNote
/ ModelManager#addClientNote
.
101 (commented on own PR)
I must be blind
102 (commented on own PR)
Deleted this as I think there isn't any method to "sync" tags with the TagNoteMap
as TBManager
does not have a TagNoteMap
. @rtshkmr any thoughts?
103 (commented on own PR)
If I'm not wrong the behavior of client note edit
is that doing t/ adds on the tag. I think if we want to change this behavior should change it for both client note edit
and country note edit
for consistency. @rtshkmr
104 (commented on own PR)
Yup ok
105 (commented on own PR)
Done
106 (commented on own PR)
Done
107 (commented on own PR)
Done
108 (commented on own PR)
Created new constructor with content, country and tags and added comments for this part
109 (commented on own PR)
okie
110 (commented on own PR)
Done
111 (commented on own PR)
Yup agree, made the changes
112 (commented on own PR)
Not relevant now, cannot delete/edit country notes when not viewing country notes panel
113 (commented on own PR)
Same as above
114 (commented on own PR)
oh yea, I thought it was mistakenly left in since intellij is being annoying
115 (commented on own PR)
I think it is auto centered in gh-pages
116 (commented on own PR)
Can ref to the current DG in our website i think the diagram is quite stretched and the model component doesn't really capture any complex logic as its just nested calls.
117 (commented on own PR)
Yea its just the assert, is it better to remove the dependency?
118 (commented on own PR)
I changed to using if/else instead of if/else if as it seems like plantuml does not support the feature you described.
119 (commented on own PR)
Similar to comment above
120 (commented on own PR)
It will exceed the 120 char limit if its on the same line
121 (commented on own PR)
hmm true. i actually wanted to change all to EP style but its gonna take a lot of time
122 (other comment)
Okay, I have updated the issue description.
123 (other comment)
have to merge this before merging #121
124 (other comment)
Fixed by #121
125 (other comment)
Current plan of action after discussion with @rtshkmr. This is a sample of how notes
are going to be stored in JSON.
notes: [{
contents: "some contents",
tags: ["tag1", tag2"],
client: "katya", // means this is client note
country: null
}, {
contents: "some contents2",
tags: ["tag1", tag2"],
client: null,
country: "SG" // means this is country note
}]
Benefits of this implementation would be:
That there would only be 1 class that deals with json notes (irrespective of whether it is a client or a country note).
Existing JSON client class does not need to be changed.
Possible issues:
clients
by their name at the moment.
126 (other comment)
Putting it here in case I forget in the future:
Some major changes to be made:
Create new class CountryNote
that inherits from Note
. It stores the Country
.
Add isClientNote
method in Note
to differentiate client and country notes. This probably need to be refactored. Possible idea would be to have abstract Note
class, and have ClientNote
and CountryNote
inherit from it. There can be an enum NoteType
that indicates which type the Note
object is.
Having CountryNote
extends from Note
allows use of polymorphic List>? extends Note>
when converting to json objects.
127 (other comment)
Will be a potential feature add-on after v1.4.
128 (other comment)
@rtshkmr I think isn't considered a bug. We can write in the UG that things like t/
nt/
are reserved keywords.
129 (other comment)
@rtshkmr will client note edit
be updated so all params are optional but must have at least 1 param? Similar to how country note edit
works. If not this can be an extension after v1.4.
130 (other comment)
Alright created an issue #315
131 (other comment)
Created issue #316 for this.
132 (other comment)
Adding on to this issue:
133 (other comment)
Future extension after v1.4
134 (other comment)
There already exists a command summary
and a parameter constraints summary
and it can be viewed easily from the table of contents
.
There also exists this block of text directly under Features
:
Certain commands require parameters and the summary of these parameters as well as their prefixes and constraints can be found in our parameters summary table
A summary of all commands can be found in our command summary table
135 (other comment)
Add Glossary
from DG
136 (other comment)
Since country note index is not static, we should not make it possible to delete/edit country note if the country note panel is not being displayed.
From grpchat:
i think probably need some global variable in model to check whether the left panel is showing country note view for this
then when country note delete/edit we check that global var and if its not country note view then throw exception
@wenhaogoh
(34 comments)1 (commented on others PR)
Will removing the "find Grab" example make the table look neater?
2 (commented on others PR)
Are we missing the details for adding an expenditure?
3 (commented on others PR)
Perhaps "Temasek Hall" is too specific to NUS? Users who are not from NUS may not understand what it means. "Daily Expenses" might be a better example. I noticed the same issue in several other places.
4 (commented on others PR)
Will it be more concise to use "budget" instead of "budget book"? I noticed the same issue in several other places.
5 (commented on others PR)
Will it be better if "must be a positive integer" is bolded to draw users' attention to this restriction?
6 (commented on others PR)
Same issue as above regarding the bolding of "must be a positive integer or double with a maximum of 2 decimal places". There seems to be two spaces between "of" and "2".
7 (commented on others PR)
Same issue as above.
8 (commented on others PR)
Perhaps it might be more cohesive to capitalise "school fees"? I noticed the same issue in several other places.
9 (commented on others PR)
Yup, let's use "budget" instead of "budget book" as discussed. Good catch 👍
10 (commented on others PR)
There is a missing space between the and LogicManager.java
.
11 (commented on others PR)
Perhaps DevOps should be separated with a white space to follow the title?
12 (commented on others PR)
Should this be ExpenditureCard instead?
13 (commented on others PR)
Perhaps it will be more OOP if there is an additional private method to get the the budget of a certain index.
14 (commented on others PR)
Same issue here.
15 (commented on others PR)
Perhaps it is more appropriate if the method "isValidBudgetName" is changed to "isValid"?
16 (commented on others PR)
Perhaps it is more appropriate if the argument "budgetName" is changed to "name"?
17 (commented on others PR)
Perhaps the naming should be "isExpenditure"?
18 (commented on others PR)
Is this condition redundant?
19 (commented on others PR)
Perhaps the sentence should start with "Executes"?
20 (commented on others PR)
Same issue here
21 (commented on others PR)
Perhaps the class diagram should have a caption "Figure 3.4.1..."?
22 (commented on others PR)
Should the class objects be wrapped using ``?
23 (commented on others PR)
Same issue here.
24 (commented on others PR)
Don't think you should use bold here as the symbol is sufficient. It is also more consistent with the other commands.
25 (commented on others PR)
Same issue here
26 (commented on others PR)
This can be taken out as it will be indicated in the preface.
27 (commented on others PR)
Should it be "When you create a new budget, it will be displayed as a budget card in the list view."?
28 (commented on others PR)
Should it be "list view" instead?
29 (commented on others PR)
Should it be "When you delete a budget, the list view should reflect the changes by removing its card."?
30 (commented on others PR)
Is there an additional space here?
31 (commented on others PR)
Same issue regarding user centric language.
32 (commented on others PR)
Should "Prefix" be "prefix" instead?
33 (commented on others PR)
Should this be "no visible changes" instead?
34 (commented on others PR)
Should this use the useful symbol instead?
35 (commented on own PR)
Yes sir
36 (commented on own PR)
Thanks!
37 (other comment)
If you want, you can re-upload your photo so that it scales correctly. @sogggy
38 (other comment)
The examples for adding an expenditure is not in the correct format.
39 (other comment)
Do for budget threshold as well.
40 (other comment)
Same issue
41 (other comment)
Add to UG
42 (other comment)
Must throw the correct error if there are invalid prefixes
@caitlinjee
(34 comments)1 (commented on others PR)
The column title already has "so that I can", the "I can" in some of the rows are repetitive?
2 (commented on others PR)
"I have" can change wording to match the "so that I can..." form?
3 (commented on others PR)
Same with previous, should change the "the app is open source..." to fit the "so that I can..." form?
4 (commented on others PR)
I think it should be fridge!
5 (commented on others PR)
I think you missed the return on this?
6 (commented on others PR)
This test can't work?
7 (commented on others PR)
Same question with previous test
8 (commented on others PR)
Same as previous tests
9 (commented on others PR)
Same as previous tests
10 (commented on others PR)
Same as previous tests
11 (commented on others PR)
should we write the whole proper command?
12 (commented on others PR)
dont forget to change recipe to recipes
13 (commented on others PR)
same as previous, full command?
14 (commented on others PR)
should remove the comments?
15 (commented on others PR)
same as above
16 (commented on others PR)
same as above
17 (commented on others PR)
same as above
18 (commented on others PR)
same as above
19 (commented on others PR)
same as above
20 (commented on others PR)
same as above
21 (commented on others PR)
is it wishful shrinking is your...
22 (commented on others PR)
should it be ingredient list?
23 (commented on others PR)
okok can!
24 (commented on others PR)
if notes really cant handle the markups, should remove the ' ? (but not sure if it will appear on the website)
25 (commented on others PR)
in the first quantity, there a space "-(space)100.5g", but in the 2nd one there isnt "-3/4 cups", maybe can standardize?
26 (commented on others PR)
does this check for different ordering of ingredients?
27 (commented on others PR)
supposed to remove this line?
28 (commented on others PR)
agree with tianyongs comment
29 (commented on others PR)
delete? not add?
30 (commented on others PR)
dont forget to remove this
31 (commented on others PR)
dont forget to remove also
32 (commented on others PR)
dont forget to update the javadocs
33 (commented on others PR)
i think in this example put the ' around each command? instead of around the whole example
34 (commented on others PR)
i think can add extension when index is not correct?
35 (commented on own PR)
yes brief explanation, but will change if need
36 (commented on own PR)
ok good idea
37 (commented on own PR)
what do you mean by this?
38 (commented on own PR)
I think this eg is ok since it specifies that the user has to press enter also? below it doesnt specify the enter
@jiaweiteo
(33 comments)1 (commented on others PR)
Maybe can add the person to be deleted is not found?
2 (commented on others PR)
Same for accommodation and activity use cases also
3 (commented on others PR)
So its not the command format but the error is missing person/accommodation/activity
4 (commented on others PR)
Should we handle duplicate person/accommodation/activity when adding?
5 (commented on others PR)
Need add use cases of edit function? Or too long already
6 (commented on others PR)
Think the command is called 'show' instead?
7 (commented on others PR)
I think can change address to location class? Since our user guide its location class. Can just import from activity.
8 (commented on others PR)
Should be setAccommodation instead
9 (commented on others PR)
Exception class shld be accommodation, same for the next one
10 (commented on others PR)
unable to find specified accommodation
11 (commented on others PR)
duplicate accommodation.
12 (commented on others PR)
Should passport and mobile number be a data field since its a tag? Not compulsory for users to input.
13 (commented on others PR)
If phone and passport is not identity fields, it shldnt be here alr
14 (commented on others PR)
we shld restrict phone number to 8 digits for SG
15 (commented on others PR)
Have to change regex already to maybe this d{8}?
16 (commented on others PR)
can just initialise to private final Phone phone. Same for all classes. Just import the package at the start can alr
17 (commented on others PR)
Same problem no need full package name
18 (commented on others PR)
editedPerson
change to editedFriend
19 (commented on others PR)
Should change person to activity
20 (commented on others PR)
Same
21 (commented on others PR)
Wishlist
22 (commented on others PR)
activities
23 (commented on others PR)
Need add TravelPlanPanel, TravelPlanObjectListPanel?
24 (commented on others PR)
DeleteCommandParser is Called WanderlustDeleteCommandParser for all
25 (commented on others PR)
OK MY BAD
26 (commented on others PR)
I think the accomodation class requires start date and end date to be the same too for two accommodation object to be the same.
27 (commented on others PR)
i think for all the find command in the table, we should change to COMMAND -OBJECT KEYWORD
, then the parameters add in KEYWORD find object that contains this keyword
28 (commented on others PR)
I did this for my delete command, think we shld do it for all commands on the table. Add the additional parameter for the commands that require it. Like delete -object index
29 (commented on others PR)
Prefix of SG passport is E, not S
30 (commented on others PR)
Yup, just put the example date to any date on 2021 to be safe, cause now you can only create a travelplan that is after today's date.
31 (commented on others PR)
Date issue
32 (commented on others PR)
Hey this is my assertion pr hahahah
33 (commented on others PR)
I go find other assertions to add then..
34 (commented on own PR)
Ya but i dont know what badges we should add, there's quite a few different one
35 (commented on own PR)
Ok added
36 (commented on own PR)
Changed
37 (commented on own PR)
Changed
38 (commented on own PR)
Okay changed!
39 (commented on own PR)
This test will fail so i changed it back.
40 (commented on own PR)
Ok resolved. Thanks!
41 (commented on own PR)
Resolved.
42 (commented on own PR)
Resolved.
43 (commented on own PR)
Resolved.
44 (commented on own PR)
Resolved.
45 (commented on own PR)
Resolved.
46 (commented on own PR)
Resolved
47 (commented on own PR)
Resolved.
48 (commented on own PR)
resolved.
49 (commented on own PR)
Resolved.
50 (commented on own PR)
Resolved.
51 (commented on own PR)
Jeanne say for the UI one make it more spread out
52 (commented on own PR)
Ok i can delete that one whitespace
53 (commented on own PR)
hmm it works fine leh, maybe after yall merge can try it out first, got any problem we can fix too
54 (commented on own PR)
oh.......
55 (commented on own PR)
ok thxtx
56 (commented on own PR)
cannot do this if not compilation will fail for checkstyleMain. AB3 doing like this too.
57 (commented on own PR)
Solved
58 (commented on own PR)
??? i got change wts
59 (commented on own PR)
ok
60 (commented on own PR)
i think we should show index in ui
61 (commented on own PR)
no theres a space.. thats why we use keyword[1] instead or [0] to access "-travelplan'"
62 (commented on own PR)
I thought name card is the name of the travelplan, which is the travelplan panel? the one that shows the name and date
63 (commented on own PR)
Oya ok i changed ps
64 (commented on own PR)
ok changed
65 (commented on own PR)
deleted
66 (commented on own PR)
deleted
67 (commented on own PR)
ok solved
68 (commented on own PR)
No choice...
69 (commented on own PR)
you change it pls... xdxd
70 (commented on own PR)
ya its used in the success message i think
71 (commented on own PR)
ok
72 (commented on own PR)
no it doesnt update itself in real time leh. I need to close and open then the change will appear.
73 (commented on own PR)
I thought you helping me do the API...
74 (commented on own PR)
LAW OF DEMETER
75 (commented on own PR)
LAW OF DEMETER!!!!!!!!!
76 (commented on own PR)
Error msg thrown
77 (commented on own PR)
ok
78 (commented on own PR)
Hang on let me change it
79 (commented on own PR)
Ok changed
80 (commented on own PR)
Ok solved, thanks!
81 (commented on own PR)
Changed.
82 (commented on own PR)
No, different error message
83 (commented on own PR)
Different error message
84 (commented on own PR)
What you mean?
85 (commented on own PR)
fixed
86 (commented on own PR)
fixed
87 (commented on own PR)
fixed
88 (commented on own PR)
Try out integration testing? haha
89 (other comment)
LGTM. But I don't know if this overlaps with what Jiawei has done
I think we can use Tim's method instead. Better abstraction. Tim, you can resolve the conflicts and merge
90 (other comment)
LGTM. But you haven't do the test case?
91 (other comment)
LGTM. But you haven't do the test case?
We did it on v1.2!
@blackonyyx
(33 comments)1 (commented on others PR)
Slightly confused why the need to update the prevous code base person model. Is it failing checkstyle?
2 (commented on others PR)
Change to Tests
to follow the rest of the jdoc comments.
3 (commented on others PR)
Could add constructor tests eg: Referencing from person/AddressTest, as constructor has requireAllNonNull similar to person.Address
This could be applied to a lot of previously seen files.
Something like this is possible:
@Test
public void constructor_null_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> new Location(null));
}
@Test
public void constructor_invalidAddress_throwsIllegalArgumentException() {
String invalidLocation = "";
assertThrows(IllegalArgumentException.class, () -> new Location(invalidLocation));
}
/**
4 (commented on others PR)
Add null location test, referencing: UniquePersonListTest.contains_nullPerson_throwsNullPointerException()
5 (commented on others PR)
Similar as first comment about Tests that -issue-
6 (commented on others PR)
Same as abv
7 (commented on others PR)
Slight complaint but could add line comments on what exact part of equality is being tested in each assert as it was done in some other class equality testcases
8 (commented on others PR)
On further review, this addition would be a big increase in requirements for testcasing and is not suitable for a small modification to a completed pull request.
We should open a new issue about this on refactoring and improving testcase coverage on Constructors and Null Checks.
9 (commented on others PR)
Perhaps some jdocs here would be good to ensure readability of code
10 (commented on others PR)
Jdocs
11 (commented on others PR)
Maybe should have a MESSAGE_USAGE string like if someone does sth like
listi jkdnkjvsdsn
or something ( unsure if will return error here)
12 (commented on others PR)
Constructs ...
13 (commented on others PR)
May not be in line with good OOP practices. Consider alternative representation or if it is not the proper namespace usage, amend
14 (commented on others PR)
Bit more spacing would be good to have and perhaps line commets
15 (commented on others PR)
Same as abv
16 (commented on others PR)
We are replacing this with parser level specific methods?
how about item name etc
Or issit gonna use RegEx instead?
17 (commented on others PR)
could probably rename -> inventoryinator.png
or something like that, to remove any reference to ab3
18 (commented on others PR)
Im not so certain that getFilteredItemList is the only list we need for a ModelStub
How about the recipe list or location list?
19 (commented on others PR)
bit of white space please 😃
20 (commented on others PR)
spacing
21 (commented on others PR)
spacing
22 (commented on others PR)
spacing
23 (commented on others PR)
Minor observation but item stores as a list, so why are we using hashset in itemBuilder?
24 (commented on others PR)
Perhaps could add a class header for completeness sake, it is a public class
25 (commented on others PR)
Slight nitpick but
Could probably use a Static constant predefined in the util files rather than a "magic string"
26 (commented on others PR)
Command Word is removed at this step, the input that is recieved by parser is -n banana -q 50
27 (commented on others PR)
Command Result is Returned and parsed to the UI i think So its not destroyed
28 (commented on others PR)
EditItem Command should also probably be destroyed after CommandResult is returned.
29 (commented on others PR)
AddQuantityToItemCommand should also similarly be destroyed.
30 (commented on others PR)
Very Slight Nitpick but generally better to use interface in the argument rather than an ArrayList>T>
31 (commented on others PR)
Nitpick again, but use of Magic Strings is not recommended
32 (commented on others PR)
Also can reuse the same strings for the integration test as the string is the exact same one.
33 (commented on others PR)
Needs a test case for this
34 (commented on own PR)
be careful what you wish for 😃
35 (commented on own PR)
adding these lines back cause checkstyle to fail somehow?
36 (commented on own PR)
Will not touch. should be handled by #20
37 (commented on own PR)
Inventory is meant to refer to entire state of the inventoryinator. will add term to glossary
38 (commented on own PR)
Oops :p lmao
39 (commented on own PR)
Not known how implementation will be done, hence maintaining similar format as prior implementation for now.
40 (commented on own PR)
Oof
41 (commented on own PR)
this is intentional to show user that comma spacing is irrelevent.
42 (commented on own PR)
this is only if the entire set of tags is the same.
43 (commented on own PR)
what? nah i havent figured out a systematic regex that can do:
"UnlimitedWhiteSpace,UnlimitedWhitespace"
The current pattern used is " , |, |,"
If you know how to do dat, i can probably also make the
findt and find command use the same syntax rather than spaces which atm is q unintuitive in the find cmd
44 (other comment)
User Guide is done for now.
45 (other comment)
From commit 9b2ccce:
In process of Unittesting, dificulty was encountered from utilising
testing utilities of original code base.
Specifically the assertCommandSuccess testutil method, relies on the .equals
of model manager, and model manager equality has null values initialised for AB3
and Inventoryinator versions, which if implemented to check, cause testcase
failures in stubs.
Recommended to perform refactor to code base and remove ab3 artifacts, for more effective
testing.
Will open new issue based on this finding.
46 (other comment)
Related to
#20
47 (other comment)
To modify parser
48 (other comment)
duplicate
49 (other comment)
LGTM
@MatthiasLHK
(33 comments)1 (commented on others PR)
Might want to take in the user input and array of prefix, and store it as a instance variable.
2 (commented on others PR)
No parameters needed, use the instance variable values, SLAP.
3 (commented on others PR)
change to private
4 (commented on others PR)
change to private
5 (commented on others PR)
change to prefix
6 (commented on others PR)
change to private, and change the name of the method, very similar to the one below
7 (commented on others PR)
change to private, change the name.
8 (commented on others PR)
Pull it out as a separate class.
9 (commented on others PR)
SLAP, Abstract out the new ContactList creation.
10 (commented on others PR)
Wrong object used, should be ResultCommand
11 (commented on others PR)
Wrong object used, should be ResultCommand
12 (commented on others PR)
Why need isSameContact method and the overwritten equals method?
Is it cos in the event of 2 differnet person with the exact same name?
13 (commented on others PR)
Should it be final? Might be hard to keep updating right?
14 (commented on others PR)
Will it work? Since this.contacts is final.
15 (commented on others PR)
Same thing, contacts is final, im not sure if you can just set it.
16 (commented on others PR)
Follow SLAP, bring out the remove function call.
17 (commented on others PR)
Might want to pull this out into a new class for common usage. As I foresee we will be using this for some of the other classes as well.
18 (commented on others PR)
If it is an empty constructor, should we just not write the constructor?
19 (commented on others PR)
What is this block for? Don't think i rmb seeing this kind of code declaration hahha.
20 (commented on others PR)
What is this function call? Why is it needed? Since this() calls the empty constructor that does nothing.
21 (commented on others PR)
Might want to match the aligning of the dots, looks neater.
22 (commented on others PR)
Don't use magic numbers, declare 30 as a constant in the field, and name it the word limit or something. This makes it more readable.
23 (commented on others PR)
Why does this work? Since the field internalList is private, how can u just compare using .internalList
24 (commented on others PR)
I think the prefix should just be called g/, as Im assuming that we add the "addgrade" command in front, so no need to specify the "a" in the prefix.
25 (commented on others PR)
I thought we decided on using an association class instead? Im not too sure also. KIV
26 (commented on others PR)
Why is it OR? So this means that as long as either the email or telegram plus the name is the same. Then the contact is considered to be the same? Shouldn't it be all 3 the same, then its the same?
27 (commented on others PR)
I think we should split this into 2 test, one for passing and one for failing. I think i read this in the textbook before. Quite recently. Can check again thanks.
28 (commented on others PR)
If this is not needed, then we can just delete. I think there is a working ExitCommand outside in the main package already.
29 (commented on others PR)
Is this going to be used later on? If not we can remove.
30 (commented on others PR)
no you dont add it here, if im not wrong there are listeners in the lists. When there is any changes made to the todo list, the GUI will update, so there is no need to call it in the execution. Pls check again.
31 (commented on others PR)
Not sure if this is needed since there are listeners added to the list.
32 (commented on others PR)
if it works, then delete the commented lines.
33 (commented on others PR)
Why u change EventTime when ur PR is about finding task?
34 (commented on own PR)
I will fix in the latest update!
35 (commented on own PR)
Ok noted.
36 (commented on own PR)
OK roger, will do boss!
37 (commented on own PR)
If we leave the instantiating of the 3 parsers in the constructor, then each time a command called by the user, we are re-creating a parser each time. And not reusing them, which i think is wrong.
38 (commented on own PR)
See above point.
39 (commented on own PR)
but if we use .equals(), we need to check every single existing command, which is alot.
40 (commented on own PR)
This is used by other methods, like when a module is added, it is printed in the GUI
41 (commented on own PR)
this is not by me.
42 (commented on own PR)
It can be thrown. I will look into this.
43 (commented on own PR)
Done! Thanks!
44 (commented on own PR)
I will update this later on!
45 (commented on own PR)
Yup fixed this! Thanks!
46 (commented on own PR)
Will implement later on!
47 (commented on own PR)
ok thanks!
48 (commented on own PR)
Im referring the to Event object so it should be
49 (commented on own PR)
Will implement later on!
50 (commented on own PR)
Will implement later on!
51 (commented on own PR)
Module also have this. We can check again later
52 (commented on own PR)
Yup fixed
53 (commented on own PR)
Yup fixed
54 (commented on own PR)
Yup fixed
55 (commented on own PR)
Yup fixed
56 (commented on own PR)
Yup fixed
57 (commented on own PR)
Yup fixed
58 (commented on own PR)
Yup fixed
59 (commented on own PR)
I think its ok to use both, and assert might be better since the tutorial asked us to use asserts.
60 (commented on own PR)
Will change it in the next push.
61 (commented on own PR)
Ok
62 (commented on own PR)
ok
63 (other comment)
Looks good to merge, just file renaming.
64 (other comment)
Unused PR, delete if possible. Did not merge!
65 (other comment)
Achieved
66 (other comment)
Achieved
67 (other comment)
Achieved
68 (other comment)
Achieved
69 (other comment)
Achieved
70 (other comment)
Achieved.
71 (other comment)
Achieved.
72 (other comment)
Achieved.
73 (other comment)
Achieved.
74 (other comment)
That cause I made it invisible...
75 (other comment)
Thanks for your input! The UG is still WIP.
76 (other comment)
The GUI is still a WIP!
77 (other comment)
Viewmodule shows the information on the left side window. Other testers were able to do this, not sure why it didn't work for you. But yes, we will be refining on the GUI! Thank you!
@ethanso56
(33 comments)1 (commented on others PR)
whats this print statement for?
2 (commented on others PR)
should this be addTotalCalorieOutput? just like the addTotalCalorieInput() haha
3 (commented on others PR)
How come this is date? should be calorieManager right?
4 (commented on others PR)
the Date.MESSAGE_CONSTRAINTS
5 (commented on others PR)
the javadoc comment should be calorieManager object right? instead of day object
6 (commented on others PR)
the p want to make it capital P? HAHHAAH
7 (commented on others PR)
comments should be Name instead of Food
8 (commented on others PR)
test name should be name instead of food
9 (commented on others PR)
I dont think license need to change haha
10 (commented on others PR)
how come this one got 2 optionals
11 (commented on others PR)
here also
12 (commented on others PR)
this one also shd be myfitnessbuddy
13 (commented on others PR)
here also
14 (commented on others PR)
here also haha
15 (commented on others PR)
here is myfitnessbuddy also right?
16 (commented on others PR)
shd this file be deleted? already got the MyFitnessBuddyPerser liao
17 (commented on others PR)
myfitnessbuddy?
18 (commented on others PR)
here also haha
19 (commented on others PR)
myFitnessBuddyFilePath
20 (commented on others PR)
myFitnessBuddy
21 (commented on others PR)
here also haha
22 (commented on others PR)
here
23 (commented on others PR)
here
24 (commented on others PR)
here
25 (commented on others PR)
here
26 (commented on others PR)
here
27 (commented on others PR)
here
28 (commented on others PR)
here
29 (commented on others PR)
delete this?
30 (commented on others PR)
add javadocs
31 (commented on others PR)
for the addPrefixesPresent
32 (commented on others PR)
add javadocs
33 (commented on others PR)
is check same id only right?
34 (commented on own PR)
oh ya
35 (commented on own PR)
done
@benclmnt
(33 comments)1 (commented on others PR)
Should we keep this?
2 (commented on others PR)
maybe, coming in mid-v1.2
? 😄
3 (commented on others PR)
Don't remove this part. It is used by Jekyll
4 (commented on others PR)
Perhaps, if you add this then we will have double title on the page (?)
5 (commented on others PR)
Is this more of a "List a Client" use case?
6 (commented on others PR)
2. FitEgo adds the Client
7 (commented on others PR)
I'm not too sure if there is a timestamp in the status bar 😅 , but it is also in the AB3 DG ...
8 (commented on others PR)
Expected: First contact is added to the list. Details of the added contact shown in the status message. Timestamp in the status bar is updated.
9 (commented on others PR)
2. FitEgo displays the client's whose name matches the keyword or text.
I see similar issues in other place as well
10 (commented on others PR)
Perhaps its better to move this to ViewClientCommand::execute
?
as to maintain separation between Ui
and Logic
components?
11 (commented on others PR)
I agree with Dhafin.
i think in a javascript world, it is called a callback.
Perhaps hasCallback
and getCallback
is a better name?
12 (commented on others PR)
Sounds good!
13 (commented on others PR)
[open for discussion] Is it better to do the new way or the previous way?
This change is related to changes in SessionBuilder::withInterval
cc @maguireong @dhafinrazaq
14 (commented on others PR)
hmm, what happens if we remove !important
here? 🤔
15 (commented on others PR)
Sorting session by its natural order is from the oldest (?)
16 (commented on others PR)
Iirc, we are not using idCounter
anymore for sessions
17 (commented on others PR)
Perhaps its better to just delete this and add a reminder in the issue, I think
18 (commented on others PR)
Seems like there's no change to AddSessionCommand?
19 (commented on others PR)
Is it possible to just merge this together with the getTypicalAddressBook
and getTypicalSessions
?
20 (commented on others PR)
Forget to change 😄
21 (commented on others PR)
Repetition of line 151
22 (commented on others PR)
Is it better to just have one function String getFormattedStartDateTime (DateTimeFormatter formatter)
?
23 (commented on others PR)
ook 👍
24 (commented on others PR)
ook!
25 (commented on others PR)
Yup for consistency, we just put anything optional inside the descriptor
26 (commented on others PR)
typo - add commands
27 (commented on others PR)
it's changed from editschedule
-> schedit
28 (commented on others PR)
I think it is better to not have else
after a return statement. It is following Make the happy path prominent
29 (commented on others PR)
agreed. based on our discussion in telegram, the docs should document this.
30 (commented on others PR)
What about 10 Feb - 9 Mar? Will it show the date?
Maybe add some test cases for this
31 (commented on others PR)
Yea I guess for > 1 days, just display the full date or (can apply this to >= 1 day too, but this might clutter the screen tho)
32 (commented on others PR)
Perhaps it is better to just say "Each client should have a unique email"
33 (commented on others PR)
Perhaps it is better to say "saved locally in your computer."?
On a side note, i think we have this somewhere on top, near quick start section.
34 (commented on own PR)
Oh okay, i think I'll change it to only allow for the case where
cannot start or end with -
allow multiple -
usecases
35 (commented on own PR)
Oh right, I'll make it private
36 (commented on own PR)
should we?
37 (commented on own PR)
right!
38 (commented on own PR)
I'll go with entities then
39 (commented on own PR)
oops, I might have messed up when resolving conflict. Thanks for spotting this out. Reverting..
40 (other comment)
I think it is better to keep the structure of AB3 UG for future reference
41 (other comment)
donee
42 (other comment)
Proposed changes: show the number of clients inside the UI
43 (other comment)
TODO:
Repurpose the tag to history of injury / allergies
Change test data to medical names
44 (other comment)
Done for v1.1. Closing..
45 (other comment)
@dhafinrazaq @maguireong can help to look at it?
@tanweijie123 will this change be compatible with the change you proposed for #68 ?
46 (other comment)
Btw, perhaps it is better to test for checkstyle locally before pushing?
To run checkstyle and test cases, run ./gradlew check
from Intellij terminal
To edit your last commit (so as to clutter the commit history), do git commit --amend --no-edit
(also in terminal)
47 (other comment)
Yes, I propose this implementation:
sdel INDEX
: will delete only if there is no schedule tied to that session
sdel INDEX f/ true
: will force delete all schedule tied to that session and the session itself.
Implementation:
48 (other comment)
If i read it correctly, changes to existing classes is to enable comparing sorting clients (compared by name) and sessions (compared by interval start time) right?
49 (other comment)
Have we checked with Prof Damith on using controlsfx as external libraries?
50 (other comment)
Should we close this issue then?
51 (other comment)
Closing to wrap up 1.2.. Will create issues for point 1 (#115 , #90 )
52 (other comment)
We can implement this as a remark inside Schedule
.
The remark is for the fitness instructor to add in comments and/or types of exercises done by this client.
We can then display it as part of the client's information
53 (other comment)
it should just delete the associated schedule I think ...
54 (other comment)
Please help me check if this class diagram is correct 😃
55 (other comment)
current implementation only check for invalid duration ( > 0 ), but don't have upper limit yet
56 (other comment)
@dhafinrazaq , you have added right?
57 (other comment)
should be fixed now ..
58 (other comment)
Changes together with #159
59 (other comment)
Nah, its not a bug, its a feature. It is to help you from accidentally scheduling 2 different schedules in a different gym.
60 (other comment)
@kelvinvin I think we should revert it to the original 😭 . Lucky we test in PED
61 (other comment)
It's only because you are trying to break the system LOL. Users will appreciate the autocorrection.
62 (other comment)
I want to keep the search results.
63 (other comment)
@dhafinrazaq this one is cause we change the client sameness to only email right.
64 (other comment)
@kelvinvin
65 (other comment)
Its a feature
66 (other comment)
duplicate
67 (other comment)
duplicate
68 (other comment)
Whose address book now dont have identifier at the back?
Eg.
Kelvin [cs2103T tp] - Wei Jie 2020
69 (other comment)
duplicate
70 (other comment)
cannot reproduce the "few thousand minutes" thing
71 (other comment)
yea.. the app is highly unusable because all users will schedule a session only in leap year dates. 😏
On a side note, I will set the resolver to strict (seems to be the cause of many other sadd
date time issues as well)
72 (other comment)
i ❤️ this guy
@RuiFengg
(33 comments)1 (commented on others PR)
TaskTemplate instead of Task Template/Preset Task Template
2 (commented on others PR)
Should Preset Task just be Task only?
3 (commented on others PR)
For now maybe we should use remove the spacing between Task Template, Task Schedule, Module Schedule etc.
4 (commented on others PR)
Probably should try to use module code instead of index
5 (commented on others PR)
modules*
6 (commented on others PR)
has to be an integer from 1-7*
7 (commented on others PR)
has to be a valid positive integer. The Total number of weeks are calculated using the start and end date of the semester*
8 (commented on others PR)
weeks*
9 (commented on others PR)
has been completed*
10 (commented on others PR)
Displays all tasks in the week that is specified by the user
11 (commented on others PR)
has to be a valid positive integer. The total number of weeks are calculated using the start and end date of the semester.
12 (commented on others PR)
Total weeks in the semester
13 (commented on others PR)
Creates a template of tasks for the user to reuse weekly to quickly add into his/her schedule
14 (commented on others PR)
List all task templates that were created
15 (commented on others PR)
Creates and adds a preset task in the selected task template
16 (commented on others PR)
has to be an integer from 1-7, 1 being Monday and 7 being Sunday
17 (commented on others PR)
has to be an integer from 1-7, 1 being Monday and 7 being Sunday
18 (commented on others PR)
Clear all preset tasks in the selected task template
19 (commented on others PR)
Rmb to change the capitalisation for UG
20 (commented on others PR)
Maybe listtemplatetasks would be a beteter name
21 (commented on others PR)
List all preset tasks in the task template
22 (commented on others PR)
Maybe listallmodules will be a better name
23 (commented on others PR)
Ternary ? should hour instead of hours
24 (commented on others PR)
Should name the class name as Day.java
25 (commented on others PR)
Refactor Days to Day
26 (commented on others PR)
Some have full stops and some don't
27 (commented on others PR)
Can consider using the Amount class so Price will store an Amount instead of a big decimal
28 (commented on others PR)
😸
29 (commented on others PR)
Can check out Hans implementation for the clear command that that passes a new service manager (expensetracker for your case)
30 (commented on others PR)
Message takes a bit of time to understand for me, maybe undo success or undo complete is sufficient 😸
31 (commented on others PR)
Same here, maybe "Already at oldest change" (copied from vscode vim)
32 (commented on others PR)
maybe can extract out some stuff here since there are two return statements and many checks for the conditional
33 (commented on others PR)
Homerce*
34 (commented on own PR)
Yup its quite referenced from the original AB3 tests
35 (commented on own PR)
Thx for the catch! Removed them 😄
36 (commented on own PR)
Thanks for the catch 😃
37 (other comment)
Better to merge this after everyone updates their profile in the aboutus page
38 (other comment)
Amend commit to update DG use cases with suggestions from @khoongwk
39 (other comment)
Not sure if add remark changes were accidental for this branch but would be useful to have it to serve as the description for tasks 😸
40 (other comment)
LGTM
41 (other comment)
Added some tests
42 (other comment)
Consider checking out Galvin's implementation for parse method of find command
43 (other comment)
Current implementation is just to take total revenue for the month subract with total expense for the month. Tests not added yet
44 (other comment)
Issue related to client and appointment as well
@tanweijie123
(33 comments)1 (commented on others PR)
I don't think we can change the copyright license?
2 (commented on others PR)
Abit hard to look through all without stepping through 😕
Was thinking of letting it merge and we test; but see the rest
3 (commented on others PR)
NonExistenceFile.json is assertFalse for every src/test/data/* folder.
I guess it is a bug output file since the test doesn't want it to exist.
4 (commented on others PR)
to fix this issue (change Clients to client), refer to the new comment
From what I found out:
The program uses the "Clients" variable as keyword to save a json file.
The program then uses @JsonProperty("clients") to pick this keyword for assignment from the json file
5 (commented on others PR)
change @JsonProperty("Clients") to @JsonProperty("clients")
6 (commented on others PR)
Yes. I expect it to have more errors.
Because, the actual data file is saved as caps Client instead of client.
I can only help u find these (those files in /JsonAddressBookStorageTest & /JsonSeralizedAddressBookTest) files, that you might be likely to change them from caps C to small C. Maybe there are others that are not flagged out
7 (commented on others PR)
I think we should merge with the 2 test failure and create a new issue tracker to debug. Then can find out the root cause and more people can debug it instead of predicting the problem.
It seems to happen during the execution of saving a new temp file + reading failure.
8 (commented on others PR)
This will allow the user to start and end with '-'
Not sure if that was intended.
If it was correct, try to add 1 test case to test it 😄
9 (commented on others PR)
My DateTime formatter also different from yours
DateTimeFormatter.ofPattern("dd/MM/yyyy HHmm")
10 (commented on others PR)
Maybe can do if (sessionId == null || !ParserUtil.tryParseInt(sessionId))
, then throw IllegalValueExcep
11 (commented on others PR)
Best to undo this. Dont put your name in git blame
12 (commented on others PR)
Why suppress checkstyle warning though
13 (commented on others PR)
Help to remove empty else
14 (commented on others PR)
Do remember to add this into AddressBookParserTest also.
15 (commented on others PR)
Return a list of ??
16 (commented on others PR)
Uses*
17 (commented on others PR)
@return A list of clients
18 (commented on others PR)
@return A list of session
19 (commented on others PR)
Sorts*
20 (commented on others PR)
Remove dead codes
21 (commented on others PR)
Remove //placeholder
as it is live date/time
22 (commented on others PR)
" sview p/all" will not update the label
23 (commented on others PR)
commandResult.equals(ViewSessionCommand.MESSAGE_SHOW_SESSIONS_SUCCESS
will always return false because commandResult
is a type of CommandResult
and ViewSessionCommand.MESSAGE_SHOW_SESSIONS_SUCCESS
is a type of String
24 (commented on others PR)
Try to remove debug statement before merging
System.out.println(commandResult.getFeedbackToUser());
25 (commented on others PR)
(e.g. If today is Friday, display from today till the Friday that falls 2 weeks later).
In other words, it will display today + 2 weeks (14 days) in the future
26 (commented on others PR)
in the result of the **c**find command
27 (commented on others PR)
clist
28 (commented on others PR)
to force delete a client ...
29 (commented on others PR)
need to add hyperlink to #sview before deleting
30 (commented on others PR)
Want to update to this?
31 (commented on others PR)
clist exist in 201-208
32 (commented on others PR)
No need to remove logger
33 (commented on others PR)
empty block without ending >/div>
34 (commented on own PR)
The >title> will set it as tab name, while the # About Us is the in the webpage.
35 (commented on own PR)
Yes. I agree with you, but UI cannot run test cases.
Putting it in ViewClientCommand cannot test execute.
Usually, it should be placed in MainWindow::executeCommand, but I will see how
Edit: ViewClientCommand will create a lambda runnable for MainWindow to run.
36 (commented on own PR)
Updated
37 (commented on own PR)
It is a quick fix for AutoComplete. So without it, we must find the cause of why the first row was different colouring
38 (other comment)
fixes #18
39 (other comment)
similar to #41
40 (other comment)
@tanweijie123 will this change be compatible with the change you proposed for #68 ?
Yes. All the test case refactoring can be used. (because I have not started with that)
Gym, Interval, ExerciseType can be imported because currently, I am using it as String type
We can merge the Session to accommodate with ^.
Can refer to #70
41 (other comment)
#68
42 (other comment)
#68
43 (other comment)
#68
44 (other comment)
#68
45 (other comment)
#68
46 (other comment)
fixes #78
47 (other comment)
Right sidebar previously had a scrollbar that doesn't show now, but I think it's fine not to have it. Lgtm!
Vbox have auto hide scrollbar if not necessary. So maybe your screen size bigger?
48 (other comment)
Have we checked with Prof Damith on using controlsfx as external libraries?
Yup. Approved.
49 (other comment)
Updates: The UI is already available on the homepage. We just need to change the listview to display only today's schedule instead of the whole schedule list
50 (other comment)
To add this highlighted line to fix the bug
Will push it with some other PR next time
51 (other comment)
Today's schedule's list not correct lehh
52 (other comment)
Before:
After:
53 (other comment)
Allowed.
Today's schedule already catered for periods for that.
54 (other comment)
User should be able to create sessions whenever they required.
Use case
When user first started and needs to import older data
When user forgets and enter back-dated data.
Similar to using an actual calendar app, you can create events at year 1900 and 2100.
55 (other comment)
@dhafinrazaq it is inherited from AB3
56 (other comment)
Agree with @benclmnt.
Perhaps we can include it in UG that search result is maintained.
57 (other comment)
A suggestion:
To only include end date if it stretches for more than 1 day.
58 (other comment)
Maybe we should solve this major problem that occurs once every 4 years, to display an invalid message instead?
severity.High : A flaw that affects most users and causes major problems for users. i.e., makes the product almost unusable for most users.
59 (other comment)
Different screen resolution will have different label length. Furthermore, if the name is too long, the user can use cview
to view the name.
Restricting name length also poses another issue. What is a suitable length?
Hence, this will not be fixed.
60 (other comment)
I propose to only make email unique identifier.
Name: Can have same name
Phone: Can use office phone number, or your spouse's. Maybe a parent's phone number since the child doesn't have?
Address: same as phone
61 (other comment)
Is it possible to fix this tho?
@aizatazhar
(33 comments)1 (commented on others PR)
nitpick: format should be HHmm (lowercase m for minutes since M is for months)
https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html
2 (commented on others PR)
zookeep book
3 (commented on others PR)
Sorry not 100% sure but is this documentation correct? I dont see any references to medical condition here
4 (commented on others PR)
nitpick: should capitalise the first letter of the return javadoc sentence. same for the method below
5 (commented on others PR)
nitpick: think the .anyMatch() methods from line 58 to 64 should have indented 8 more spaces since it is part of the stream on the line before it
6 (commented on others PR)
i think can delete the (NEW) comment
7 (commented on others PR)
Should be zookeep book (or can just say "An animal with this ID already exists")
8 (commented on others PR)
I think this belongs in SortCommand
since it isn't a common message. Also perhaps can mention the available sort parameters in this error message
9 (commented on others PR)
Think a better description could be Sorts all animals in the zookeep book based on user specified parameter
?
10 (commented on others PR)
Think this line can be standardised with the rest of the commands? I suggest something like
Parameters: KEYWORD (name, id, feedtime)
? ok not sure how to phrase the stuff in the brackets but something like this would be nicer i think
11 (commented on others PR)
This just my opinion (feel free to ignore) but i feel like this belongs more in the SortCommandParser
since this is parsing the user's input. Perhaps you can make SortCommand
take in an AnimalComparator
instead?
12 (commented on others PR)
I think feedtime should be spelt as "feed time" wherever possible (other than when the user actually types the command?) since the class is called FeedTime
. Like in the AnimalComparator
and FEEDTIME_KEYWORD
as well
13 (commented on others PR)
Additionally, minor improvement can be making the keywords case insensitive, so if user types sort NAME
it should still work
14 (commented on others PR)
see my comments on SortCommandParser
15 (commented on others PR)
couldn't the default case (i.e. unrecognised keyword) be to throw a ParseException
here (same as lines 26-27)? seems a bit weird to create an invalid object
16 (commented on others PR)
see comments on SortCommandParser
. i believe category is only used in your SortCommand
to check if it is an invalid case? in that case category
attribute can be deleted, then this class won't have to depend on SortCommandParser
.
17 (commented on others PR)
I think it was because I did not want to input a null as the animal comparator
Hmm, in that case i believe you can do this instead:
case NAME_CATEGORY:
return new SortCommand(AnimalComparator.createAnimalNameComparator());
for each of the categories, then you can omit the line return new SortCommand(animalComparator);
. But regardless i think the way it is now you will never pass a null either so up to you
18 (commented on others PR)
ah okay fair enough!
19 (commented on others PR)
i think you can delete the >br>
at the end of this line cos it makes the spacing off
20 (commented on others PR)
add >br>
to the end of this line
21 (commented on others PR)
add >br>
to the end of this line
22 (commented on others PR)
maybe can include that it is case insensitive?
23 (commented on others PR)
sorry i think the reason why the spacing is weird is bc it is a block. could you change it to try changing it to markdown="span"
?
24 (commented on others PR)
Maybe can add on that it appends the details? Same for the ReplaceCommand
javadocs
25 (commented on others PR)
nitpick: an Animal
instead of a Animal
26 (commented on others PR)
nitpick: an Animal
27 (commented on others PR)
think need to update this part EditCommand
to AppendCommand
28 (commented on others PR)
same as above, the EditCommand
29 (commented on others PR)
ReplaceCommand
30 (commented on others PR)
ReplaceCommand
31 (commented on others PR)
i think UndoCommand
and RedoCommand
aren't being used here?
32 (commented on others PR)
Sorry why does this pr modify the DG?
33 (commented on others PR)
I think the ?
should be removed
i.e. ([01][0-9]|2[0-3])[0-5][0-9]
34 (commented on own PR)
Yep sorry I'll wait for the code to be fixed first then I'll run all the commands again and paste the updated outcomes
35 (other comment)
Closed by #65
36 (other comment)
Relevant PRs: #60, #62, #66, #68
37 (other comment)
@m0nggh yep i think we should! Maybe you could file a new issue for that
38 (other comment)
Could you fix the typo medicalConditionged
in tp/src/test/data/JsonSerializableAddressBookTest/duplicateAnimalAddressBook.json
39 (other comment)
Please wait for #87 to be closed before working on this issue
40 (other comment)
~@m0nggh Sorry could you hold until my PR (#90) is merged so work doesn't get repeated? I have renamed some files but I didn't touch the sample animals (stuff like Bob Alice etc)~
41 (other comment)
Nevermind, apparently it's related to the proposed "undo/redo" feature in the DG
42 (other comment)
@koonweee could we have edit take in the id instead of the index instead? i.e. edit >id number> ...
instead of edit >index> ...
43 (other comment)
Updates
Align animal descriptors
Change animal descriptors to yellow
Add spacing between the medical condition labels and feed times labels
Feed times display "hrs"
Allow resizing of command result display box
Set custom style for fields which are not specified
44 (other comment)
Closed by #114
45 (other comment)
Similarly, "an address book" was changed to "an zookeep book" in ReadOnlyZooKeepBook.java
46 (other comment)
Suggestion if you have time: able to sort by any field, e.g. sort name
/sort id
/sort feed
etc.
47 (other comment)
can you try see if can use HTML to center the figure labels?
e.g.
<p align="center" font-style="italic>Figure 1: The Architecture Diagram of ZooKeep</p>
while we're at it, can also see if we can use that to centralise the images as well?
<p align="center"><img src="images/ArchitectureDiagram.png" width="450" /></p>
48 (other comment)
@koonweee not sure why when i merged #223 it closed this issue lol
49 (other comment)
Duplicate of #254
50 (other comment)
Duplicate of #248
51 (other comment)
Related to #235
52 (other comment)
Duplicate of #249
53 (other comment)
Duplicate of #248
54 (other comment)
Duplicate of #248
55 (other comment)
replace
is used to replace the entire field. If a user would like to add additional items to the medical/feed time fields, they may use the append
command
56 (other comment)
Don't think this is a bug since Clownfish
is a single word so finding fish
wont return Clownfish
. Boa Constrictor
is 2 words so find boa
would return the species Boa Constrictor
. But maybe we could look into describing this functionality better in the user guide
57 (other comment)
Related to #239
58 (other comment)
Related to #239
59 (other comment)
Related to #220
60 (other comment)
Duplicate of #233
61 (other comment)
Related to #239
62 (other comment)
Related to #243
63 (other comment)
Closed by #233
64 (other comment)
Probably won't fix this since it's reasonable to think that a user might have their own naming conventions/standards for their animals which may include non-alphabetical characters
65 (other comment)
Not too sure what this is referring to
66 (other comment)
I think it's because it's sorted by ASCII values
67 (other comment)
Agree with both, maybe can just specify if finding by ID or feed times we need an exact match, the rest of the fields is partial. But then there can be weird case where if i named my animal by a number e.g. name: 12345 and did find 123
it would display this animal.
Personally i would prefer having exact match for every field for consistency. I thought all the issues raised was just documentation related, i.e. it was unclear what find
does exactly.
An alternative solution would be to have find take in another parameter which is the field to search. e.g. find n/Hashbrown
and find i/123
? It is more intuitive but at this stage idk if anyone would want to implement this because prone to bugs + update tests + update documentation
68 (other comment)
the updated regex seems to accept 3 digit numbers, e.g. append 24211 259
or append 24211 159
?
69 (other comment)
It's missing a new line between line 13 and 14
70 (other comment)
Closed by #274
71 (other comment)
Closed by #274
72 (other comment)
Closed by #274
73 (other comment)
RIP
74 (other comment)
don't know if it's super hard for you to do but would be nicer if the intro was centralised. if not then still looks good to me
@bchenghi
(32 comments)1 (commented on others PR)
I think the link for UserGuide should be this one? (https://ay2021s1-cs2103t-f13-4.github.io/tp/UserGuide.html)
The current one brings me to https://github.com/AY2021S1-CS2103T-F13-4/tp/blob/docs/UserGuide.html#quick-start instead.
2 (commented on others PR)
Similar to UserGuide, I think the DG link is this one? (https://ay2021s1-cs2103t-f13-4.github.io/tp/DeveloperGuide.html)
3 (commented on others PR)
Sorry, I think this 'food' is not changed yet.
4 (commented on others PR)
Should we change address book to food inventory here also? Same for line 158, 162, 166.
5 (commented on others PR)
Very minor and we are going to delete address anyway, but do you think this should be address instead of simplykitchen?
6 (commented on others PR)
Should the "Persons" here be "Food Items" instead?
7 (commented on others PR)
Should "persons" here be "food items" instead?
8 (commented on others PR)
Very minor, but should we change "addressBook" parameter to "foodInventory" instead?
9 (commented on others PR)
I think the "bar" in statusbarPlaceHolder should be "Bar" instead? Since it was changed to "Bar" in MainWindow.java.
10 (commented on others PR)
Very minor, but should this be expectedFoodInventory instead? Line 112 and 117 as well?
11 (commented on others PR)
Very minor, but should this be Food Inventory instead?
12 (commented on others PR)
Should SimplyKitchen Inventory be Food Inventory instead? Line 137 as well.
13 (commented on others PR)
Extremely minor, but should "an" be "a"? Also should "persons" be "foods" instead?
14 (commented on others PR)
Very minor, but do you think we should switch back to Label for consistency?
15 (commented on others PR)
Very minor, but should the comment for invalidity be different?
16 (commented on others PR)
I feel that since priority is no longer optional, should we set the priority directly without the Optional here?
17 (commented on others PR)
Should we have a priority missing test here as well?
18 (commented on others PR)
Very minor, but what do you think of "At least one of the optional fields must be provided."? Since INDEX is not optional.
19 (commented on others PR)
Since a single tag can have multiple words, so containsWordIgnoreCase will throw an error if its argument has multiple words?
20 (commented on others PR)
Should this be LogsCenter.getLogger(ExpiryDateSearchPredicate.Class) instead?
21 (commented on others PR)
Very minor, but for consistency, do you think this should be execute_zeroDescriptionKeywords_noFoodFound()?
22 (commented on others PR)
Should we include tags with spaces as well?
23 (commented on others PR)
Should we have brackets after the method names, for consistency? e.g. model#setSortingComparators(Comparator>Food>[] sortingComparators)
24 (commented on others PR)
Should the link be #adding-a-food-item--add instead?
25 (commented on others PR)
Do you think if we make **command summary** a hyperlink it would be convenient? Same for FAQ, features and quick start above as well.
26 (commented on others PR)
Very minor, but perhaps this can be "your food inventory"? For consistency.
27 (commented on others PR)
The PED bug #157 stated that the tester was unsure which fields were optional and which were not. Do you think we should explain that here as well? Perhaps in the next line, "Fields in square brackets are optional"? Similarly for EditCommand and FindCommand.
28 (commented on others PR)
Should we include an error message for invalid date? For example 29-2-2021 is the correct format and is between 2020 and 2120, but is not valid.
29 (commented on others PR)
Oh I see. Thanks!
30 (commented on others PR)
OK agreed.
31 (commented on others PR)
Perhaps this could be "Responsible for ensuring"?
32 (commented on others PR)
There's a typo for "specific".
33 (commented on own PR)
Okay changed
34 (commented on own PR)
Changed all comments with name to description.
35 (commented on own PR)
I agree, changed them. Thanks!
36 (commented on own PR)
Yeap I agree. Changed them.
37 (commented on own PR)
I agree with you, thank you!
38 (commented on own PR)
Okay changed. Thanks.
39 (commented on own PR)
Changed. Thanks!
40 (commented on own PR)
Okay changed. Thanks!
41 (commented on own PR)
Okay. Thanks!
42 (commented on own PR)
Thanks! Updated.
43 (commented on own PR)
Changed. Thanks!
44 (commented on own PR)
Updated, thanks.
45 (commented on own PR)
Updated, thanks.
46 (commented on own PR)
Changed, thanks!
47 (commented on own PR)
Thanks! Changed.
@sgn00
(31 comments)1 (commented on others PR)
Can add a regex checker to ensure the note is not an empty value. Reference Question / Answer class.
2 (commented on others PR)
This will be changed to a null check instead if we use null instead of ""
3 (commented on others PR)
change person to flashcard
4 (commented on others PR)
person
5 (commented on others PR)
change tag to tagged
6 (commented on others PR)
Check other headers to match them.
7 (commented on others PR)
too many columns. Remove at least 2 to make it more readable.
8 (commented on others PR)
statscommand shldnt have any flags
9 (commented on others PR)
would be good to use ↓ instead of down arrow key
10 (commented on others PR)
maybe should make it more clear that y/n is feedback not giving the answer
11 (commented on others PR)
"app" instead of "software"
12 (commented on others PR)
I think we can use "app" instead of "software"
13 (commented on others PR)
can help fix the "belonging n" typo
14 (commented on others PR)
Is it possible to structure this as one paragraph? Diagram
..... instead of 3 separate chunks.
maybe use eg of d/images d/diagram.png instead for unsupported.
for the file types, no need write "unintended behavior". Remember to add jpg, gif also.
15 (commented on others PR)
Minor grammar error "user quits the quiz" instead of "user quit the quiz"
16 (commented on others PR)
Maybe add a caveat that no pie chart will be shown if it has not been reviewed.
17 (commented on others PR)
For the stats feature, add a similar disclaimer to the view feature that the viewpane will be returned to a blank state on new command executed.
18 (commented on others PR)
Standardize the naming as these hyperlinks don't work. "viewing-the-statistics-of-flashcard-stats" is used in the contents page.
19 (commented on others PR)
Standardise naming. Either filter relevant or filtering out flashcards.
20 (commented on others PR)
Note we are not reviewing all flashcards. Change to review flashcards.
21 (commented on others PR)
Remove all
22 (commented on others PR)
Remove code highlight.
23 (commented on others PR)
Remove fullstop at the end
24 (commented on others PR)
Remove code highlight.
25 (commented on others PR)
We are brought into quiz mode.
26 (commented on others PR)
Missing space notes(if applicable)
27 (commented on others PR)
Standardise present continuous or present tense.
28 (commented on others PR)
"pressing" not "clicking"
29 (commented on others PR)
"pressing" not "clicking"
30 (commented on others PR)
Maybe can specify that all flashcards will be listed.
31 (commented on others PR)
Will you be adding to this part?
32 (commented on own PR)
fixed
33 (commented on own PR)
i think they are only used once so there is no need for that.
34 (commented on own PR)
done
35 (other comment)
Make view clear on new command. Add to UG also.
36 (other comment)
state clearly in UG expected behavior
37 (other comment)
same as #126
38 (other comment)
flashcard toString()
39 (other comment)
state behavior in UG.
40 (other comment)
will state in UG c/ cannot be left blank.
optional in AddCommand only because we will auto assign it to general.
41 (other comment)
make scrollable vertically only.
42 (other comment)
same as #127
43 (other comment)
same as #121
44 (other comment)
Improve UG for diagram.
45 (other comment)
same as #127
46 (other comment)
Add to UG.
47 (other comment)
add hyperlinks.
48 (other comment)
Remove statistics.
49 (other comment)
Add expected outcome to UG.
50 (other comment)
Change UG.
51 (other comment)
add eg.
52 (other comment)
same as #127
53 (other comment)
Add disclaimer to ug
54 (other comment)
Won't fix as if we allow scrolling by arrow keys, it will affect the reviewing and quiz movement flows. In addition, it is hard to implement determining whether you want to scroll the question or answer based on the arrow keys.
55 (other comment)
cannot reproduce but will keep in mind.
@aidoxe-123
(31 comments)1 (commented on others PR)
Since ParserUtil.java is still there, is it better to keep this test file instead of deleting it?
2 (commented on others PR)
What's wrong with this test
3 (commented on others PR)
Does the position of the unnamed parameter matter?
How does the program behave towards these commands:
edit -n JohnDoe 1
edit1 -n JohnDoe
4 (commented on others PR)
Just to justify my curiosity, can a command have multiple unnamed parameters?
5 (commented on others PR)
I think this should be AddCommand.COMMAND_WORD instead of "add", the same for other commands
6 (commented on others PR)
Although these test classes will be changed in McGymmy, is it better to keep them just for this PR to make sure that the new parser is working properly with the old AddressBook test first?
7 (commented on others PR)
Same comment as AddCommandTest.java
8 (commented on others PR)
Same comment as AddCommandTest.java
9 (commented on others PR)
Same comment as AddCommandTest.java
10 (commented on others PR)
Same comment as AddCommandTest.java
11 (commented on others PR)
Maybe add some more tests for the old address book's logic, to make sure that it works exactly as expected as the old parser?
12 (commented on others PR)
I think naming it toString
is enough
13 (commented on others PR)
I think naming it getCalories
is enough
14 (commented on others PR)
I think the first letter of the string should be capitalized to be the same format as other files
15 (commented on others PR)
Inconsistent verb tense: In some files, the string is present simple tense whereas, in other files, it is infinitive.
16 (commented on others PR)
Maybe adding an example here too?
17 (commented on others PR)
Can you add addCurrentStateToHistory();
in this line so that undo command can refer to this state later
18 (commented on others PR)
Is it better if you implement this test case in this PR too?
19 (commented on others PR)
Since you have already had an if statement below, I don't think this line is needed
20 (commented on others PR)
I think changing it to this will make the code shorter:
'''
this.date = null;
try {
date = ParserUtil.parseDate(date);
}
[rest of the code]
}
21 (commented on others PR)
Is there any case where this test can really get an exception?
22 (commented on others PR)
Instead of using null, how about declaring a subclass of FoodContainPredicate that always returns true, then use
FoodContainsKeywordsPredicate foodPredicate = foodPredicateParameter.getValue().orElseGet(THAT_CLASS_NAME::new]);
.
23 (commented on others PR)
The FoodContainsKeywordsPredicate
has already included NameContainsKeywordsPrecdicate
and TagContainsKeywordPredicate
.
24 (commented on others PR)
yea this works too
25 (commented on others PR)
Integer.MAX_VALUE + 1
doesn't create 2^31, since the program still treats this as an integer, should be (long) Integer.MAX_VALUE + 1
instead
26 (commented on others PR)
I think we should move "amount can only ..."
outside to be a string called MESSAGE_CONSTRAINT_SUFFIX
. The old implementation works just as fine as the new one. The old one even has fewer repeated code. So why do we need to change?
27 (commented on others PR)
I've fixed this in my PR
28 (commented on others PR)
The old one also makes sure all of them point to the same message, isn't it
29 (commented on others PR)
Should be imports instead
30 (commented on others PR)
Should be removes instead
31 (commented on others PR)
I think it should be undoes instead of undo.
I think that changed the ModelManager instead of McGymmy is better
32 (commented on own PR)
object equality is intended, as I was checking if fridge and expected fridge contains the same elements. I have overridden the equals method for fridge class
33 (commented on own PR)
Ok I will change it that way
34 (commented on own PR)
Oops, I forgot to implement it. I will implement it in the next commits
35 (commented on own PR)
Ok I will change it
36 (commented on own PR)
I think we should keep it that way to prevent potential typos. Instead of that, we can add a comment at the end of the line to explicitly state what Carbohydrate.class.getName() is
37 (commented on own PR)
I was just changing the name of the class. I haven't changed any of its implementations.
38 (commented on own PR)
Ok I will change it
39 (commented on own PR)
Fixed
40 (commented on own PR)
Fixed
41 (commented on own PR)
Actually, we cannot call this.class
before the object is initiated. Therefore, this.class.getName()
cannot be put in either Macronutrient
's constructor or a static method.
I think one alternate option is that we can use this.class.getName()
as a replacement for the macronutrientType
attribute
42 (commented on own PR)
Got it!
43 (commented on own PR)
Fixed
44 (commented on own PR)
Fixed
45 (commented on own PR)
The tag search is already case sensitive.
Ok I will change the name
46 (commented on own PR)
Isn't making the tag search case sensitive better for categorizing food items? The user can search for exactly one tag that they want.
47 (commented on own PR)
Haha so i mark this as resolved now
48 (commented on own PR)
Thanks =))
49 (commented on own PR)
Even if the string is in the correct format, it is still not guaranteed that it can be parsed. For example, 31-31-2020. We still need the empty catch clause either way
50 (commented on own PR)
I remembered them said empty catch clause should be avoided, but if there is no other way to avoid it, we should comment why. I think putting a comment there is good enough
51 (commented on own PR)
Added
52 (commented on own PR)
I move those lines in EditCommand, TagCommand, and UnTagCommand ModelManager#setFood
instead since they all call this method
53 (commented on own PR)
I've added one assertion in the latest commit
54 (commented on own PR)
Done!
55 (commented on own PR)
Ok I put it back
56 (commented on own PR)
Ok I've changed it already
57 (commented on own PR)
Fixed
58 (commented on own PR)
done!
59 (commented on own PR)
that code and this one have the same functionality:
So I just remove 1 of them
60 (commented on own PR)
added!
61 (commented on own PR)
I think this is for the index, not the macronutrient value?
62 (commented on own PR)
ok, I will limit protein, carb, and fat value to 1000. But do we really need to also limit index value to 1000 too?
63 (commented on own PR)
For this, assume that the user inputs some number that is larger MAX_INT. What message should we return in that case: the index is larger than 2^31, or the index is larger than the size of the list?
64 (commented on own PR)
ok, I will move it into parseIndex
65 (other comment)
LGTM.
66 (other comment)
The CI test says that you are missing the shadow plugins
67 (other comment)
I think your use case have the same id as sean's.
68 (other comment)
LGTM.
69 (other comment)
LGTM.
70 (other comment)
Might also add an extension like this:
find -all [keyword 1] [keyword 2] ...
to find foods that match all of the keywords
find -some [keyword 1] [keyword 2]...
to find foods that match some of the keywords
71 (other comment)
I think this would create potential bugs. For example, assume there are food items with the same name, fat, carbs, protein, date but different tags in the fridge. Then you filter a tag name and delete the filter result. It might delete the wrong food item because List#remove(E e)
only removes the first occurrence of e.
To prevent this, I think you might need to update the Food#equals
method
72 (other comment)
Change according
I think you can do smth like what Kamil and I did and abstract out the Parsing part? This will remove the McGymmyParser part completely and make the diagram less complicated
Fixed!
73 (other comment)
Do we want an option to find before/after a certain date? i.e. show all foods created before/after a certain date?
Or we can put this in another PR/not do this at all.
I think we should create another pr.
74 (other comment)
If the user calls list
multiple times, what should be the expected behavior of the program? Should it allow undoing the same number as the number of list command, or just 1 time?
75 (other comment)
bug found
What is the bug
76 (other comment)
If History::save
takes in a Model, the ModelManager::getPredicate
must be public. However, that method is not supposed to be accessed by classes outside of the package. If we really want to alleviate this problem, we might want to create an association class
77 (other comment)
This is more of a feature flaw than a bug, this is the expected behavior of the current implementation. I am thinking of saving modelManager
to history
after every command, no matter if the command makes any changes to the old version of modelManager
Another way is to improve documentation, but I think it is hard to explain it clearly to them.
78 (other comment)
(Copy from stackOverflow)
You can call parseInt
and catch NumberFormatException
, which will be thrown if the number is too large (though it will also be thrown if the String has non-numeric characters).
If you want to avoid the exception, you can run the following checks:
If the String has more than 10 characters (or 11 if the first character is '-' or '+'), it must be larger than Integer.MAX_VALUE
or smaller than Integer.MIN_VALUE
.
Otherwise, call Long.parseLong()
and compare the result to Integer.MAX_VALUE
.
79 (other comment)
I think we can make the left column scrollable on the horizontal axis.
Limiting the length of the tag doesn't work here, since it doesn't fix the text overflow error if there are lots of tags
80 (other comment)
I think we should add a
>br>
to be explicit in case there are some other changes which lead to the loss of the newline
Fixed
81 (other comment)
We have already stated that TAG is case-sensitive in the find command's section.
82 (other comment)
Same as #169
83 (other comment)
This is because the above command will be equivalent to add -n Cake -t creamy fatty
due to our library's behavior. We should mention this behavior in the UG
84 (other comment)
#199
85 (other comment)
#199
86 (other comment)
same as #179
87 (other comment)
I think he means this
88 (other comment)
Your implementation is q clean too without many repeats but it involves the creation of a Macronutrient when the value is needed.
It might be better to have a static reference to a default macronutrient to be accessed instead of creating a new one to be accessed everytime
You got a point here. I've changed it back to the original one
89 (other comment)
Close since overlaps with #235
90 (other comment)
Close since tests have already been added
91 (other comment)
Close since tests have already been added
@rtshkmr
(30 comments)1 (commented on others PR)
I think it's okay to init it for now. We could probably KIV this for further optimisations if it's ever a problem down the road?
I agree with the case when there will be many countries and this poses a real problem though.
Initialising probably makes for easy testing for now as well.
2 (commented on others PR)
So we were reviewing this PR together and found line 29 and 43 to be quite funny 😃
3 (commented on others PR)
@qwoprocks mentioned that having a one-way transfer of information from Clients to AddressBook is more complicated to implement and so to Synchronise the two set of tags, this method was chosen.
also may I suggest having a helper function called synchronizeTagSets()
4 (commented on others PR)
Might need to modify the name for this test method?
5 (commented on others PR)
might need to modify the name for this test method?
6 (commented on others PR)
might need to modify the name of this test method? It seems like it was aldy there from AB3, but should we still modify this method name?
7 (commented on others PR)
this is causing the checkstyle to complain.
Rayson and I talked about this. Two dudes actually had a convo about how many spaces to have 😆
____first line with 4 space indent
________thisis 8 space indent because 4+prev indent.
8 (commented on others PR)
CS2030 saves the day
9 (commented on others PR)
Thank you Rayson 👍
10 (commented on others PR)
This is an unused method for now, can't see where else it's used..
11 (commented on others PR)
Footer should probably be lowered to the bottom border right.
But fixing this isn't that impt for now since it's functional!
12 (commented on others PR)
alright will follow up on this once this PR is merged. my next task is delete command (at the least) before touching storage 👍
13 (commented on others PR)
I think this could be an unnecessary new line (line 146) or is it that there's supposed to be a blank line before return statements? 🤔
14 (commented on others PR)
is 159 an extra newline?
15 (commented on others PR)
this is really nit-picky of me, but I suggest naming it countryToCountryNotesMap
to reflect the plurality of the country notes in the set and be similar to the init method name.
private final Map<Country, Set<CountryNote>> countryToCountryNotesMap;
16 (commented on others PR)
I choked upon seeing this 😏
17 (commented on others PR)
ref line 60
the command#execute is the one doing it
18 (commented on others PR)
Agree to changing it, but think this should be slightly lower in the priority list for this release at least.
19 (commented on others PR)
should this be following the same commenting standard?
"Constructs an EditClientDescriptor. It is an empty constructor that takes in no arguments." or something like that?
20 (commented on others PR)
Would saying something like "Returns true if CommandResult will cause the application to exit" be better?
tbh the name isExit
should probably be a little more informative, like resultIsExit
or shouldExit()
(to be more in-line with you current comment and standardise with the other shouldXXX
method names)
21 (commented on others PR)
* Suggests a list of clients based on the specified suggestion type.
22 (commented on others PR)
* @throws ParseException If the user input does not conform to the expected format.
23 (commented on others PR)
👍
24 (commented on others PR)
Alright agreed 👍
25 (commented on others PR)
👍
26 (commented on others PR)
A command history greatly optimises the user's productivity by removing the need to repetitively type out similar commands.
27 (commented on others PR)
Furthermore, it allows backwards viewing of previous commands given, which is similar to the CLI experience. However, the difference between the traditional CLI history and TBM CLI history is that TBM's history only accepts valid commands. Invalid commands entered will not be included will not appear in the command history.
28 (commented on others PR)
This sentence is a little confusing man 😟
"The modification of previous commands ..."
and
also typo on the "was" --> "as" probably
29 (commented on others PR)
can this be used instead? https://greenwichmeantime.com/time-gadgets/time-zone-converter/
30 (commented on others PR)
can this be used instead? https://greenwichmeantime.com/time-gadgets/time-zone-converter/
31 (commented on own PR)
The extension is specific to step 2 of the MSS ("TBM shows a list of clients that match user's query"), hence the extension should be named 2a
instead of 1a
isn't it?
edit: yeap, the suggestion by ming chong is correct, I'll change it to what he suggested, ref to this for similar example, the "error" check happens after the actor (user) submits:
32 (commented on own PR)
alright, originally copied from our hackmd document, which seems to be out of date based on what you pointed out
33 (commented on own PR)
list
is an AB3 command, I didn't add that in actually. Instead, I copied over from our HackMD file what I had to add in.
that's why person
persisted and wasn't changed to clients
I'll just remove it and update this PR
34 (commented on own PR)
done
35 (commented on own PR)
done, put it as "User Guide" and "Developer Guide" for now
36 (commented on own PR)
this was unintended, but i'll just leave it there for now
37 (commented on own PR)
took it out
38 (commented on own PR)
this was left as is because in the future, we probably should improve the regex pattern matching (as per the screenshot I sent about kang liang's suggestion)
have added a todo to this to keep note of it
39 (commented on own PR)
agreed! admire your meticulous eye a lot @qwoprocks
40 (commented on own PR)
Added todo, changed to LinkedHashSet
41 (commented on own PR)
I have the same understanding as @qwoprocks that everything has to go thru the model, that's why I left this
42 (commented on own PR)
done!
43 (commented on own PR)
done
44 (commented on own PR)
yeap, done
45 (commented on own PR)
done!
46 (commented on own PR)
updated with an autogenerated hashCode()
47 (commented on own PR)
I've asked Rayson before modifying the CountryManager
🦺
48 (commented on own PR)
I think this is useful. Then can filter by untagged notes and do other actions based off that.
e.g. edit an untagged note at a later time after filtering notes based on the "untagged" tag
49 (commented on own PR)
was sitting on it because this depended on Rayson's Country class. Will add this part in since he's done.
50 (commented on own PR)
To be honest, I didn't know the benefits/use cases of using unmodifiable objects until your comments on this PR. I've done a cursory read up on it, thanks!
getCountryNote
was put to retrieve note associated to a country, to be used when the TagNoteMap
shall be initialised from countries. This is related to the commented out initialisation method inside TagNoteMap
, will be used in a later commit 👍
51 (commented on own PR)
Followed your suggestion. Will test using the GUI instead of just using automated tests so that I don't overlook such things henceforth.
As usual, I'm amazed by your sharp eye in catching these things 😃
52 (commented on own PR)
👍 changed it
53 (commented on own PR)
currently we have a 1-way dependency between notes and tags. This method existed for the case in the future when this dependency would have been removed. Since we're accepting this 1-way dependency for now, this should method should be removed but might be required in the future, hence I'll put the method here for reference:
/**
* Links a new set of notes to a tag. This method exists in the case where we remove
* the one-way dependency b/w tags and notes, then we'd need to use this.
*
* @param newNotes The notes to associate with a particular tag.
* @param tag The tag to associate the notes with.
*/
public void updateNotesForTag(Set<Note> newNotes, Tag tag) {
requireAllNonNull(newNotes, tag);
noteSet.addAll(newNotes);
// update the tags set for each of the notes:
for (Note newNote : newNotes) {
if (noteToTagsMap.containsKey(newNote)) {
noteToTagsMap.get(newNote).add(tag);
} else { // new note:
Set<Tag> tags = new HashSet<>();
tags.add(tag);
noteToTagsMap.put(newNote, tags);
}
}
//update the notes set for the tag:
Set<Note> currentNotes = tagToNotesMap.getOrDefault(tag, new HashSet<>());
currentNotes.addAll(newNotes);
}
54 (commented on own PR)
Pls let me leave this here 😢 . IMO it improves readability in the user input variables later in the tests.
55 (commented on own PR)
added reason for the public
access but I've also added a todo because I expect changes to this after storage is done.
56 (commented on own PR)
I've updated it to follow the naming standards.
57 (commented on own PR)
this is a moot point for now, it's relevant when deleting/updating a note and the TagNoteMap has to be updated
58 (commented on own PR)
Quite a few TODOs and stray comments. I think a follow-up issue can be created to cleanup the todos and stray comments.
Just wondering, what is the main purpose of having
TagNoteMap
class? Is it so that it would be easier to query for notes based on a given set of Tags? Because it seems like additional work to "sync" tags with notes and it might be quite error-prone if the syncing is not done right. Any thoughts @qwoprocks ?
@raysonkoh actually the implementation @rtshkmr did was a bit off from what I had in mind, the tagnotemap is actually supposed to be the one being passed down from logic manager to the parser to create the tags, so there would no need to do the syncing stuff. @rtshkmr isit alright if i just push to this PR and implement that?
let me clean it up based on both your comments first
59 (commented on own PR)
resolved, added mention of uniqueTagMap
60 (commented on own PR)
@raysonkoh I'm sticking to this until it comes off as a problem.
(for my own reference, relevant alernative: this commit for a deleted PR )
61 (commented on own PR)
❤️ thanks m8
62 (commented on own PR)
okay, understood 👍
63 (commented on own PR)
Yeap autoformatter 😂 Changed it.
64 (commented on own PR)
psps, autoformatter messed up my formatting, I havenow correctly changed it
btw the JsonAdaptedClientTest.java
doesn't have tests for the JsonCreater right...
65 (commented on own PR)
does this look better? tried the autoformatting and it makes things into a pretty tree-like format
66 (commented on own PR)
updated
67 (commented on own PR)
resolved
68 (commented on own PR)
resolved
69 (commented on own PR)
resolved
70 (commented on own PR)
Resolved
71 (commented on own PR)
changing this ps
72 (commented on own PR)
trying to refactor this test rn. The logic behind the test should be correct in that it's trying to ensure that editing a note preserves the note's tagging history.
73 (commented on own PR)
Resolved
74 (commented on own PR)
KIV v1.4
75 (commented on own PR)
Resolved
76 (commented on own PR)
resolved
77 (commented on own PR)
resolved
78 (commented on own PR)
resolved
79 (commented on own PR)
Followed another part of the code, have removed it now.
80 (commented on own PR)
added to issue #263
81 (commented on own PR)
added to issue #263
82 (commented on own PR)
added to issue #263
83 (commented on own PR)
added to issue #263
84 (commented on own PR)
I reverted to this because as a fix to #272. pe
is useless here (just needed to keep the Message usage portion, removed it now.
85 (commented on own PR)
TIL 😟
resolved
86 (commented on own PR)
Resolved
87 (commented on own PR)
removed, was unnecessary init. The setClient
method covers this syncing of the tagNoteMap now
88 (commented on own PR)
I'm adding this as a separate issue for an upcoming PR (#273 )so merging these bug fixes can be expedited.
89 (commented on own PR)
No idea how you're so attentive 🐐
90 (commented on own PR)
missed this out. Should point to the correct one now
91 (commented on own PR)
It was intentional and I think this is pretty nitty-gritty but I've changed it 👍
92 (commented on own PR)
Had no idea md syntax worked within HTML tags 👍
93 (commented on own PR)
Will add the labels of Country Note Card
and Client Note Card
to the ss and make that reference
94 (commented on own PR)
changed to Render and changed annotation
95 (commented on own PR)
took a while to find this 😞
96 (commented on own PR)
changed to getClientNotesAsUnmodifiableList()
97 (commented on own PR)
also deprecated the getClientNotesAsList
98 (commented on own PR)
Removed the comment because the test name is descriptive enough
99 (commented on own PR)
woops missed out a "standard" there
100 (commented on own PR)
removed all of the wikipedia links to the common This finding tool to find both country codes and iso codes.
101 (commented on own PR)
changed it!
102 (commented on own PR)
okay i'll take it out. Misread your comment 😄
took it out in commit made under PR #346
103 (other comment)
I learnt that just adding into .gitignore
won't automatically untrack previously tracked files!
104 (other comment)
Made a mistake by creating my branch-README-...
from an existing branch: DG update...
that's why there are two commits for this PR when there should be 1. I'm putting this comment here as a reminder to myself for the future.
105 (other comment)
LGTM
106 (other comment)
ignore this issue creation
107 (other comment)
LGTM! TagFactory looks good too 👍
108 (other comment)
Agree with the code quality aspects pointed out by @qwoprocks if we go by what the textbook outlines for static final variables.
Premature optimisation might be unnecessary for now, but it's a minor aspect imo, @raysonkoh should make the design decision on this.
109 (other comment)
Quite a few TODOs and stray comments. I think a follow-up issue can be created to cleanup the todos and stray comments.
Just wondering, what is the main purpose of having
TagNoteMap
class? Is it so that it would be easier to query for notes based on a given set of Tags? Because it seems like additional work to "sync" tags with notes and it might be quite error-prone if the syncing is not done right. Any thoughts @qwoprocks ?
for the comments & TODOs: I'll add an issue for this and resolve it as I'm doing the delete, update and storage aspects
for the purpose behind this class:
110 (other comment)
ignore this PR. The draft PR #203 was mysteriously merged to master (suspect it was a github bug because of the machine's time at that period being incorrect) but @qwoprocks got to see it still. so I'll just be adding a new PR for test updates and leaving the merged situation as is.
111 (other comment)
This looks amazing!!!
112 (other comment)
Note to Self: refer to #198 and #185 when doing this
113 (other comment)
Ignore this PR, made a mistake and couldn't revert properly.
114 (other comment)
This slipped my eye, my bad my bad 😞
115 (other comment)
Duplicate of #270
NB: currently, the last edited client note will pushed to the bottom of the list
116 (other comment)
this is a non-issue right.
if katya from RU is currently in US for the nextweek, her country should be RU and her GMT should be based on where she actually is so find by availability is based on where she is
to consider just clarifying this in the UG because it's not really a bug, it's a feature IMO.
117 (other comment)
Agreed 👍
118 (other comment)
I think should reduce the priority for this issue. Will try to add this in since I should be able to follow the country note edit anyway. But the other bugs first...
119 (other comment)
@qwoprocks Merged after doing this: 🏃♂️
LGTM, but is it possible to also add in a more informative message for client note edit? Using String.format to show the user > which client, the original note content, and the new note content. Can do in a separate PR if you want but imo its a simple enough change to do in this one.
120 (other comment)
Issue will be closed because this is a feature and not a bug.
121 (other comment)
This works well without errors and such optimization is not needed. Hence it shall be closed.
122 (other comment)
Unnecessary optimization. Issue shall be closed.
123 (other comment)
Encountered something weird.
Command history:
client note add 1 nt/abc
client note edit 1 1 nt/abc
@raysonkoh yeap I'll look into it. luckily this is a pretty minor edge case.
update:
changed it to reply this whenever an edit really isn't an edit:
@nweiyue
(30 comments)1 (commented on others PR)
Perhaps "contacts" can be changed to "students"?
2 (commented on others PR)
Perhaps "contact" can be changed to "student"?
3 (commented on others PR)
Perhaps "contacts" can be changed to "students"?
4 (commented on others PR)
Perhaps "person" can be changed to "student"? I noticed the same issue in several other places too.
5 (commented on others PR)
Perhaps the email can end with "@u.nus.edu" instead?
6 (commented on others PR)
Should this be "{@ MatriculationNumber}" instead of "Email"?
7 (commented on others PR)
Perhaps the space between "Dangerous" and "Command" can be removed?
8 (commented on others PR)
Should "studentn" be "student instead?
9 (commented on others PR)
Should people be "student' instead?
10 (commented on others PR)
Should the constant messages be renamed as well? I've noticed this issue in other places as well.
11 (commented on others PR)
Should "AddressBook" be refactored to "StudentList"?
12 (commented on others PR)
Should the parameter be change to studentList instead?
13 (commented on others PR)
Should this be change to ATAS instead?
14 (commented on others PR)
Should "AddressBookStorage" be change to "atasStorage" instead?
15 (commented on others PR)
Would "Adding a session to a class requires user input from the CLI. The parser will then parse the user input to obtain the name and the date of the session." flow better?
16 (commented on others PR)
Should this be "An"? I've noticed this in other places as well.
Perhaps you can use markdown AddSessionCommand#parse()
to replace "parse method'? I've noticed this in line 272 and 277 for other methods as well.
17 (commented on others PR)
Perhaps "String" can String
? I've noticed this in other places as well.
18 (commented on others PR)
Perhaps breaking this paragraph into two sentences will make it flow better? For example: "... . It then uses ModelManager#addSession()
.."
19 (commented on others PR)
Use of "you" here?
20 (commented on others PR)
Perhaps breaking this line of code can improve readability?
e.g.,
List>Attributes> sublist = this.attributeStateList.subList(currentStatePointer + 1, attributeStateList.size());
sublist.clear()
21 (commented on others PR)
Should presenceStats and participationStats align to the right of the footer?
22 (commented on others PR)
Perhaps can specify SESSION_DATE
can be given in the format of dd/MM/yyyy or d/M/yyyy ?
23 (commented on others PR)
Perhaps "Pull request" instead of "Pull requests"? Also maybe an additional whitespace before the bracket may make it look nicer? I see this issue elsewhere too.
24 (commented on others PR)
Should this be "Enabled"?
25 (commented on others PR)
Perhaps the sample examples can be removed?
26 (commented on others PR)
Perhaps you can change "them" to "him/her" or change "user's to users'"?
27 (commented on others PR)
Perhaps "Data will be bounded outside of one machine/bounded to other machines or servers" may flow better?
Again, should it be either "user" and "his/her" or "users" and "their"?
28 (commented on others PR)
Perhaps this can be "Similar to previous."?
29 (commented on others PR)
Should this be "1.3.1"?
30 (commented on others PR)
I see. I think this should be fine as well 👍
31 (commented on own PR)
Good suggestion. But I felt that since the other attributes like showHelp and exit are action words, perhaps "switchTab" might be a better name to accurately represent what CommandResult does? Is there a reason why you think "tab" might be a better name?
32 (commented on own PR)
Great suggestion! I will incorporate a getValue() method as u suggested above as well.
33 (commented on own PR)
Yes, that is a good suggestion! I have incorporated into my new commit.
34 (commented on own PR)
Right. Thanks for pointing it out!
35 (commented on own PR)
Good spot!
36 (commented on own PR)
I believe this is to describe the action that users want to perform. I have updated them to "Add Student, Delete Student and so on". Thank you for pointing it out!
37 (commented on own PR)
Good find! Will merge after resolving!
38 (commented on own PR)
Thanks for spotting the mistakes!
39 (commented on own PR)
Thanks for the suggestion but if the argument is invalid, it throws a CommandException but if argument is empty it throws a ParseException. Hence, this is why I separated them.
40 (commented on own PR)
Good suggestion! Will make the necessary changes 👍
41 (commented on own PR)
Good spot! Forgot to uncomment after editing. Will make the necessary changes!
42 (commented on own PR)
Good spot! Thank you.
43 (commented on own PR)
Nice suggestion! Will do!
44 (other comment)
LGTM. However, would changing
current
tocurrent session
maybe make the command too long for the user to have to type? Maybe the rest of the team could chime in on this as well. @CodingCookieRookie @YuunoKun @MarcusTw
I was thinking about that as well. I am okay with current
if everyone else is okay with it.
@LinkedInk
(29 comments)1 (commented on others PR)
Duplicate
2 (commented on others PR)
Duplicate
3 (commented on others PR)
Debug code left behind
4 (commented on others PR)
Merged from another branch? They should'nt ber here for this PR. This means that the other PR has to be approved first before this. Else might as well have this PR only.
5 (commented on others PR)
Mind the star import command causing checkstyle to fail.
6 (commented on others PR)
Confusing command names. Should change into a "add -r" and "show/list -r" style like how contacts and events are handled to keep consistency.
7 (commented on others PR)
AddContactCommand references should not be here. Please double check if copy pasting has left anything that is not relevant and needs to be changed.
8 (commented on others PR)
What I meant from a previous comment was to split it into command word and command type. Not to modify the command word.
So right now, contact commands have the command type "-c", event commands "-e", and tag commands "-t".
Reminder should have its own type, allowing for a reminder oriented set of commands. Reminder commands can have the command type "-r".
This means that things like the command word "add" can be reused (instead of "remind", and "list" instead of "listr"), combining it with the "-r" command type and it becomes "add -r" to signal an adding of a reminder command. This keeps the overall experiece relatively consistent with the rest of the commands as well.
9 (commented on others PR)
Theses cases are ambigously named (REMIND vs REMINDER) when they clearly mean different things. They are also separated from the show reminder command when they should be grouped under another command type for reminder. Should not belong to events.
10 (commented on others PR)
This is separated from the 2 other reminder commands when they should be grouped under a single command type for reminder. Should not belong to the default branch.
11 (commented on others PR)
Please use the UserPrefs class to get paths as standard. Helps when trying to create test classes as well, making it possible to mirror off other test classes that needs sample files (ie need to change directory/make a fake directory for testing).
12 (commented on others PR)
Not quite sure what this is. A constructor?
13 (commented on others PR)
This class should be part of StorageManager as per addressbook, calendar, userPrefs, tagtree. Initial read should be part of MainApp init() method as show below.
It would be preferable to implement it in a .json file as well for saving and reading so that its standard. However, this is not a big deal as compared to just being a part of StorageManager. A .txt save file is fine as well.
14 (commented on others PR)
If it can't throw, the method should not have a throws keyword. Any other method that uses this are forced to implement catching the exceptions or throwing them again. Which is not the same as "this method cannot throw a CommandException or a ParseException, handling can be ignored".
In the case where command word for show reminder is changed in the enum but not changed here, this method will throw a exception.
Do not follow executeIntroCommand() method above, its not a good implementation. Import enum CommandWord to avoid such incident. Implement catching and processing in case of an error, perhaps displaying an error message saying something like "reminders failed to show" in the resultPanel. Think defensive programming.
15 (commented on others PR)
This is a user guide, and the original line is in a coders language. I think this change makes it easier to understand for a non coder and is a useful change.
16 (commented on others PR)
This is continued in person.
17 (commented on others PR)
Merged because draft. But don't forget about this wrong project name.
18 (commented on others PR)
This implementation would mean that editing a event and then deleting it would result in the same bug as the events are now not equal. Edited events are not updated on the reminder side. Rest looks ok for its intended purpose tho.
19 (commented on others PR)
Might want to consider swapping them around, calendar.removeEvent can throw a event not found exception. By swapping, this would implicitly confirm that event has been found and deleted before deleting reminder of said event.
20 (commented on others PR)
This has been presumably resolved under changes to ModelManager.setEvent
21 (commented on others PR)
Space character needed between words: ContactBy
.
22 (commented on others PR)
Not sure I agree with deletetag
, sounds misleading and conflicting with the delete inside the tag structure. May want to consider changing to deletetagged
, or something that is different.
23 (commented on others PR)
Heavily consider using ParserUtil.parseTag, instead of a custom implementation, so that the proper parse exception can be thrown.
24 (commented on others PR)
Consider using ModelManagerBuilder class instead of invoking the constructor directly.
25 (commented on others PR)
Method name does not correspond with method description and implementation. Valid
=/= Contains
.
26 (commented on others PR)
Consider using ModelManagerBuilder class instead of invoking the constructor directly.
27 (commented on others PR)
This is not used as far as I can see? Maybe this is not necessary anymore?
28 (commented on others PR)
Ive resolved merge conflicts and added the space.
29 (commented on others PR)
This was not changed along with the command word.
30 (commented on own PR)
Removing white spaces at the ends, ie the shaded red parts was a space. It was done in response to a warning in the CI tests. Turns out warnings are ok
31 (commented on own PR)
I dont think this kinda small thing needs to be packaged separatedly like code. Updating earlier is better before it gets forgotten.
32 (commented on own PR)
Right now the event window and contact window are just a basic GUI implementation for testing stuff and getting it to show. I think for 1.2 its enough. UI should be finished up later in the project I think.
33 (commented on own PR)
This is not yet fully implemeted. No duplicate checking exists at the moment.
34 (commented on own PR)
Done
35 (commented on own PR)
Done
36 (commented on own PR)
Grammar edit done
37 (commented on own PR)
Done
38 (commented on own PR)
I just deleted the comment because it falls under all definitions. Its labelled as "/* Prefix definitions */" above.
39 (commented on own PR)
Done-by Sol
40 (commented on own PR)
We mirrored AddressBook class, I've copied over the explanation this time. Explanation:
/*
* The 'unusual' code block below is a non-static initialization block, sometimes used to avoid duplication
* between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
*
* Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication
* among constructors.
*/
41 (commented on own PR)
Done
42 (commented on own PR)
Done
43 (commented on own PR)
I just made a mirror version of it. Should function as expected.
44 (commented on own PR)
Done-by Sol
45 (commented on own PR)
Done-by Sol
46 (commented on own PR)
Done-by Sol
47 (commented on own PR)
Fine Ill make another PR just for this
48 (commented on own PR)
Reverted this
49 (commented on own PR)
This method is for a the AddCommandTest's Model stub, Model interface now has a getCalendarFilePath() method that needs to be implemented for the stub to work for AddCommandTest class. Not implementing this will cause compilation error.
50 (commented on own PR)
My mistake, missed this one, fixed.
51 (commented on own PR)
Fixed, same with the one 2 lines above.
52 (commented on own PR)
Fixed
53 (commented on own PR)
Let me split this method up so that it makes more sense. If there is a DataConversionException, the one that resulted in the error should start empty, not all of them. Right now it means that if there is one DataConversionException, everything starts out empty.
54 (commented on own PR)
Its next line followed by skip 1 line. Example:
info
At: 12-12-1234 12:34(one \n here)
(one \n here)
People attending:
info
55 (commented on own PR)
this has been fixed
56 (commented on own PR)
oh.... ok
57 (commented on own PR)
fixed
58 (commented on own PR)
I'll update with a modulo thing here
Edit: I cant because of 11th -13th, I'm extending the cases now.
59 (commented on own PR)
No particular reason, it just looked nice in GUI I guess. I'll leave a TODO message to maybe shift this out to be included under UserPrefs.
60 (commented on own PR)
This is a formatting error. Most other headings uses a space before hand. AB3's UG contained a mix of space and no space, mostly space. Im converting them to all with space.
61 (commented on own PR)
{@link}
refers to a class and it means u can hover over it and see what it is in Intellij. {@code}
can refer to any parameter or field.
like so:
62 (commented on own PR)
Changed it to This command
63 (commented on own PR)
Did not think that the [field] should be treated as a noun. But it seems like the other parts of the UG do. I've reverted it back to follow other parts if the UG.
64 (commented on own PR)
thanks, fixed.
65 (commented on own PR)
Changed as recommended.
66 (commented on own PR)
Fixed
67 (commented on own PR)
Grammatically both works, Im gonna standardise it to indices.
68 (commented on own PR)
Making it into a proper sentence. No need to risk making a debatable grammar error for no reason.
69 (other comment)
Model should not handle the sortPerson of the addressbook. Should consider moving the function into the excute part of SortCommand and the class in general. Model class has getAddressBook and setAddressBook to help with that.
70 (other comment)
Typo in the latest commit:
Edit class descriptor of DeletEventCommand
Should be:
Edit class descriptor of DeleteEventCommand
71 (other comment)
To be done after hiding of details of events is done.
72 (other comment)
Mind the event person association class that needs to be written.
73 (other comment)
Hi, could you clarify the purpose of
FauxPerson
and why you chose to use it instead of a direct association withPerson
?
This is to simplify the Person
class into something simple but still uniquely identifiable as details of the Person
object being referenced is not important. Hence the displayName
and personhashCode
.
Storing of this class is simplified compared to storing entire copies of persons in calendar.json
which would be needless.
Eventually (logic yet to be implemented), when editing the details of a contact, the logic will just have to compare and update the 2 fields, displayName
and personHashCode
. Cutting out unnecessary logic and processing time.
On the filp side, getting the person details (logic yet to be implmented) means comparing the personhashCode
to retrieve the actual Person
to pull details from.
74 (other comment)
Previous update was minor, "the event" was changed to "event 1" under edit event examples.
75 (other comment)
Currently having the same name means having a duplicate. Could easily modify this to check for same name and time.
76 (other comment)
this is a repost of my comment on the original issue posted by the user
Can you share with me the command you used that resulted in this bug? Given the result message shown, I used "add -e d/lol/ at/12-12-1234 12:34" and it seems to work fine.
77 (other comment)
This was intentional, as part of a calendar design.
Eventually get the time displayed on the panel to say if a certain event has already happened and how many days in the past/future (or if its today) it is.
78 (other comment)
This is now reopened in response to #202
79 (other comment)
Work in progress
80 (other comment)
Do not review, this PR currently still has the old and outdated files.
81 (other comment)
Ignore this. Branching error, commits are not in the correct order for this. New PR created with new branch.
82 (other comment)
Codecov appears to be bugged atm
83 (other comment)
Bug appears to have gone, PR is closed.
84 (other comment)
Reopened as current implementation does not solve this problem completedly. Bug can still be recreated as stated by original comment.
@oliviajohansen
(29 comments)1 (commented on others PR)
same as above
2 (commented on others PR)
maybe don't put 'healthy'? it restricts the types of recipes unnecessarily
3 (commented on others PR)
actually the IngredientParser takes parses all the ingredients at once into an Ingredient arraylist. Maybe need to change the phrasing to something like parses the user input ingredients into Ingredient objects. For example if the command is addR n/salad c/20 instr/blah blah i/apple -200g, banana -2.5 cups then the parameter into IngredientParser will be "apple -200g, banana -2.5 cups" which will be parsed into ArrayList>Ingredient>{new Ingredient("apple", "200g"}, new Ingredient("banana", "2.5 cups")}
4 (commented on others PR)
maybe another con could be other than spelling diff we could say diff ingredient names but similar ingredients in real life eg mozarella and cheese. also another con is if user dont have the basic ingredients in fridge eg salt, pepper, soya sauce, it may not be recommended to user
5 (commented on others PR)
changes or is changed depending on whether we choose present/ past tense
6 (commented on others PR)
another option is adding drawer to glossary
7 (commented on others PR)
Items with … after them can be used more than 1 times.
e.g. [t/TAG]… can be used as t/healthy, t/healthy t/low calories etc.
Not sure why this is not shown here but can change the ',' after t/healthy to 'or' so its clearer? and remove the etc to make it consistent
8 (commented on others PR)
should we specify our jar file name as wishfulShrinking.jar?
9 (commented on others PR)
can remove the eg help since the examples are all already below?
10 (commented on others PR)
The image above is a labeled diagram of each of Wishful Shrinking's components. Below is a brief explanation on each of the components.
Should separate the image title from the second part. (Image title/descr should be in own line)
11 (commented on others PR)
QUANTITY
only accepts alphanumeric characters, forward slashes and full stops.
12 (commented on others PR)
Each INSTRUCTION could be confusing bc there is only 1 instr tag
INSTRUCTION
will take in a series of instruction text and Wishful Shrinking will automatically separate each step of the instruction based on the end of a sentence, indicated by a .
. e.g. instr/Cook pasta. Serve immediately.
13 (commented on others PR)
not sure if necessary to write this "command result box on the right." since the messages in the command result box is true for all commands.
14 (commented on others PR)
place image title/descr before image
15 (commented on others PR)
what do you think abt putting as misc/common commands at the bottom of all the other commands since least impt?
16 (commented on others PR)
Note: The index must be a positive integer e.g. 1, 2, 3......
Move to command format at the top and maybe only have 3 trailing dots
17 (commented on others PR)
add
list
delete
edit
select
close
search
recommend
clear
18 (commented on others PR)
Note: All fields are optional, there can be any number of fields to edit. If no field to edit is specified then it will simply become a get edit command elaborated below. -> can combine with the tip below: Tip: Typing editR INDEX
and then hitting Enter
will insert the information of the recipe at the specified INDEX
in ...
19 (commented on others PR)
this is so well phrased thank you i was having a lot of trouble.
20 (commented on others PR)
Note: Specified fields will permanently override existing values with the new values. To directly modify existing recipe ... link to the tip below: Tip: Typing editR INDEX
and then hitting Enter
will insert the information of the recipe at the specified INDEX
in...
21 (commented on others PR)
recommend
returns the recipe salad
with ingredients lettuce
, onion
and tomato
since the example user has all the ingredients: lettuce
, onion
and tomato
in their fridge.
22 (commented on others PR)
Note: Ingredient quantity is not taken into account when determining if an ingredient is present or absent in your fridge.
23 (commented on others PR)
QUANTITY only accepts alphanumeric characters, forward slashes and full stops.
24 (commented on others PR)
same as above edit
25 (commented on others PR)
can keep the message consistent between addRecipeCommand and editRecipe command? Either 1) "This recipe must contain instruction."; or 2) "This instructions for recipe cannot be empty.";. I suggest 1) since it follows the format of other message constraints
26 (commented on others PR)
isnt this exact if statement already checked in instructionparser? is it redundant? maybe an assert would be better?
27 (commented on others PR)
same inst it checked in instructionparser
28 (commented on others PR)
shouldnt the message of the parseException be like AddRecipeCommand.MESSAGE_EMPTY_INSTRUCTIONS instead of hard coded
29 (commented on others PR)
er this phrasing makes it sound like we did not build the app for office workers instead we simply choose a group of people (eg office workers who target healthy eating) who will need our app. I think the previous phrasing is better to justify our target audience instead of modifying the target audience to suit the benefits of our app
30 (commented on own PR)
Thanks for pointing it out, made the changes
31 (commented on own PR)
ok! thanks
32 (commented on own PR)
ok give me awhile
33 (commented on own PR)
yeah not very sure why. I'll fix the relevant commented out tests in the next iteration.
34 (commented on own PR)
I commented it out because not sure if its relevant. It looks like its testing the model and this command does not modify model instead it modifies CommandResult which has been tested.
35 (commented on own PR)
this is used by the test commented out in the same file so since that is commented out this is also commented out
36 (commented on own PR)
Same I commented it out because not sure if its relevant. It looks like its testing the model and this command does not modify model instead it modifies CommandResult which has been tested.
37 (commented on own PR)
Will do these and more in next iteration.
38 (commented on own PR)
oh yes will change that
39 (commented on own PR)
Good idea ok
40 (commented on own PR)
Wishful Shrinkng- your desktop diet manager. Is this clearer?
41 (commented on own PR)
ok
42 (commented on own PR)
oh ya i'll change
43 (commented on own PR)
wait no i changed back because i think notes can handle the markups bc command format also has markups inside the div
44 (commented on own PR)
you're right ok
45 (commented on own PR)
ok
46 (commented on own PR)
yes just realised
47 (commented on own PR)
no should I check for diff ordering?
48 (commented on own PR)
this test im waiting for jq's stuff which will fix it
49 (commented on own PR)
ok
50 (commented on own PR)
o ya ok
51 (other comment)
Duplicate
52 (other comment)
Wrong file path in UG: change png to jpg
53 (other comment)
Remove busy
54 (other comment)
Check if number in quantity is positive float (fraction or decimal) or integer that is greater than 0 before storing the ingredient
Update UG
55 (other comment)
Leave out get editF in this part and recipe
56 (other comment)
ingredients names should not be case sensitive,
will not allow accumulate, user has to edit the existing ingredient (UG)
57 (other comment)
addressed in another issue
58 (other comment)
specify in ug that search will search for words or names that contain the input keyword (if partial keywords are inputted)
59 (other comment)
If no tags dont put the prefix in the edit command (olivia)
fix instr/. . . . . -> if trim then length is 0 for all instructions return error, if only a few instructions is [space]. then just remove those few (jiaqi)
when addR instr/. . . -> editR instr/ . . (3 full stops to 2 full stops) (jiaqi)
60 (other comment)
When checking for same recipe, instr, recipeimage and tag does not matter
recipeName and ingredient name (ingredient name already in another issue) should not be case sensitive
In recipe, diff order of ingredient should still return the same recipe (backup is ty)
Specify in UG that image, tag, instr does not play a role in isSameRecipe
61 (other comment)
cannot download to the data file (0 bytes). the file will be sometimes corrupted so reliable data fetching should be implemented
62 (other comment)
Specify in UG that value of max 214748......... int cannot be exceeded for calories.
63 (other comment)
Now no feedback at all. Need Clearer error message when space before hyphen is not inputted
64 (other comment)
double check if there are trailing stuff behind the 1 word commands eg help, exit, recipes, fridge, calories, clearF, clearR, clearC, recommend,
65 (other comment)
Defensive programming in addRecipe and addFridge (check ingredientString from parseIngredient is not length 0) (cait)
Update ingredientParser (olivia) check if ingredient is just a bunch of commas
66 (other comment)
No error returned. Addressed in another issue
67 (other comment)
Will not be addressed
68 (other comment)
We will limit command box to 1000 words
69 (other comment)
change / to 'or'
and change image format to table
70 (other comment)
Will specify in UG, to edit the ingredient quantity cannot add another ingredient with same name but have to edit existing ingredient
71 (other comment)
Whatever command you run, the UI will automatically display.
Fallback option: force them to go back to the relevant page eg. recipes to do recipe commands.
72 (other comment)
addressed in another issue
73 (other comment)
addressed in another issue. duplicate ingredient name in fridge will not be permitted
74 (other comment)
recipes with variations only in tag/ instr/ img will be considered the same recipes
75 (other comment)
update ingredient string only for fridge (olivia backup)
76 (other comment)
addressed in another issue
As for the image being in instr, img prefix was not preceded by a space
77 (other comment)
the application should still fail gracefully if a user corrupts the file accidentally: dont save numbering in the data file only add the numbering right before it is displayed on UI
@chunyongg
(28 comments)1 (commented on others PR)
I interpreted step 2 as confirmation message (success message); is this what you intended? To redirect to 2 if there is incorrect input?
(Because the google docs says resume at step 1)
Applies to all the other use cases too
2 (commented on others PR)
Javadocs to be updated {@code Person}
3 (commented on others PR)
Same for this, perhaps this is MESSAGE_DUPLICATE_GROUP?
4 (commented on others PR)
Is this to check whether PREFIX_PATH is present?
5 (commented on others PR)
Should this be removed?
6 (commented on others PR)
Modify javadocs
7 (commented on others PR)
Are you calling Serenity() ? (empty constructor)
8 (commented on others PR)
Empty constructor
9 (commented on others PR)
This feels very similar to equals()
10 (commented on others PR)
This cannot be deleted (their requirements)
11 (commented on others PR)
This too
12 (commented on others PR)
Consider using student.containsStudent(toMakrAtt)
instead of running studentsInfo.get(i)
again
13 (commented on others PR)
Consider using immutable design?
14 (commented on others PR)
Are these comments still needed?
15 (commented on others PR)
Too much spacing here?
16 (commented on others PR)
Is there a reason why this is team.serenity.model.group.lesson.LessonName
and not LessonName
?
Applies to getLessonName()
below too
17 (commented on others PR)
The javadoc here is inaccurate
18 (commented on others PR)
Since equality is already checked in if (questionToEdit.equals(editedQuestion))
, is there a need to check for !questionToEdit.equals(editedQuestion)
?
Likewise for the other 2 if blocks below => Since the questions are already not equal, do we need to check the groupName and lessonName equality?
19 (commented on others PR)
Bold
20 (commented on others PR)
Markup
21 (commented on others PR)
Markup
22 (commented on others PR)
Markup
23 (commented on others PR)
Markup
24 (commented on others PR)
Markup (studentInfo) => StudentInfo
25 (commented on others PR)
Markup => StudentInfo
, HashMap
, GroupLessonKey
, UniqueLessonList
26 (commented on others PR)
Markup
27 (commented on others PR)
Markup
28 (commented on others PR)
Since LESSSON_1_1
is defined, perhaps define a GROUP_G01
as well instead of new GroupName('G01')
?
@MerlinLim
(28 comments)1 (commented on others PR)
Will change accordingly from my side
2 (commented on others PR)
Don't need to modify for now but we'll need to standardize on a specific date pattern for both deliverable and meeting. (Deliverable uses DD-MM-YYYY HH:MM format instead)
3 (commented on others PR)
Likewise, date format to be discussed further
4 (commented on others PR)
Perhaps the code can be reduced by using Optional.orElse("NIL") instead of using the conditional operators
5 (commented on others PR)
Not important now, but it would be good for all of modes to standardize using Optional.ofEmpty.
6 (commented on others PR)
Consider removing 'get' and keeping it as 'isComplete()'
7 (commented on others PR)
Minor detail, perhaps could consider re-arranging the parameters according to the user-input sequence
Person(Role role, Name name....). Not important for now,
8 (commented on others PR)
Add an INVALID_DESCRIPTION_DESC to test against whitespaces
9 (commented on others PR)
Add invalid description test here
10 (commented on others PR)
Was this switched because of the dates?
11 (commented on others PR)
Also note down what happens when user switches mode (e.g list of items are displayed)
12 (commented on others PR)
Consider adding whitespace between words (e.g switch
deliverable
...)
13 (commented on others PR)
Consider using lower caps 'm' to differentiate between minutes and months (e.g DD-MM-YYYY HH:mm
)
14 (commented on others PR)
Sample consideration as in deliverables
15 (commented on others PR)
Consider removing this section if there's no intention of updating Table of Contents for now.
16 (commented on others PR)
The commas in e.g.,
seem to be a typo. I could be missing some markdown formatting.
17 (commented on others PR)
Same* consideration
18 (commented on others PR)
Meant to be view or delete?
19 (commented on others PR)
change variable persons to contacts
20 (commented on others PR)
ordering of fields is different from add command
21 (commented on others PR)
Include optional plural for contacts in line 272
22 (commented on others PR)
Remove additional white space at the end
23 (commented on others PR)
missing period for constriants
24 (commented on others PR)
Missing period
25 (commented on others PR)
I understand its wrong but, would it be better for the method to be called getInternalPersonList() instead? since the other methods are setPerson and file is called UniquePersonList.
26 (commented on others PR)
Rename method to execute_emptyDeliverableBook_faill(), since it is a negative test case
27 (commented on others PR)
Method should coordinate with method in UniquePersonList.java
28 (commented on others PR)
Same comment on naming convention for negative test cases
29 (commented on own PR)
I did attempt to place the EPIC within each section, but github markdown does not allow you to create merged cells. So the sentence is wrapped within the a small single cell. I would suggest, if we want to include the epics, to create a separate table and reference the [EPICS] accordingly.
30 (commented on own PR)
Yes, it seems I was careless and glossed over that section. Will include, thank you for pointing out!
31 (commented on own PR)
Noted, will remove accordingly
32 (commented on own PR)
@shadowezz is correct. It would be easier to generate the valueString when instantiating. Anyways the value is final so the valueString doesn't change
33 (commented on own PR)
Maybe add a TODO comment
34 (commented on own PR)
nope it will throw false, MEETING_A has a time of 14:00.
35 (commented on own PR)
yeah it is abit weird but im not sure what else to leave it as. Its not wrong tho
36 (commented on own PR)
I feel like its alright, actually if i wanted to really include I should be including that condition for "add t/deliverable..." instead
37 (commented on own PR)
will ammend
38 (other comment)
Ignore duplicate issue.
39 (other comment)
Tutorial Completed
40 (other comment)
Tutorial Completed, not for merging.
41 (other comment)
Tutorial Completed, not for merging.
42 (other comment)
Tutorial Completed, not for merging.
43 (other comment)
Tutorial Completed, not for merging.
44 (other comment)
This behavior is expected.
As specified in the command, the parameters must be a positive integer. An Invalid index will only be thrown when the positive integer does not fall within the list of contacts.
45 (other comment)
Resolved in #183
46 (other comment)
Resolved in #186
@Ma-Yueran
(28 comments)1 (commented on others PR)
Should there be 2 br ?
2 (commented on others PR)
I think between other points it's 1 br, but not a big problem
3 (commented on others PR)
2 small errors due to refactor
4 (commented on others PR)
An error due to refactor
5 (commented on others PR)
Should this file change? I'm not sure
6 (commented on others PR)
I think UserGuide should not be changed
7 (commented on others PR)
A small error due to refactor
8 (commented on others PR)
A small error due to refactor
9 (commented on others PR)
yeah I agree
10 (commented on others PR)
Seems that this test also need to be changed in the future. But I think maybe this does not matter now.
11 (commented on others PR)
Is the ModelManager here a stub? If it's not, I'm not sure if it is ok.
12 (commented on others PR)
Maybe the AddressBook should be renamed to HelloFile? But I think it can be done later.
13 (commented on others PR)
I'm not sure, but there were some errors when I tried to specify a type.
14 (commented on others PR)
I will try to fix that
15 (commented on others PR)
Is it necessary to mention FindCommand here? Since there are many other commands that also use tag.
16 (commented on others PR)
I think " Label allows 'Tag' to keep a 'Label' " might sounds a bit weird. But it's only personal opinion.
17 (commented on others PR)
Is it better to say "All of these labels can't be found"?
18 (commented on others PR)
Why is empty labels executed successfully? I thought empty labels will not be accepted by the parser.
19 (commented on others PR)
Ooo, ok, I think it's fine to keep it
20 (commented on others PR)
I think this should probably be "allows"
21 (commented on others PR)
Maybe should be the "keys".
22 (commented on others PR)
affects
23 (commented on others PR)
some classes
24 (commented on others PR)
features
25 (commented on others PR)
features
26 (commented on others PR)
Maybe should add s to the verbs?
27 (commented on others PR)
I think "HelloFile shows nothing" is probably more suitable here?
28 (commented on others PR)
maybe change input to enters?
29 (commented on own PR)
I think I put them in a wrong place while modifying, did not notice that
30 (commented on own PR)
I updated the PR to move them under the "independent Ui part" comment. Thank you for pointing that out.
31 (commented on own PR)
Oh, yeah, thank you for pointing that out
32 (commented on own PR)
Ok, I will change that, thank you for reviewing the code!
33 (commented on own PR)
Oh, yeah, forgot to delete that
34 (commented on own PR)
I think the error here is just for UI to react to, like for AB3, when a command is wrong, it makes the text red. But currently I think there is no need to do that, so I think it's fine to do nothing here
35 (commented on own PR)
This is the try and catch for the old AB3 command box, I commented it out, since we are not changing the color for command failure, so, currently it's also doing nothing
36 (commented on own PR)
emmm, ya, I agree it's not very good to use “ ” directly, but I think it's quite simple to use that here.
37 (commented on own PR)
The help2 image I added is cd, so I changed it to cd
38 (commented on own PR)
emmm, just found did not change the help tag to help cd
39 (commented on own PR)
thank you for pointing that out
40 (other comment)
I think the new ui is working fine, if there are bugs, can still switch back to the old one
41 (other comment)
I am thinking about making the Ui show the details of a tag when a tag box is clicked, then there is no need to scale. Is that ok?
42 (other comment)
Besides that I think I will also try to make the list scalable horizontally, I think that's a good suggestion.
43 (other comment)
I think that's because UI can only handlle CommandException and ParseException, so the command need to throw one of them instead of the InvocationTargetException
44 (other comment)
cs2103 is accepted as a tagName, but there is one tag named cs2103 already
45 (other comment)
Looks good. Is it possible to have a toggle for this theme?
You mean something to switch to different themes?
46 (other comment)
Fixed by #92
47 (other comment)
The PR update modifies the Version variable in MainApp in fit the current milestone, and display that version number in UI.
48 (other comment)
Ok, working on it now
49 (other comment)
Update PR to support UI theme switching.
50 (other comment)
Update PR to add a new Theme, also replace AB3 icon with new icon.
51 (other comment)
Thanks
Great job on CSS. Looks real good.
52 (other comment)
Also delete UI old classes that are no longer used.
53 (other comment)
Good documentation. LGTM.
Thanks, let me merge it now
54 (other comment)
Add descriptions to CdCommand and Internal File Explorer.
55 (other comment)
Also delete Galaxy Theme which is currently buggy.
56 (other comment)
LGTM! Have you tested the minimum window size? How does it look?
I tested a bit, at the minimum size, the window doesn't look good, but I think maybe shouldn't make the minimum size too big.
57 (other comment)
Looks good. The words in galaxy theme is a bit hard to read though.
Another thing, could you update the UG as well?
Sure, I try to add theme switching to UG
58 (other comment)
Looks good. The words in galaxy theme is a bit hard to read though.
Another thing, could you update the UG as well?
Sure, I try to add theme switching to UG
Ooo, just found it's already added, then I will update the images.
59 (other comment)
Looks good. The words in galaxy theme is a bit hard to read though.
Another thing, could you update the UG as well?
Sure, I try to add theme switching to UG
Ooo, just found it's already added, then I will update the images.
The
changing theme
section is not updated to reflect your changes. Could you also update the screenshot if possible?
Changing themes
HelloFile comes in light and dark themes. ...
Sure, I'm doing that now
60 (other comment)
The color of the edge of the window for me is white,
But others are blue,
How do I modify the color to make it consistent?
61 (other comment)
Galaxy Theme is updated to make fonts clearer,
62 (other comment)
Update command summary
Separate examples from format
@leeweiminsg
(28 comments)1 (commented on others PR)
Should be INDEX_FIRST_PERSON instead: it's testing the original AB3 edit command
2 (commented on others PR)
Already present in exercise package
3 (commented on others PR)
Already present in exercise package
4 (commented on others PR)
Unused
5 (commented on others PR)
Should be INDEX_X_PERSON instead of INDEX_X_EXERCISE, because context is AB3
6 (commented on others PR)
Should be INDEX_X_PERSON instead of INDEX_X_EXERCISE, because context is AB3
7 (commented on others PR)
Present in exercise
8 (commented on others PR)
Present in exercise
9 (commented on others PR)
Present in exercise
10 (commented on others PR)
Present in exercise
11 (commented on others PR)
Present in exercise
12 (commented on others PR)
Present in exercise
13 (commented on others PR)
should be exercise book
14 (commented on others PR)
Should be exerciseCard
15 (commented on others PR)
Should be ExerciseListPanel instead of PersonListPanel
16 (commented on others PR)
should be exerciseListPanelPlaceholder
17 (commented on others PR)
I think we can work on these now - see issue #37
18 (commented on others PR)
should be model.exercise.Name
19 (commented on others PR)
Better to use variables instead of hardcoding
Eg. from AB3:
assertParseFailure(parser, "1 some random string", MESSAGE_INVALID_FORMAT);
20 (commented on others PR)
Maybe another name?
Eg. ExerciseStorageClassDiagram
21 (commented on others PR)
maybe better command word? Since temp can mean temporary
22 (commented on others PR)
Naming with CreateTemplateCommand is similar
23 (commented on others PR)
commented out
24 (commented on others PR)
createtemplate vs addtemplate: same idea, different naming? Better to use one
25 (commented on others PR)
TheMostRecentDatePredicateForExercise but checking for exact match
26 (commented on others PR)
throw exception? If return false hard to debug
27 (commented on others PR)
assert may not run in production
28 (commented on others PR)
does not remove previous total calories for the day (if entry already exists)
29 (other comment)
Hi Prof Damith, it has been updated. Please let us know if there are any further issues.
30 (other comment)
Tested locally, all test cases pass
31 (other comment)
Tested locally, all test cases pass
32 (other comment)
Merge conflicts to resolve
33 (other comment)
Merge conflicts
34 (other comment)
All test cases passed (on local)
35 (other comment)
Great job
36 (other comment)
Great job
37 (other comment)
Works
38 (other comment)
exception thrown when storageManager.readExerciseBook() is called
39 (other comment)
Solved
40 (other comment)
Tested locally, template needs to account for muscle, tag and optional date
41 (other comment)
Added default calories of 0 when missing
42 (other comment)
Please resolve merge conflicts
43 (other comment)
Thanks for pointing it out, it's just an example.
@itssodium
(28 comments)1 (commented on others PR)
If I'm not wrong the textbook didn't have these white spaces.
2 (commented on others PR)
Same problem as above.
3 (commented on others PR)
Can delete white space, seems unnecessary.
4 (commented on others PR)
Delete this line, I think its from a merge conflict.
5 (commented on others PR)
Delete this single white space.
6 (commented on others PR)
Good that you have a separate class for Description, instead of a String.
7 (commented on others PR)
Good that you have a Predicate class
8 (commented on others PR)
Maybe, abstract away details, for better readability.
9 (commented on others PR)
Can you just combine the two methods, seems like not much of a difference.
10 (commented on others PR)
Abstract away to reduce complicated expressions
11 (commented on others PR)
Do you want to have this as a separate constructor instead. So you would have Room(int roomNumber, Patient patient) and Room(int roomNumber, Patient patient, TaskList taskList).
12 (commented on others PR)
Good for changing the toString method accordingly.
13 (commented on others PR)
Good for changing the equals method.
14 (commented on others PR)
We rearrange later in alphabetical order
15 (commented on others PR)
Can rename it into parseCommand_deletePatient_success() instead?
16 (commented on others PR)
Same here?
17 (commented on others PR)
Use the model.displayAllRoom() for the time being. This part is in code quality and to be done in v1.3.
18 (commented on others PR)
This will result in some problem of some Room UI, leave it as logic.getDisplayRoomList().
19 (commented on others PR)
Instead use, model.displayFindRoom(room); where room is the room you wish to display. This is to prevent other workings of UI to not work.
20 (commented on others PR)
Not necessary would affect UI for Room command and test cases.
21 (commented on others PR)
"There are no rooms in the app yet, please define the # of rooms using initRooms (int) command."
Maybe can change to the above?
22 (commented on others PR)
May be it is better to create a Name field?
23 (commented on others PR)
To be done later.
24 (commented on others PR)
Maybe can include the predicate in a different method like:
private Predicate>Room> getPredicateForSearchRoom(int roomNumberExpected) {
Predicate>Room> predicateForSearchRoom = room1 -> room1.getRoomNumber() == roomNumberExpected;
return predicateForSearchRoom;
}
That is wat I meant.
25 (commented on others PR)
Now that it has been finalised, maybe you want to implement it?
26 (commented on others PR)
Maybe want to change to TaskParserUtil instead of ParseUtil.
27 (commented on others PR)
Maybe can include space between method and javaDoc to see better
28 (commented on others PR)
Good to leave empty space for readability.
29 (commented on own PR)
Okay I will change accordingly!
30 (commented on own PR)
Hi, yes that's why I thought a PriorityQueue would lead to an easier implementation as we can determine its priority in the Room class and we don't have to individually compare details. If you really want an arraylist I can change it though.
31 (commented on own PR)
It is to add the number of rooms into the hotel
32 (commented on own PR)
It is to check for the empty room with the least ID number. So the first room, is the least number that is not occupied.
33 (commented on own PR)
Or if it is occupied then every room is occupied.
34 (commented on own PR)
I thought of that, but why would anyone want to input a negative number?
35 (commented on own PR)
Yes, it is for future person assigned to this task to complete it.
36 (commented on own PR)
but it passed checkstyle
37 (commented on own PR)
I just followed the name of files given above.
38 (commented on own PR)
Okay
39 (commented on own PR)
I dont get your problem here.
40 (commented on own PR)
It wont because 1 and 3 are stored in the hard disk
41 (commented on own PR)
I think you are confused because they are methods in different classes, just like the original code.
42 (commented on own PR)
yeap, im not responsible for tasks and adding person
43 (commented on own PR)
okay sure ill add it
44 (commented on own PR)
I thought AddRoom would be better suited for adding person to room.
45 (commented on own PR)
Same reason stated above.
46 (commented on own PR)
I'll change it if you want.
47 (commented on own PR)
I removed that field.
48 (commented on own PR)
okay
49 (commented on own PR)
Can you clarify?
50 (commented on own PR)
Actually I no longer have this.
51 (commented on own PR)
I see a lot of you have a lot of questions on PQ. I just thought that the comparison would be simpler as the priority is maintained by the PQ, and all we have to do is to poll and we dont have to compare a lot of variables so fewer bugs.
52 (commented on own PR)
Yes
53 (commented on own PR)
Okay, will add!
54 (commented on own PR)
Okay
55 (commented on own PR)
Okay
56 (commented on own PR)
I need it for the Json.
57 (commented on own PR)
Okay will do!
58 (commented on own PR)
Okay
59 (commented on own PR)
That was wat I was wondering too, but didn't want to delete before discussing.
60 (commented on own PR)
Okay!
61 (commented on own PR)
Okay I will change it.
62 (commented on own PR)
Okay.
63 (commented on own PR)
Okay
64 (commented on own PR)
Okay will add, thanks for pointing out.
65 (commented on own PR)
Okay
66 (commented on own PR)
Okay, thanks for noticing.
67 (commented on own PR)
Accidentally deleted.
68 (commented on own PR)
Okay
69 (commented on own PR)
Okay!
70 (commented on own PR)
Okay
71 (commented on own PR)
okay
72 (commented on own PR)
Same function?
73 (commented on own PR)
Okay
74 (commented on own PR)
A little weird to be RoomRecords since it is a list of rooms
75 (commented on own PR)
yes, good point.
76 (commented on own PR)
Okay.
77 (commented on own PR)
Okay thanks
78 (commented on own PR)
Okay thanks.
79 (commented on own PR)
Alright.
80 (commented on own PR)
Typo, sorry.
81 (other comment)
Please don't merge even if there are 2 approvals. Thank you!
82 (other comment)
Even if u delete room, it would change the room number or it would lead to rooms to disappear in abruptly. Adding of rooms can be done using initrooms as well. Adding too many commands confuses the user. Therefore, I am closing this issue.
@keanecjy
(28 comments)1 (commented on others PR)
And @seanjyjy I think you are missing this statement header.
InternHunter allows the management of three data types:
2 (commented on others PR)
I don't think there should be a guarantee here that the system stops running since extension at 2a implies that use case ends when user decides to cancel the confirmation
3 (commented on others PR)
I think ProfileItem here would suffice instead of the import
4 (commented on others PR)
I don't see the need for this class as it is the same as the Name class, we could just pass in the messageConstraints to signify a different error message if need to.
5 (commented on others PR)
Perhaps an accidental double lines here?
6 (commented on others PR)
Yes, we would need to pass in the messageConstraints variable to the parent Name class. Yes I think the code is good enough to merge!
7 (commented on others PR)
I was thinking for descriptors - equivalent of the skills in internship should just be a non-empty string! Because I don't think there are any wrong formats that we should disallow them from inputting?
8 (commented on others PR)
I think it would be better to put in C# instead of C sharp? Since its easier to put in. Not sure about the char limit though, since some companies may have very long names?
9 (commented on others PR)
Perhaps we can include a check for when the user is already currently viewing this current item and display a MESSAGE_ALREADY_VIEWING
message?
10 (commented on others PR)
I think that it might be better if we initialize the variables in the if-else block, so that it is clearer which block will have what booleans. And also this will stick to the notion of defining the variables in the least possible scope!
11 (commented on others PR)
I think the current code is better. Also, why is there checks for tabName in this command? Since all the other commands automatically switches to the correct tab, even if it is already on the right tab
12 (commented on others PR)
Oh what I meant was initializing the value in the if-else block and not declaring it there. So an example of this is:
13 (commented on others PR)
Oh okay thanks for the clarification!
14 (commented on others PR)
Don't think so, since he did mention that this is just a guide and I remembered there was an example which he said would be ok?
15 (commented on others PR)
I think requireAllNonNull would be better here
16 (commented on others PR)
Same here, I think requireAllNonNull would be better
17 (commented on others PR)
I think this command should be shifted to the GeneralParserUtil class, since it is being used in many of the command parsers
18 (commented on others PR)
If you are putting the message into the checkCommandDetails already, we can just throw the exception with the correct message? There's no need to do the switch case inside that method anymore.
19 (commented on others PR)
In reference to my earlier post, what is the point of the switch statement if all of them are fallthroughs?
20 (commented on others PR)
Since many of our commands require the parseIndex
to throw a specific message, we could pass in the specific error message in the parseIndex
function. And to fix this issue you pointed out, perhaps we could create individual parsers for each of the commands, so that they can throw their own specific error message.
21 (commented on others PR)
I think it could be better to specify a note saying that the details of the application made for this internship will also be updated accordingly.
22 (commented on others PR)
The name of the card should be the job title instead of the company name?
23 (commented on others PR)
So the line 1 should be company name instead of job title
24 (commented on others PR)
Why aren't the application use cases refactored? Aren't they the same as company for delete, edit and view?
25 (commented on others PR)
Numbering issue, there are 2 UC17
26 (commented on others PR)
Remaining numbers seem to not be updated?
27 (commented on others PR)
I think we are still missing the pictures for delete and list right? Probably should put them in first before numbering the figures?
28 (commented on others PR)
I think the figure number and description should be italicized since it is a side information?
29 (commented on own PR)
The job list in the company has the name of the job, so I don't think this will be an issue.
30 (commented on own PR)
Good catch, updated it already. Thanks
31 (commented on own PR)
Yes, I did thought of this while I was writing the code for this Job class. Yes, I think that we may need need a Job object and it can be represented as a String
instead. Will edit the code accordingly. Great catch on this!
32 (commented on own PR)
Yes haha, I had a good laugh earlier when I represented wage as a Phone object. Reason I did so was to use AB3's current implementation of the Name
object (which is basically a class with a string containing only AlphaNumeric characters) and Phone
object (which is essentially a class with a string containing only Numeric characters). I think that we can rename it in the near future and make use of them in all our classes. What do you think?
33 (commented on own PR)
Yup, I think its best if we could ensure that the "Job" and "Internship" names are not used loosely throughout the code base. I don't particularly like the idea of a nested class, since I do intend to use the enum outside of this Status class (for parsing and input). Also, would it better to rename the Status
class as ApplicationStatus
and the enum to be called Status
instead?
34 (commented on own PR)
Kind of, the date will be used on the main display as well as on the right pane:
35 (commented on own PR)
@ZoroarkDarkrai @orzymandias @seanjyjy What is the team's opinion on this?
36 (commented on own PR)
@seanjyjy @ZoroarkDarkrai @orzymandias Does anyone have any good suggestions? I'm leaning onto Status
composing ApplicationStatus
and Date
atm.
37 (commented on own PR)
Thanks for the input. I created a Status class to abstract out the application status and date details from the internship. But perhaps now that I think about it simply renaming the fields to InternshipStatus
and StatusDate
would do. Let me know if this arrangement is fine.
38 (commented on own PR)
Yes, thanks for pointing out this error
39 (commented on own PR)
Yup made the change
40 (commented on own PR)
Yes, thanks for noticing.
41 (commented on own PR)
Okay, updated for consistency
42 (commented on own PR)
Yes, I agree that tabs actually make more sense in this context. Will update for all use cases
43 (commented on own PR)
Right now we are only allowing one application for an internship. So perhaps your suggestion may be quite misleading too.
I have updated to:
The application (if any) made with this internship will also be deleted.
Hopefully its clearer this way!
44 (commented on own PR)
Right now it is safe, since i think only @seanjyjy and I are using it. Thanks for the catch though, I will add an assertion there in case someone else happens to use it on a string with length >=1
45 (commented on own PR)
Yes will update
46 (commented on own PR)
Yes, I agree with @seanjyjy on this. Since this is something within the programmer's control.
47 (commented on own PR)
deepDelete uses the isSameItem
method defined in the abstract Item class, which compares 2 items based on the weaker notion of equality, which I defined it to be comparing only the internship item. Hence why I created the deepDelete method! I will change the method name to deleteSameItem
, hopefully its clearer that way.
48 (commented on own PR)
Edited the names of the classes and methods and javadocs for increased clarity, do help to check before merging!
49 (commented on own PR)
Not sure what is the group's consensus on this, so I took the easier path first which is to switch tabs after successful command. Could it be because the command is executed unsuccessfully? Because this should be correct since I took this from @seanjyjy switch tab command.
50 (commented on own PR)
I think we could just set the default value for isSwitchTab in the constructor to be true then?
51 (commented on own PR)
Good catch, missed this completely
52 (commented on own PR)
I think it really depends on what context is it being used in. There seems to be an almost equal amount of Creates and Constructs used in our code atm.
53 (commented on own PR)
Yup, fixed in my latest merge.
54 (commented on own PR)
Fixed
55 (commented on own PR)
Fixed in my latest commit.
56 (commented on own PR)
Did you misread?
Quoting the textbook:
Cohesion is a measure of how strongly-related and focused the various responsibilities of a component are.
57 (commented on own PR)
There's no coupling word used here?
58 (commented on own PR)
It can be, if there is a subclass of this class with a public constructor. But anyway I'm changing the code structure so will remove this file.
59 (commented on own PR)
Yes. Will update.
60 (commented on own PR)
Right, think i forgot to remove the whitespaces
61 (commented on own PR)
Good idea. Will update.
62 (commented on own PR)
Thanks, fixed
63 (commented on own PR)
yup changed
64 (commented on own PR)
Okay, will update
65 (commented on own PR)
Thanks, been finding a way to make this clearer
66 (commented on own PR)
Okay will update
67 (other comment)
LGTM
68 (other comment)
Yup I think that there isn't a need to concern about javadocs / comments as of now as they can be easily fixed at any point in time. @orzymandias I stopped editing the List portions as I noticed that there were too much code duplication with your pr. Do we plan to either extend an Item
class or use generics for our list?
69 (other comment)
ecessary duplication for collections, generics is a good idea for collections but one issue is with throwing custom exceptions for different types of items within the generic list. Should we just have DuplicateItemException then something like
throw new DuplicateItemException(T.getDuplicateExceptionMsg())
?
I don't think this works because we are not able to access methods in java generics. I figured since we all are classifying our classes as Item
, we can have an Item
interface to contain all the methods similar methods like isSameItem
and likewise do throw new DuplicateItemException(item.getItemName())
?
70 (other comment)
Sure, I think this is a solid idea.
71 (other comment)
I think it's okay just I find many hard coded strings can be converted to const. If urgent can merge now and fix later?
Is it not normal to use hard-coded strings for test cases? Could you point on where exactly is the issue? Thanks
72 (other comment)
I think it's okay just I find many hard coded strings can be converted to const. If urgent can merge now and fix later?
Is it not normal to use hard-coded strings for test cases? Could you point on where exactly is the issue? Thanks
I mean the toString, equality, hashcode tests. Could use VALID_WAGE, VALID_PERIOD, etc? If it's a better practice to use "Sunday", "React Native", etc. it's fine then.
Not too sure what's the correct which is the correct way, but I just thought that doing it this way by writing 2 strings that are different objects would be better since we will be comparing periods with different strings in the actual implementation too
73 (other comment)
I don't think you should be writing tests for ApplicationItem, Status, and StatusDate? Since we should be writing tests for our own classes and not helping others write their tests
74 (other comment)
I don't think you should be writing tests for ApplicationItem, Status, and StatusDate? Since we should be writing tests for our own classes and not helping others write their tests
Oh, I think I misunderstood then. When I said I couldn't do the storage ones then because lack of sample data, I think someone said I should do the application ones. So, do you want me to remove them?
Oh what I meant was create sample data for the storage tests and not to test the application classes themselves. So the rest of the files can stay except for ApplicationItemTest
, StatusTest
and StatusDateTest
. Hope this clarifies!
75 (other comment)
LGTM.
76 (other comment)
Generalize commands to use XCommand and YCommand instead
77 (other comment)
LGTM!, just a question why the difference between application and internship tests?
Oh, this is because the internship are shown on the right panel, so it requires a double indexing to delete them.
78 (other comment)
I just realised, but just for plausible consideration, should we add-in extension for deleting companies that indicate internships being deleted as well as its application.
Good point! Not sure how to appropriately frame it and if it should even be an extension of company or part of internship/application. @shawn-nyk @keanecjy What do you guys think?
I think we can just put it in the MSS, something like deletes the company and associating internships and applications along with it. This way means we will have more unique cases so it doesn't feel so repetitive too
79 (other comment)
I just realised, but just for plausible consideration, should we add-in extension for deleting companies that indicate internships being deleted as well as its application.
Good point! Not sure how to appropriately frame it and if it should even be an extension of company or part of internship/application. @shawn-nyk @keanecjy What do you guys think?
I think we can just put it in the MSS, something like deletes the company and associating internships and applications along with it. This way means we will have more unique cases so it doesn't feel so repetitive too
But doing this you cannot use the reuse the UC for the other item types?
Yup i think we can just reuse the extension portion will do.
80 (other comment)
Btw,
We no longer have the prompting for user to switch tabs anymore since it is automatic
81 (other comment)
There are issues with the formatting in your new code for each of the note and tip
These show up okay for the html file because they are not markdown format!
82 (other comment)
there seems to be no new LogicClassDiagram.png or DeleteSequenceSequenceDiagram.png?
Yes, I am in the midst of updating them.
@raymondge
(27 comments)1 (commented on others PR)
Maybe Priority Queue for room search should leave it for further version? We could use a arraylist to found the first empty room probably? B'coz priority may need constant update to R/W whenever a room state is changed
2 (commented on others PR)
I think "next" could be a little vague, coz the user may not know which room they are in, maybe "finds the first free room" could be better?
3 (commented on others PR)
just minor gramma, "rooms"
4 (commented on others PR)
good code quality improvement!
5 (commented on others PR)
I am not so sure why there's a "-", so is it that the user will specifically put an "-" or is it an invalid input
6 (commented on others PR)
I think this method should be changed with a name getValidpatient and should return a patient as the name suggests. isValidPatient is like a boolean method and should only return a boolean
7 (commented on others PR)
Mabybe using a switch could be better for readability?
8 (commented on others PR)
Nice to have an observablelist for getroom
9 (commented on others PR)
maybe can change to: "there are no room in the app yet, please define no of rooms"
10 (commented on others PR)
really nice to change to 4.0 --> 3.10
11 (commented on others PR)
I think it's a bit unclear about the change of room number, is it that room 3 doesn't exist before change or room 3 already exist and we move all patient from room 1 to room 3 and now room 3 has all patient from room 1(previously) and 3?
12 (commented on others PR)
I think it's better to break the sentence After the fullstop
13 (commented on others PR)
Just small gramma "AssignedToRoom"
14 (commented on others PR)
This sounds a bit weird to me. Maybe change it to "All patients are listed" or " list all patients"
15 (commented on others PR)
I think later when you complete the searchroom rmb to remove the "%1$s" as it's a list of string
16 (commented on others PR)
Good change to modifiableRoomList as a diff to unmodifaibalbeRoomList
17 (commented on others PR)
good assertion! If the targetroom is null, it will be prehandled by the commandexception
18 (commented on others PR)
I think instead of letting the model to handle deleteTask, the deletetaskcommand class should handle it instead for abstraction
19 (commented on others PR)
Maybe add a success case for test?
20 (commented on others PR)
oh then that's ok I guess
21 (commented on others PR)
hmm I think the same patient object should still have the same temperature
22 (commented on others PR)
Nice job to separate to more cases!
23 (commented on others PR)
remember to remove the system.out.print after doing the "actual" testing
24 (commented on others PR)
Maybe consider "returns" instead of "gets" for javadoc consistency?
25 (commented on others PR)
Nice use of logger!
26 (commented on others PR)
maximum number...is 5000, just small gramma
27 (commented on others PR)
maybe you want to change the word "inserted"?
28 (commented on own PR)
yup! SearchPatientDescriptor is a better name
29 (commented on own PR)
will focus on the style!
30 (commented on own PR)
yup, can isolate it to be another method
31 (commented on own PR)
yup, can change to "search a patient or a list of patient ..."
32 (commented on own PR)
sure
33 (commented on own PR)
sure!
34 (commented on own PR)
This is really a good idea! Thanks for bringing it up
35 (commented on own PR)
YUP!
36 (commented on own PR)
Hmm.. I feel both method name is ok
37 (commented on own PR)
Definitely true
38 (commented on own PR)
I will change it to "Search a patient or a list of patients with specific criteria"
39 (commented on own PR)
sure!
40 (commented on own PR)
good sugguestion!
41 (commented on own PR)
The main reason I put this is just because I feel that it is not necessary to output a list when there is only one item
42 (commented on own PR)
Yup! Thanks for the advice!
43 (commented on own PR)
the substring(2) is to substract away the header ("n/")
44 (commented on own PR)
I think getPreamble will work just fine!
45 (commented on own PR)
actually I think getPreamble cannot work since the command is searchpatient n/alex, so there isn't a preamble for the command for now
46 (commented on own PR)
Sure!
47 (commented on own PR)
Yup, will take note of the gramma
48 (commented on own PR)
I think as of now, we will save the UI for v1.3 for task, so v1.2 we will juz display the result in the bot's response
49 (commented on own PR)
I will add more success test case in v1.3
50 (commented on own PR)
yup
51 (commented on own PR)
I am not sure whether we need to leave a line also, but thanks for the "s" reminder!
52 (commented on own PR)
Sure!
53 (commented on own PR)
thx for noticing! I forgot to remove
54 (other comment)
The new feature is too rush to implement.
55 (other comment)
It was a mistake in the UG actually, so it should take a subname instead of a substring.
56 (other comment)
It's now taking the last parameter
57 (other comment)
It was a mistake in the UG actually, so it should take a subname instead of a substring.
58 (other comment)
It was due to one of the task not having a duedate, now is fixed
59 (other comment)
It was due to one of the task not having a duedate, now is fixed
60 (other comment)
It was due to one of the task not having a duedate, now is fixed
61 (other comment)
It was due to one of the task not having a duedate, now is fixed
@hyngkng
(27 comments)1 (commented on others PR)
I think Motivation is good as it is relatable to our readers.
However, I'm not too sure if Aim is easy to understand with the two given equations. Perhaps use sentences instead?
2 (commented on others PR)
I think instead of writing in a point form, it could be written in full sentences. The language used here also feels informal and incomplete.
Some examples could be:
More convenient than typical apps as lessons and assignments are managed in just one app so there is no need to switch between different ones.
Easier to manage schedule than typical scheduling apps as assignments are automatically scheduled.
3 (commented on others PR)
I think we should not say that ProductiveNUS is a simulation of an ongoing project. That description suits AB3 more. I think just calling it a project is good! 😃
4 (commented on others PR)
I like the aim. Clear and concise
5 (commented on others PR)
Hahaha good job finding this while debugging
6 (commented on others PR)
I think this is a good improvement from Minh's initial version. It is clearer and more straightforward.
7 (commented on others PR)
I think the order of the commands looks good.
8 (commented on others PR)
I think just keep it as an abstract class will do.
9 (commented on others PR)
Good assertion.
10 (commented on others PR)
Good test cases. They cover every case I can think of, so good job.
11 (commented on others PR)
You forgot to change the description for this.
12 (commented on others PR)
Should these variables be final instead?
13 (commented on others PR)
I think the phrasing here is a little confusing. Could either mean assignments due at 1200 on the two dates, 24 Oct and 25 Oct, or it could mean all assignments due on 24 Oct and 25 Oct, and all assignments due at 1200 regardless of date. But maybe it's just me 😛 Just nitpicking
14 (commented on others PR)
What if the user types in 90-90-9090?
15 (commented on others PR)
Likewise for this, the user can input 2500 for example
16 (commented on others PR)
Slight nitpick, why not change from "or" to "and/or" to specify you can use multiple keywords!
17 (commented on others PR)
Does this mean using this specific command will show for example: 1. Assignment 1 d/24-10-2020 2359 and 2. Assignment 2 d/30-12-2020 1200? Just clarifying!
18 (commented on others PR)
I think good to include both examples, one to show can just delete one, the other to show can delete multiple
19 (commented on others PR)
I think should follow the naming convention and call this indexComparator, but just minor nitpicking
20 (commented on others PR)
Do you think it's better to remove the "Before moving on to the ..." and go straight to "You can familiarise yourself ..."? The first part seems a little redundant to me. Unless you want to prevent users from "skipping ahead" of the user guide 😃
21 (commented on others PR)
Also, remember to change to "familiarise"
22 (commented on others PR)
I think we can omit the multiplied by 24 hours information as the users do not need to know. Just telling them the input number refers to the number of days should suffice 😃
23 (commented on others PR)
Okay, this might be redundant but perhaps adding "lists all your assignments" and "lists all your upcoming assignments in the coming week" or something similar might be a nice touch!
24 (commented on others PR)
Is this supposed to be 📋 - pointers to note instead? Or if this is intended then we should add this to the icon table as well 😃
25 (commented on others PR)
Not sure if changing this to protected would violate anything. Is it possible to implement the priority in addCommand without changing this access modifier?
26 (commented on others PR)
I think there is a black outline for this photo. Minor nitpick but could perhaps crop it out 😃
27 (commented on others PR)
I noticed the other images are like this as well. Minor issue though, we can fix it in the future!
28 (commented on own PR)
Have edited accordingly. Thanks.
29 (commented on own PR)
Edited accordingly. Thank you.
30 (commented on own PR)
I removed these tests because Assignment already tests Name. 😃 Thanks!
31 (commented on own PR)
Amended. Changed to Task instead. 😃
32 (commented on own PR)
Amended!
33 (commented on own PR)
Amended!
34 (commented on own PR)
I was thinking more of like how to "combine" assignments.hasCode() and lessons.hashCode() together
35 (commented on own PR)
I have changed it so that it does this: prime number 31 * sum of the two hash codes.
36 (commented on own PR)
Amended!
37 (commented on own PR)
SLAP-ed. Thank you!
38 (commented on own PR)
Changed to "None"!
39 (commented on own PR)
Amended.
40 (commented on own PR)
Amended. Thanks!
41 (commented on own PR)
Amended for both.
42 (commented on own PR)
Hahahaha... my bad. Amended 😃
43 (commented on own PR)
Amended.
44 (commented on own PR)
Amended 😃
45 (commented on own PR)
Amended
46 (commented on own PR)
Amended
47 (commented on own PR)
Amended!
48 (commented on own PR)
Added in some new messages
49 (other comment)
LGTM
50 (other comment)
Verified fixed
51 (other comment)
Verified fixed
@xz0127
(27 comments)1 (commented on others PR)
Standardise the period at the end of phrases
2 (commented on others PR)
Should this System section be removed since we have specified the system at line 265?
3 (commented on others PR)
Would appointment
be better in line 321?
4 (commented on others PR)
If the default duration is 1 hour, should "hour" instead of "hours" be used?
5 (commented on others PR)
I agree with Jinhao! 🥇
6 (commented on others PR)
I think Jinhao is making a good point here. Personally i feel a Patient might be necessary for an appointment instance. Would it be better if we include a patient here besides the dateTimeLoader?
7 (commented on others PR)
I have included this part in my recent PR
8 (commented on others PR)
Would it be clearer to change the variable name td
to something more concrete, maybe todayDate
?
9 (commented on others PR)
Would it be better to change the done appointments
to appointments done
? appointment done
might sound smoother in terms of grammar? Let me know what do you think. 👍
10 (commented on others PR)
Might consider changing a
into an
.
11 (commented on others PR)
Same as the comment mentioned above.
12 (commented on others PR)
It is not a big issue but personally I feel the naming of the attributes can be clearer? Let me know what do you think. 👍
13 (commented on others PR)
Would singular form book
be better?
14 (commented on others PR)
Would it be better if the variable name adj
is changed into something clearer?
15 (commented on others PR)
Would it be better to rename the variable b
to make it clearer?
16 (commented on others PR)
Should the link here be changed?
17 (commented on others PR)
Should the links on these 2 lines be changed accordingly?
18 (commented on others PR)
Should the Person
on these two lines be refactored into Patients
? Person
is not wrong in this case. What do you think?
19 (commented on others PR)
Should it be UniqueAppointmentList
instead of UniqueAppointmentBook
?
20 (commented on others PR)
Would it be better if you add `` to AssignCommand?
21 (commented on others PR)
Perhaps it should be Gets
here?
22 (commented on others PR)
Perhaps it should be Gets
here?
23 (commented on others PR)
Perhaps it should be Initializes
.
24 (commented on others PR)
Perhaps it should be Initializes
here as well. 👍
25 (commented on others PR)
Would it be better if the name of the appointmentBook is consistent with the patient's name of the appointment? I was a little bit confused when I saw appointmentBookWithAmy
has appointment ALICE_APPOINTMENT
added. Perhaps I misunderstood this part. Let me know what you think 👍
26 (commented on others PR)
Should we give a sample input here? I think either way would be fine. Let me know what do you think. 👍
27 (commented on others PR)
A really minor comment: would it be better to make the comment singular/plural form consistent?
28 (commented on own PR)
Makes sense, I will make the change. Thanks! 👍
29 (commented on own PR)
Ok, will make the change! Thanks! 👍
30 (commented on own PR)
Oh right i missed that part. Thanks for pointing out! 👍
31 (commented on own PR)
Thank you for pointing this out! 👍
32 (commented on own PR)
Thanks for point this out! 👍
33 (commented on own PR)
Thanks for pointing this out! 👍
34 (commented on own PR)
I agree with Jinhao. I think !targer.isOverlapping
allows the appointment to be replaced without throwing OverlappingAppoinmentException
, and the second condition is to check no other overlapping appointments exist in the appointment book.
35 (commented on own PR)
Actually for simplicity, we can also consider this: call
remove
on target, then calladd
oneditedAppointment
. If it throwsOverlappingAppointmentException
, then weadd
backtarget
We should still throw a new exception when we add
back the target
right?
36 (commented on own PR)
Thanks for pointing this out! 👍
37 (commented on own PR)
Thanks for pointing this out! 👍
38 (commented on own PR)
Yes it was not used at this stage but I have implemented it in the next commit.
39 (commented on own PR)
Oh right thanks for pointing that out! 👍
@justintzuriel
(26 comments)1 (commented on others PR)
Typo on module
2 (commented on others PR)
Change to "A contact can have multiple tags."
3 (commented on others PR)
Can the usage of dots be consistent? Also, add articles (e.g. an assignment) and change 'the' to 'a'
4 (commented on others PR)
Change to 'a user', 'the user', and 'opens'
5 (commented on others PR)
No need to use 'the'
6 (commented on others PR)
Erase 'the'
7 (commented on others PR)
Should there be a space here?
8 (commented on others PR)
Not a department
9 (commented on others PR)
Not a department
10 (commented on others PR)
Shouldn't this be different department?
11 (commented on others PR)
Not a department
12 (commented on others PR)
Change to Information Systems
13 (commented on others PR)
Change to Information Systems
14 (commented on others PR)
Not a department
15 (commented on others PR)
Change to Information Systems
16 (commented on others PR)
Lowercase D
17 (commented on others PR)
Should this be duplicate modules?
18 (commented on others PR)
Perhaps change to personsCs1101s to adhere to the coding standard?
19 (commented on others PR)
Change naming to adhere to coding standard
20 (commented on others PR)
Change naming to adhere to coding standard
21 (commented on others PR)
I agree, might be mistaken for Name in Person
22 (commented on others PR)
I think it is a good idea, it is more descriptive (and has the same format with ModuleName)
23 (commented on others PR)
Sounds like a good idea
24 (commented on others PR)
Shouldn't this be moduleCode
?
25 (commented on others PR)
Can change this to modules?
26 (commented on others PR)
Does "This instructor is not assigned to this module" sound better? Also no need to use a dot.
27 (commented on own PR)
The codeSet won't be changed (also followed the code from parseTags in the same file)
28 (commented on own PR)
I was following the pattern from the other methods (contains, add, remove, etc), let me change the naming for those as well.
@pangpuncake
(26 comments)1 (commented on others PR)
The rationale we discussed was for it to be quicker to type for fast typers!
2 (commented on others PR)
Perhaps using bookmark.isEmpty()
could replace bookmark.equals(Optional.empty())
3 (commented on others PR)
Perhaps using the format provided in the User Guide e.g. add n/BOOK_TITLE tp/TOTAL_PAGES b/PAGE_NUMBER
would be more consistent?
4 (commented on others PR)
Did you mean storage instead of Algo?
UI, Logic, Model and Storage components,
Referring to the next 2 lines, only the UI, Logic, Model, and Storage have a {Component Name}Manager
class
5 (commented on others PR)
* does not depend on any of the other four components.
6 (commented on others PR)
Perhaps you could explain what is distance referring to? As someone new to the project might not understand this term.
7 (commented on others PR)
Referring to line 112 to the >div markdown...
could you update the Person
to Book
?
For some reason GitHub prevents me from choosing the line to comment.
8 (commented on others PR)
Referring to the [Proposed] Undo/redo feature
on line 310, perhaps you can update the classes used in the entire feature. Thanks!
9 (commented on others PR)
An additional benefit to Le Yang's suggested implementation is that currently it seems that users can create a Goal with wrongly formatted deadline or page which would lead to problems when calling parseDeadline() or getPage(), as a validity check is not done before creation.
10 (commented on others PR)
Perhaps a test for the constructor with null and invalid values would make for more comprehensive testing
11 (commented on others PR)
Perhaps the word filter could be removed as it might be misleading?
Sort books according to the condition inputted.
12 (commented on others PR)
Is writing theBOOK_TITLE
required? Referring, to the examples, it seems like it is not.
Format: `sort [n/] [g/] [b/]`
I'm not sure if you can write multiple conditions such as sort n/ g/
, if this is not intended, perhaps we can discuss how we can represent it in a certain format as the one I suggested implies you can write multiple conditions.
13 (commented on others PR)
Not sure if + "NAME
etc should be present here
14 (commented on others PR)
Is this to prevent extra arguments after the prefix e.g. sort n/Harry Potter
? Might not be necessary if we are just interested in the prefix only as inputPrefix would already be set.
15 (commented on others PR)
Maybe this could be modified to be percentage of book read? As different books may have varying pages, e.g. a 500 page book vs a 100 page book and might be more useful to sort based on completion rate. Just an idea.
16 (commented on others PR)
Perhaps the test cases could follow the format whatIsBeingTested_descriptionOfTestInputs_expectedOutcome
for consistency with the recommended convention
For e.g. execute_sortByName_success()
for this method.
17 (commented on others PR)
Not sure if you want to delete this
18 (commented on others PR)
The reason for design choice was not clear to me at first. Perhaps you could provide an example with reference to step 7 explaining how redoing State 4 would result in the book deleted in State 5 to come back again. Providing a bigger picture, if 10 new states were created, it would not make sense to lose all the 10 new states to bring back the old state and hence the reason for this design choice.
19 (commented on others PR)
Apt choice of data structure!
20 (commented on others PR)
Perhaps usage of requireNonNull for more defensive code.
21 (commented on others PR)
This should be
**`invalidBookLibrary.json`:**
22 (commented on others PR)
You might want to consider using Prefix instead of String. From what I see, you are converting from Prefix to String to set in UserPrefs. In order to get back the Prefix to create a Comparator, you have to convert the String back to a Prefix which seems unnecessary if Prefix was used instead. By using Prefix, you can remove the need for sortingPrefixGenerator and reduce the possibilities of bugs by the back and forth conversions.
Is there any additional benefit to using a String that I have missed out?
23 (commented on others PR)
Relating to my comment on using a Prefix instead of String in UserPrefs below, a Prefix would remove the need for sortingPrefixGenerator()
. This line seems to have too much chaining.
24 (commented on others PR)
I think you used the wrong image for the first column?
In addition, perhaps it would be clearer to use Before delete 2
and After delete 2
to make it clearer to the users what is happening.
25 (commented on others PR)
Perhaps instead of "Before 2nd book is edited" you could specify the command used, so that the users know what is happening in the example. For example, "Before edit 2 b/200
" etc
26 (commented on others PR)
Same thing here, perhaps you can use the example command.
27 (commented on own PR)
Okay have made the relevant changes to edit
28 (commented on own PR)
That is a good point! I did not notice the Bookmark constructor
29 (commented on own PR)
Thank you for pointing that out!
30 (commented on own PR)
Thank you for pointing it out!
31 (commented on own PR)
Yes I have updated the new PR to reflect this change, thank you!
32 (commented on own PR)
I have added a line at the start of the method to let the user know that DESC_1984 AND JANE_EYRE are two different books with different properties!
33 (commented on own PR)
I will add that in thank you!
34 (commented on own PR)
Indeed there should not be a need to check. I have removed it in the updated commit!
35 (commented on own PR)
I was thinking of that too! I have implemented a regex to handle these constraints. Symbols are now supported, and title has to be within 1 to 120 characters, text has to be within 1 to 1000 characters.
36 (commented on own PR)
This was for the assertions requirement for the week haha! Should I remove it?
37 (commented on own PR)
This is the attempt at creating an icon beside bookmark if it doesn't work I can revert this header.html file
38 (other comment)
Closed by PR #85
39 (other comment)
A Note now can support alphanumeric characters and symbols in the title and text. Title is confined to 1 to 120 characters while the text is confined to 1 to 1000 characters.
UI still does not reflect the notes yet.
Java Docs have been fixed to show the correct explanations.
Test cases have been updated to effect these constraint changes.
40 (other comment)
Main changes:
Add the delete note functionality.
Removed bug in edit command which causes loss of notes after editing.
Made the result from adding a new note to a book more concise for users to easily read.
Reformatted UG to keep a consistent format among features.
Built a prefix table for users to better understand each prefix and their meanings before delving into the feature list.
41 (other comment)
Closed by PR #97
42 (other comment)
Closed by PR #108
43 (other comment)
This is the expected result.
For delete 10
the command format is valid as the INDEX is positive, however the INDEX is more than the number of books shown in the list and hence the error message: The book index provided is invalid
.
For delete -3
it is an invalid command format, as stated in the format the INDEX must be positive to be considered valid. Therefore, the resulting error message describes the correct format that should be followed.
@Ziyang-98
(26 comments)1 (commented on others PR)
Will need to change the name and content of class eventually
2 (commented on others PR)
Can change thr Strings here, like "PHONE " to "DESCRIPTION " and same for amount
3 (commented on others PR)
Try not to get the lists itself out as there are delete methods available in the ActiveAccount class, for example deleteExpense and deleteRevenue
4 (commented on others PR)
Can extract out the error catching and the execute logic. For example, if (targetIndex.getZeroBased() >= revenueList.size()) { throw ...}
5 (commented on others PR)
I think the error catching condition should not be on this line
6 (commented on others PR)
I think the error catching condition should not be on this line
7 (commented on others PR)
Does this change the json file name under data?
8 (commented on others PR)
the "C" in "C/CATEGORY" should be lowercase
9 (commented on others PR)
This is still Work In Progress right? Since by wednesday there will be new commands
10 (commented on others PR)
oh ok roger
11 (commented on others PR)
btw this should change to requireAllNonNull(model, activeAccount)!
12 (commented on others PR)
This should include the activeAccount but I can change it once everyone finishes the command
13 (commented on others PR)
This is in String already though
14 (commented on others PR)
Maybe here can call the toString method like "return toString()" , or u can call getName() in toString() too to avoid duplication of code
15 (commented on others PR)
This can be called EditCommand, if not need to add Entry to AddCommand and DeleteCommand as well
16 (commented on others PR)
try to avoid chaining methods like this due to Demeter's law. Can create a isEntryExpense() method in the EditEntryDescriptor so that it would look like "editEntryDescriptor.isEntryExpense()". Similarly, can do the same for revenue
17 (commented on others PR)
For this, I can edit the ArgMultiMap after checking all the other commands!
18 (commented on others PR)
Can add Javadocs comment
19 (commented on others PR)
If possible can change instances of Person to Entry!
20 (commented on others PR)
What if you set the predicate of an empty revenue list, then you set a predicate to the expense list. Would this result in a not found message due to the condition being OR?
21 (commented on others PR)
I think this is more of a note instead of a warning
22 (commented on others PR)
This is solved already. Clear command clears only entries filtered.
23 (commented on others PR)
ohh okok can, warnings are for like irreversible effects, like delete account
24 (commented on others PR)
This should be a note uh
25 (commented on others PR)
delete shouldn't have an irreversible effect since there is an undo command
26 (commented on others PR)
Is this commented out? If so can just remove!
27 (commented on own PR)
Okay!
28 (commented on own PR)
Okay!
29 (commented on own PR)
so that nich and jordan can refer to it when implementing the commands
30 (commented on own PR)
for tags we reusing it
31 (commented on own PR)
okay i think that changed accidentally while i was deleting stuff
32 (other comment)
Btw for commits and PR header, the verb no need to be in past tense (so like changed can just leave it as change, updated can just leave as update)!
33 (other comment)
Example of input would be:
"add c/expense d/buying seeds a/20.50"
"add c/revenue d/selling flowers a/50.35"
34 (other comment)
Example of user input would be:
"delete 1 c/expense"
"delete 2 c/revenue"
35 (other comment)
find flowers c/revenue
36 (other comment)
edit 1 c/revenue d/description a/amount t/tag
edit 2 c/expense d/description
edit 3 c/revenue a/amount
37 (other comment)
clear c/expense
38 (other comment)
clear c/revenue
39 (other comment)
calculate
40 (other comment)
switchacc 1
41 (other comment)
Handle the exception with isValidAmount in Amount class
42 (other comment)
Add new attribute to Entry. So when new entry is added, the date can be retrieved from LocalDate and included in the constructing of the entry. For example, new Revenue(Description d, Amount a, Date date, Set>Tag> tags). So things to do (in order):
Create Date class under Entry package.
Add Date attribute to Entry (Need to refactor everything that involves Entry)
Implement creating of Date in AddCommand
43 (other comment)
Instead of c/revenue c/expense, change to c/r or c/revenue and c/e or c/expense.
Happy birthday!
44 (other comment)
Add a note saying that the editcommand still executes even if the same description, same amount or same tags are the parameters
45 (other comment)
Add error message if name is same as before
46 (other comment)
There is not much we can do about this as there is a revenue amount, but thank you for the suggestion 😃
47 (other comment)
Update format for clear command in UG
48 (other comment)
Update toString method in Entry
49 (other comment)
Update Indentation in FAQ
50 (other comment)
Change all instances of ENTRY_INDEX to INDEX
51 (other comment)
Copy tip from delete section
52 (other comment)
Add note in UndoCommand (similar to switch command)
@peironggg
(26 comments)1 (commented on others PR)
Thanks for refactoring names!
2 (commented on others PR)
Awesome way to calculate how many weeks it has been since the start of the semester 👍
3 (commented on others PR)
nice abstraction
4 (commented on others PR)
Thumbs up for creating tests!
5 (commented on others PR)
Thanks for adding this feature!
6 (commented on others PR)
Great detail for you PPP!
7 (commented on others PR)
Great abstraction taken to separate out the Add commands 👍
8 (commented on others PR)
Great work to abstract away the Delete commands 🥇 It is definitely not an easy task.
9 (commented on others PR)
Thanks for adapting the tests to fit the new Command structure.
10 (commented on others PR)
Great idea to make usage messages more specific!
11 (commented on others PR)
Thanks for implementing the Delete methods! 👍
12 (commented on others PR)
Great creation of the EditMasteryCheckCommand
13 (commented on others PR)
maybe we label this boolean variable as hasPassed
instead?
14 (commented on others PR)
Good abstraction barrier in place here
15 (commented on others PR)
Great abstraction for checking name against predicate!
16 (commented on others PR)
Great coverage!
17 (commented on others PR)
I like the naming of the test functions as well
18 (commented on others PR)
Fantastic amount of tests and helper classes added 👍
19 (commented on others PR)
Great detail in explaining the UI MAN
20 (commented on others PR)
Thanks for reordering the commands
21 (commented on others PR)
Thanks for making the LogicManagerTest work!
22 (commented on others PR)
great use of abstraction for this testcase 👍
23 (commented on others PR)
Real comprehensive test cases for AddressBookParser
24 (commented on others PR)
Great start to ModelManager
25 (commented on others PR)
Nice Tests!
26 (commented on others PR)
Great coding practice of using final variables
27 (commented on own PR)
how u leave a review on ur phone
28 (commented on own PR)
or u back in ur room alr
29 (commented on own PR)
yes, good too cos if ppl change user, the greeting should change as well.
30 (commented on own PR)
nope it is not, let me insert it. Good catch 👍
31 (commented on own PR)
Right now, it will show either edit password
or edit username
but ideally both should be shown to the user.
32 (other comment)
LGTM
33 (other comment)
Fixes #3
34 (other comment)
Yea, the only difference between the current typical....json file and mine is that for mine, all the "phone" change to "telegram" 😃
35 (other comment)
Np! Much thanks to @wilinetan too for helping me
36 (other comment)
Amazing job storing name into storage and improving the user-centricity of Jarvis.
37 (other comment)
Thanks for fixing the bus and changing all the addressbook references to jarvis! 👍
bus
@jonfoocy
(26 comments)1 (commented on others PR)
Might have missed out on bolding lines 383, 385, 393
2 (commented on others PR)
Maybe can change to t/ to keep the same format as the add command
3 (commented on others PR)
Can delete this import?
4 (commented on others PR)
Good point actually I did the same thing for my implementation of the ListCommand. Maybe we can extract it and put it in the UiManager component?
5 (commented on others PR)
Change to QAndA
for consistency with line 22?
6 (commented on others PR)
Change to QAndA
for consistency
7 (commented on others PR)
QAndA
8 (commented on others PR)
QAndA
9 (commented on others PR)
"... duplicate QAndAs"
10 (commented on others PR)
Extra print statement?
11 (commented on others PR)
Can consider adding test cases for parse failures other than an empty argument, either in this PR or subsequently
12 (commented on others PR)
Extra print statement?
13 (commented on others PR)
Consider changing to specific imports instead of * ?
14 (commented on others PR)
Change to specific imports?
15 (commented on others PR)
Change imports to be more specific
16 (commented on others PR)
Change imports
17 (commented on others PR)
Change imports
18 (commented on others PR)
Change imports
19 (commented on others PR)
Perhaps can change imports to be more specific
20 (commented on others PR)
Maybe can make imports more specific
21 (commented on others PR)
Not sure if these should be under QAndA? Also considering that the QuizCommand already has the isQuiz boolean, are we repeating the info here @joshruien?
22 (commented on others PR)
@ChengJiyuqing sorry but I'm not sure what's this change to all the commands, could you help me to understand what's this for?
23 (commented on others PR)
I was thinking about this and maybe instead modifying the QAndA itself can pass a copy of this QAndA to the component that's responsible for displaying the QAndA currently being quizzed?
24 (commented on others PR)
Extra line?
25 (commented on others PR)
Not sure if you missed changing this one?
26 (commented on others PR)
"filter out" sounds like they're being omitted from the search? Maybe can change to "will return questions"
27 (other comment)
Changed to #38
28 (other comment)
Throw error message when same prefix appears >1 time
29 (other comment)
Move tag to top left, add answer in a box
@yongmingyang
(25 comments)1 (commented on others PR)
"Question " but no biggie
2 (commented on others PR)
"QUESTION " instead of "Name"
3 (commented on others PR)
medmoriser**
4 (commented on others PR)
medmoriser*
5 (commented on others PR)
Medmoriser* methods
6 (commented on others PR)
medmoriser*
7 (commented on others PR)
medmoriser
8 (commented on others PR)
medmoriser
9 (commented on others PR)
medmoriserStorage*
10 (commented on others PR)
medmoriserStorage*
11 (commented on others PR)
medmoriserStorage*
12 (commented on others PR)
medmoriserStorage*
13 (commented on others PR)
medmoriser*
14 (commented on others PR)
medmoriser list? question set list?
15 (commented on others PR)
different question *
16 (commented on others PR)
questions*
17 (commented on others PR)
invalid question*
18 (commented on others PR)
different question
19 (commented on others PR)
Thanks for this, totally missed out the requirement for tp
20 (commented on others PR)
may want to change the parameter to userAnswer for consistency
21 (commented on others PR)
I'm not sure if the isQuiz state should be placed in the command. Do you think it would be possible to put it under a new class that controls the system's state? @jonfoocy what do you think about this?
22 (commented on others PR)
Can have 1 or two showing the phrase version instead of 1 word, but no biggie
23 (commented on others PR)
Maybe better to refer to this as QAndA?
24 (commented on others PR)
This too, just to make it less confusing for readers
25 (commented on others PR)
thanks
26 (commented on own PR)
aight changed
27 (other comment)
wrong place
28 (other comment)
Error was due to a misinterpretation of the user guide provided.
@kelvinvin
(25 comments)1 (commented on others PR)
Can remove the timestamp sentence
2 (commented on others PR)
Can remove the timestamp sentences in this section too
3 (commented on others PR)
It doesn't actually check for true right? Both this and delete sessions command will execute the command with just the force prefix
4 (commented on others PR)
confusing to User
5 (commented on others PR)
Is this the same as MSS step 3?
6 (commented on others PR)
To clarify, do you mean changing the variable name to value?
7 (commented on others PR)
I made WeightUnit check this on its own to avoid cyclic dependency
8 (commented on others PR)
i'll let @tanweijie123 decide this one
9 (commented on others PR)
I think we should keep the word "figure" 😃 one of the reviewers picked on this previously (#209) which is why I added figure
10 (commented on others PR)
I'm not sure whether to call them items or entities, cos I think it might be a little weird to call clients items. Your call!
11 (commented on others PR)
Schedule: A client's booking of a session
12 (commented on others PR)
Client: A client that is either interested or has engaged your services
13 (commented on others PR)
..add him to..
14 (commented on others PR)
Simple? That's the point of FitEgo.
15 (commented on others PR)
People who are interested or have engaged your fitness training services.
16 (commented on others PR)
Not sure, but I think it's "located on the left"
17 (commented on others PR)
Perhaps rephrase the line "Each session can have more than 1 client" in case it implies container? "Each session can be attended by multiple clients"?
18 (commented on others PR)
day/month/year hour minutes in 24hr format
19 (commented on others PR)
Hmm I know you didn't change this one, but I'm thinking we can change it to "FitEgo will not allow you.." so its more reader-centric and avoids short form like "doesn't"
20 (commented on others PR)
I think we should avoid using the keyword "schedule" here too haha since there's no logical link to clients here. Perhaps "This is to prevent concurrent sessions at different gyms from being accidentally created"?
21 (commented on others PR)
"Your records of your clients' details, training progress, payment status and your own timetable are spread across 3 or 4 different applications."
22 (commented on others PR)
*"A client is"
23 (commented on others PR)
*"overlap with"
*"located in"
Sorry for checking the edits this late!
24 (commented on others PR)
I think what Dhafin meant was:
"..in a new folder named images
within the data
folder.."
25 (commented on others PR)
Is this Figure 11 or 7? Numbering seems messed up
26 (commented on own PR)
updated!
27 (commented on own PR)
oops i just wrote v1.2. shud be fine?
28 (commented on own PR)
Yeapp sort by ascending startDate order. Will update the descriptions
29 (commented on own PR)
oh yes you're right, removing it
30 (commented on own PR)
ok!
31 (commented on own PR)
Oh think it was an accident
32 (commented on own PR)
Not sure if it'll make test cases harder to create in future?
33 (commented on own PR)
ModelStub needs these methods because it implements Model
34 (commented on own PR)
Oh yes, thanks
35 (commented on own PR)
Think this duplication happened from merging from both @dhafinrazaq and your branch? Will keep hasAnyScheduleAssociatedWithSession()
36 (commented on own PR)
Is there a point in keeping it? Since it's not being used I think
37 (commented on own PR)
thanks!
38 (commented on own PR)
Yup it'll show the date correctly! Bcos truncated returns a new LocalDateTime, not a int, so isBefore will work correctly.
Just realised a issue though. What if I set start as 10 Feb 2017 and duration as a year. It'll display the start time and end time as the same.
Do I need another isPastNewYear? ... Or should I just change it to DDMMYYYY
39 (commented on own PR)
Nevermind, I think I'll add YYYY to any interval in the session time. Sat 13 Feb -> Sat 13 Feb 2020
40 (commented on own PR)
For the time field: Within a day, stay as 3.00pm - 4.00pm. Over 2 days, add year (e.g. 3.00pm to 01 Sep 2020 4.00pm)
For the header of each session card, I'm adding year regardless of duration le, because right now 18 Feb 2020 and 18 Feb 2021 both show as 18 Feb. Though its sorted, let's play safe hahah
41 (other comment)
Right sidebar previously had a scrollbar that doesn't show now, but I think it's fine not to have it. Lgtm!
Vbox have auto hide scrollbar if not necessary. So maybe your screen size bigger?
Oh I think its just my screen then. Can merge
42 (other comment)
The division of 3 sections is in the other PR. Should we bold the nextSession line?
43 (other comment)
44 (other comment)
If i read it correctly, changes to existing classes is to enable comparing sorting clients (compared by name) and sessions (compared by interval start time) right?
Yep. For schedules, I'm comparing its session's interval start time as well.
45 (other comment)
Looks good for the most part, but is it possible to combine
ViewAllCommand
andViewWeekCommand
into saysession.ViewCommand
with commandsview
.
It will default to viewing all sessions in the upcoming week, but if you pass a flag such as
sview p/ all
then it will show all sessions ever created. The default issview p/+1 week
Okay with moving it to session and changing the keyword to sview. Not sure if there's a need to use p/ tags since there's only 2 variations in mind now. But if so, sview p/week
and sview p/all
? Think we can discuss it later
46 (other comment)
Weight -> optional argument in Edit Schedule
47 (other comment)
Just wondering why the comparator is null? 🤔
Ahh null will use the natural comparator for Session.. but yeah its not clear haha. Updated!
48 (other comment)
Still updates the title regardless of the command
e.g. cadd n/Johnny p/12112 e/awpind@gmail.com a/tekong
.
I think we can check whether commandResult == CommandResult(MESSAGE_SHOW_SESSIONS_SUCCESS)
before updating the title
49 (other comment)
This happens with overlapping_session and when dependencies are not found
50 (other comment)
Done
51 (other comment)
Done
52 (other comment)
Should we also change the command summary to be like this
I'm in favor of this change. Less space wasted by the Common Commands column
@Marcon2509
(24 comments)1 (commented on others PR)
i dont think this is where you save the property book
2 (commented on others PR)
cause it only gets saved on exit but rmb for things like ip how they want to make sure if your application gets suddenly closed it will save till the last previous excuted command. I think me and Ms save it in one of the parser or managers
3 (commented on others PR)
oh yeah its here lol
4 (commented on others PR)
Seems ok but curious what scenario would you need to add in a Person instead of a bidder in the unfiltered bidder list predicate?
5 (commented on others PR)
What does client person do? I tot only got bidder and seller and person or is this diannes thing for property
6 (commented on others PR)
We shud prob rename some of the variables to remove person and have a more general name like TabPanePlaceHolder
7 (commented on others PR)
Prob need to rename variables to remove person
8 (commented on others PR)
Question: Does this affect all the list or a specified list?
9 (commented on others PR)
maybe have a more descriptive Success message like "Edited bidder: From [%1$s] to [%2$s]"
10 (commented on others PR)
Since it now a propertyId should this be string or propertyId. shud we make a file for all default stuff
11 (commented on others PR)
whats the point of getting the .toString if you are just gonna put it pack into the modelPropertyId. Why not just check if the propertyId of type PropertyId instead of String contains null then it throw exception
12 (commented on others PR)
like still can but idk if considered redundant or not
13 (commented on others PR)
wait why is their a commented out bit so if the entity type is Meeting it does nth?
14 (commented on others PR)
For now no need but we should all consolidate the prefix cause got overlaps
15 (commented on others PR)
thanks
16 (commented on others PR)
wait why is this needed to be removed. isnt this just to make sure an app parameter object is the same as another app parameter with the same stuff?
17 (commented on others PR)
I think it shud be BidderAddressBook file not found. or MeetingBook cause it the bidderbook thats not found not the data on the bidders
18 (commented on others PR)
huh weird test not sure what i doing for that lol
19 (commented on others PR)
Why Need call it a different name?
20 (commented on others PR)
I dont understand what the test is for. Does navigation ever edit things in the models in the first place?
21 (commented on others PR)
actually right gramatically speaking all the variations will be wrong cause if got one bidder in the list it will be Listed all bidder which makes no sense. Maybe we should all change to Displaying full bidder list
22 (commented on others PR)
this refer to dianne property got a line that says smth like at least one optional parameter must be given
23 (commented on others PR)
INDEX_NUMBER not INDEX
24 (commented on others PR)
INDEX_NUMBER not INDEX and add ther e/ENDTIME
like the other tables
25 (commented on own PR)
ok will edit accordingly
26 (commented on own PR)
i put b/ for now since there is the prefix PREFIX_PHONE using it but it shouldnt be a problem
27 (commented on own PR)
oh reason why i left out the white space is that the parser is looking for one word but adding the space counts it as 2 word and cannot detect it as a add bid command
28 (commented on own PR)
it was showing a runtime warning that it running 11.0.1 when we only using 11
29 (commented on own PR)
oki will do
30 (commented on own PR)
oh this was standardizing for all edit and delete command wanted to separate the bullets form command and format
31 (other comment)
Please check thoroughly i have only added the basic functionality and it involves editing the UI so might have clashes. Also my branch was super outdated like before mingsoon revoed email and address so might have clashes there
@khoongwk
(24 comments)1 (commented on others PR)
Minor edit listmodules
2 (commented on others PR)
Delete this ">>>>>>> HEAD"?
3 (commented on others PR)
Delete this too
4 (commented on others PR)
Should we add in a case for invalid week specified by the user as an extension to [1]? Like week 123 or week -1. Same thing for UC03 - editing a task.
5 (commented on others PR)
Perhaps we should add an extension for the case when a user inputs a module code that's not in the list? Like what you did for UC07.
6 (commented on others PR)
See #62 from Hans, he included a numbering scheme for the features like 4.1.1, 4.1.2, etc. I think you can edit this section after his PR is merged into master.
7 (commented on others PR)
I think you're missing a quotation mark at the end here.
8 (commented on others PR)
I think we need a additional section below every "Format" to tell the user to reference the command parameters. For example:
ℹ️ | Refer to Section 4.1.1, “Service Management Command Parameters” for more detail about each parameter.
-- | --
9 (commented on others PR)
And replicate this 'success' for the other parts till 4.1.7 😄
10 (commented on others PR)
Can refer to @galvinleow 's PR for this ^.
11 (commented on others PR)
4.1.1 should be on the same level as 4.1.2. Should we reduce the heading level for the commands below from #### to ### to match this?
12 (commented on others PR)
I'm not sure if we can follow the original client find command, because for that command, we don't have to parse the different prefixes. Whereas for findsvc, we need to parse for both title and service code and ensure that only one of them is chosen. Can see @yanlynnnnn 's findexp command to see how she did hers.
13 (commented on others PR)
Should this be renamed to clientManagerOptional?
14 (commented on others PR)
"address book data" should be changed to "client manager data"
15 (commented on others PR)
require appointmentManager to be non-null too
16 (commented on others PR)
This method is for expenses - should "versionedClientManager" be here?
17 (commented on others PR)
"address book" should be renamed to client manager
18 (commented on others PR)
rename address book to client manager
19 (commented on others PR)
Rename address book
20 (commented on others PR)
Rename address book
21 (commented on others PR)
Do we need 2 lines of the same assertion?
22 (commented on others PR)
Lines 57, 63 and 111 as well
23 (commented on others PR)
Resolved
24 (commented on others PR)
When we call update, the UI will change if the user is on the appointments tab. Not sure if this is an acceptable outcome.
25 (commented on own PR)
Resolved!
26 (commented on own PR)
Resolved 😃
27 (commented on own PR)
Yup he did, but I needed to extend it with more methods. I need a contains method with parameter ServiceCode to check if the service code belongs to an existing service. I can't just insert that as a generic method to Unique List, so I created UniqueServiceList to extend UniqueList>Service>.
28 (commented on own PR)
Fixed, thanks!
29 (commented on own PR)
Thanks for the catch!
30 (commented on own PR)
I think I will just remove it. If I log here, there will be a tremendous number of log statements.
31 (commented on own PR)
Okay, will rename. Apparently there are many instances of "Homerce book" throughout the project. I think a "find-and-replace" went wrong in the past.
32 (other comment)
Looks good to merge 😃
33 (other comment)
Resolved Merge Conflict in User Guide. Needs further edits to UG, but let's merge first @yanlynnnnn got issues.
34 (other comment)
Closing this PR as the Remark command feature will not be added for now. If so, this PR may be reopened in the future.
35 (other comment)
Closing this PR as the Remark command feature will not be added for now. If so, this PR may be reopened in the future.
36 (other comment)
Closing this PR as the Remark command feature will not be added for now. If so, this PR may be reopened in the future.
37 (other comment)
Closing this PR as the Remark command feature will not be added for now. If so, this PR may be reopened in the future.
38 (other comment)
Closing this PR as the Remark command feature will not be added for now. If so, this PR may be reopened in the future.
39 (other comment)
Numbering scheme will be relegated to v1.4
40 (other comment)
Also need to standardize the heading level, like ###, ##, etc.
41 (other comment)
Resolved, removed the additional Date class.
42 (other comment)
@galvinleow I think the AddRevenueCommand
might not need, can be combined with the DoneAppointmentCommand
.
43 (other comment)
To do this, add model.updateFiltered(your category)List(Model.PREDICATE_SHOW_ALL_(your category))
to refresh the edited list.
44 (other comment)
@yanlynnnnn @galvinleow Can refer to my implementation so that yall can apply to revenue and expenses too.
45 (other comment)
Closing this PR, reopening as new PR
46 (other comment)
Since we are pivoting towards combining expense, revenue and profits, we should either close this PR or continue working on combining all together in this branch @galvinleow
47 (other comment)
Closing as this enhancement is made redundant by the schedule view.
48 (other comment)
UG updated as well.
49 (other comment)
This is expected, the check for client is done before the check for service. Adding to UGDG.
50 (other comment)
Already in UG under section 3.2.3 Command syntax and usage.
@rolandyuwy
(24 comments)1 (commented on others PR)
I suggest changing this to .png according to the specifications. Similarly, change to file itself to .png too.
2 (commented on others PR)
Perhaps "Expiry dates should be of the format d-MM-yyyy, dd-MM-yyyy, d/MM/yyyy or dd/MM/yyyy." might be more accurate?
3 (commented on others PR)
Very minor, should be "an" instead of "a".
4 (commented on others PR)
Nice touch to order alphabetically.
5 (commented on others PR)
This should be "Returns true if a given string is a valid priority level"
6 (commented on others PR)
A little odd to change to lower case before validation checks. Maybe only do so in line 30 (i.e. switch(priority.toLowerCase())?
7 (commented on others PR)
Just to standardize with the other fields: "Priorities should be either high, medium or low.";
8 (commented on others PR)
Perhaps you can consider using a switch statement? Just a suggestion.
9 (commented on others PR)
I understand, you are converting the input to lower case then performing validation checks on them. Then there is no need to change.
10 (commented on others PR)
Perhaps to standardize with line 91, considering using 'MEDIUM' priority?
11 (commented on others PR)
We should probably decide to standard formatting for grammar here. Would "4 valid predicates" be better than "4 valid predicate
"? Or predicate
objects?
12 (commented on others PR)
I think it should be "all of which implement"
13 (commented on others PR)
Let's standardize '1' to 'one'.
14 (commented on others PR)
Similarly for Alternative section
15 (commented on others PR)
Perhaps "domestic individuals who manage their kitchens at home"
16 (commented on others PR)
Perhaps "We have taken into consideration the common problems our target audience may face while managing their kitchen, and have created specialized features in our application in order to address them."?
17 (commented on others PR)
Perhaps "on your computer" might be more intuitive for readers?
18 (commented on others PR)
Small typo for 'expiry', same for other lines in the UG
19 (commented on others PR)
This looks good. I suggest we standardise the result display message for all errors caught in this code. Will open a new issue on this.
20 (commented on others PR)
To standardise, we need to remember to implement this for Changeqty command too.
21 (commented on others PR)
Good catch
22 (commented on others PR)
I think it should be "requires"
23 (commented on others PR)
Perhaps use expired
to standardise with line 54
24 (commented on others PR)
Small error here: Remove 'of'
25 (commented on own PR)
Yes this step is redundant
26 (commented on own PR)
I believe the definition here is required, since use cases have System and Actor(s), here we say we are using SimplyKitchen to represent our System.
27 (commented on own PR)
Good catch!
28 (commented on own PR)
Sure thing, I'll make the changes.
29 (commented on own PR)
Sure thing, I'll make the changes.
30 (commented on own PR)
Sure thing, I'll make the changes.
31 (commented on own PR)
I see. I will leave these sections to be updated as the diagrams require changing in the future too.
32 (commented on own PR)
Good catch
33 (commented on own PR)
Thanks!
34 (commented on own PR)
Thanks!
35 (commented on own PR)
Thanks!
36 (commented on own PR)
Thanks!
37 (commented on own PR)
Thanks!
38 (commented on own PR)
Thanks!
39 (commented on own PR)
Thanks!
40 (commented on own PR)
Thanks!
41 (commented on own PR)
Noted, thanks!
42 (commented on own PR)
Will do, thanks!
43 (commented on own PR)
I have amended my code, thanks for the suggestions!
44 (commented on own PR)
I have amended my code, thanks for the suggestions!
45 (commented on own PR)
The tie breaker sorting description is actually mentioned in subsequent lines. I think I will move your suggested line below.
46 (commented on own PR)
Alphabetical order is actually different from lexicographical order, so here it is more accurate to use "lexicographically". Instead of changing the meaning, maybe including a glossary to explain this is better.
47 (commented on own PR)
Thanks!
48 (commented on own PR)
Thanks!
49 (commented on own PR)
Sure thing
50 (commented on own PR)
Items of different description content still consider the case of the first characters though. Perhaps we can discuss a better way to represent the meaning accurately and clearly during our next meeting
51 (other comment)
LGTM
52 (other comment)
LGTM!
53 (other comment)
LGTM!
54 (other comment)
LGTM
@kaitlynng
(24 comments)1 (commented on others PR)
Maybe we can have an enum for TAB_ID instead to make it more clear.
2 (commented on others PR)
Will it be confusing to have TAB_ID in Command.java and tabId in CommandResult.java? Maybe more descriptive name like tabIdToSwitchTo can help.
3 (commented on others PR)
Should the command word be 'add' or 'add patient'? Since we've changed the AddCommand to AddPatientCommand, and we need to consider adding appointments too.
4 (commented on others PR)
Should rename 'Person' to 'Patient' (but I think this is model people's job)
5 (commented on others PR)
Since AddCommand was changed to AddPatientCommand, maybe ClearCommand should be changed to be more descriptive also? i.e. change to ClearAllPatientsCommand.
6 (commented on others PR)
Formatting issues, can put on the same line.
7 (commented on others PR)
I can't add a comment at the required line, but maybe we can rename this command to EditPatientCommand instead to align with AddPatientCommand? Also because we are probably adding capabilities or editing appointments right, so will need to clarify what we're editing.
8 (commented on others PR)
Will also need to remember to edit the MESSAGE_USAGE to reflect patient parameters.
9 (commented on others PR)
Likewise, should we rename to FindPatientCommand?
10 (commented on others PR)
Likewise, should we change this to ListPatientsCommand? I'm not very sure because then now we'll have the 'Patient' in every command which is a lot more verbose, but it also makes the command clearer.
11 (commented on others PR)
Why is PREFIX_REMARK removed?
12 (commented on others PR)
Maybe we should have RemarkCommand for both patient and appointment? so we split into RemarkPatientCommand and RemarkAppointmentCommand
13 (commented on others PR)
Remove testing print lines
14 (commented on others PR)
Changed implementation of UniqueAppointmentList to UniqueList (generic interface)
15 (commented on others PR)
AppointmentBuilder fields need to change to match new implementation of Appointment
16 (commented on others PR)
should standardise lsappt and listapptof
17 (commented on others PR)
can use requireAllNotNull
18 (commented on others PR)
I think shortening it to addpat could actually be more confusing
19 (commented on others PR)
shotening to "pat" from "patient" could be confusing for the user as "pat" is not a conventional short form for patient (unlike appt)
20 (commented on others PR)
shotening to "pat" from "patient" could be confusing for the user as "pat" is not a conventional short form for patient (unlike appt)
21 (commented on others PR)
shotening to "pat" from "patient" could be confusing for the user as "pat" is not a conventional short form for patient (unlike appt)
22 (commented on others PR)
shotening to "pat" from "patient" could be confusing for the user as "pat" is not a conventional short form for patient (unlike appt). Also, standardise list or ls.
23 (commented on others PR)
shotening to "pat" from "patient" could be confusing for the user as "pat" is not a conventional short form for patient (unlike appt)
24 (commented on others PR)
I think we shouldn't put colour here, as colour is a UI atttribute. Instead we can create an AppointmentStatusColour that maps AppointmentStatus to the colour, so that we separate the UI from the model.
25 (other comment)
Allow for alternative shorter commands lp and la
26 (other comment)
New implementation:
status of an appointment will be calculated in the getStatus function of each appointment. If appointment is marked as missed, return missed, otherwise check if appointment date is before current date. If so, mark as done, otherwise mark as upcoming. The "missed" status is kind of like an overriding status.
this ensures instantaneous update of the status everytime it is needed in the app (e.g. when displaying)
@yanchenglee98
(24 comments)1 (commented on others PR)
@teekoksiang I think we settled on combining both to minimize the number of fields required when creating a resident. So B05 will be internally parsed as "B" and "05"
2 (commented on others PR)
need to change https://github.com/se-edu/addressbook-level3/actions to this https://github.com/AY2021S1-CS2103T-T11-2/tp/actions
3 (commented on others PR)
Are these for debugging? Remember to remove debugging statements
4 (commented on others PR)
The validity check should be checking trimmedMatriculationNumber instead of matriculationNumber similar to the other parsing commands
5 (commented on others PR)
Another debug statement to be removed.
6 (commented on others PR)
This statement should reference the picture above. Currently the picture LogicClassDiagram.png
is not referenced in the DG
7 (commented on others PR)
Each event will still need to have a list of students i.e. List>Person> to keep track which students are attending which event.
Will need an accessor to the list and a way to add students to the list also.
8 (commented on others PR)
Command#execute()
and AddressBookParser#parseCommand
have different styles. One has a bracket while the other does not. Let's standardize and have the brackets.
9 (commented on others PR)
Sequence diagram is missing a return arrow after calling addEvent()
method of Model. Remember that void methods have a return arrow in sequence diagrams. Unless you are omitting return arrows then it should be standardized since the diagram has return arrows for the previous method calls
10 (commented on others PR)
The table seems to be broken when viewed on markdown for me.
11 (commented on others PR)
Are we adding additional explanation after listing the pros and cons of each alternative?
12 (commented on others PR)
It seems the image cannot be viewed on markdown.
13 (commented on others PR)
Should have a spacing after a comma.
14 (commented on others PR)
Should have a spacing after commas
15 (commented on others PR)
Missing colon at the end of sentence
16 (commented on others PR)
Missing full stop at end of sentence
17 (commented on others PR)
The sequence diagram has some errors, notably the second activation bar of of AddCommand
has no method call arrow from LogicManager
.
Also make sure that the return arrow is aligned with the end of the activation bar.
18 (commented on others PR)
We need to standardize whether or not to capitalize hall. I feel there's no need to capitalize it. We can KIV this for future discussions if needed.
19 (commented on others PR)
Is there a reason you did not follow the previous standard of
'if (argMultimap.getValue(PREFIX_STUDENT_GROUP).isPresent()) {
predicates.add(getStudentGroupPredicate(argMultimap.getValue(PREFIX_STUDENT_GROUP).get()));
}'?
20 (commented on others PR)
Missing a JavaDoc comment that explains when a ParseException
is thrown
21 (commented on others PR)
Should catch for DateTimeParseException
instead of just Exception
22 (commented on others PR)
This looks out of place
23 (commented on others PR)
You forgot to update the command summary
24 (commented on others PR)
I think instead of throwing a generic ParseException(MESSAGE_UNKNOWN_COMMAND)
, should throw ParseException(HelpCommand.MESSAGE_USAGE)
. The error can be more specific and help the user recover. Same applies for all the other commands
25 (commented on own PR)
I think no need since a new line is already shown between 1a and 1a1 when viewed in markdown.
26 (commented on own PR)
tp progress script requires filename to be github username
27 (commented on own PR)
Yep will do thanks
28 (commented on own PR)
Ok thanks
29 (commented on own PR)
Ok sure but is there a difference between passing the list to the method or getting the person list in the method?
30 (commented on own PR)
Will do thanks
31 (commented on own PR)
Will do thanks
32 (commented on own PR)
Good catch. Will do it thanks
33 (commented on own PR)
I have changed the logic such that the arguments will be stripped which will result to "emailphone" and a parse exception will be thrown in ExportCommand#execute()
34 (commented on own PR)
Yep. Will do thanks
35 (commented on own PR)
I can't seem to find the comment. What test case would you suggest to add?
36 (commented on own PR)
Ok will do. Thanks.
37 (commented on own PR)
Oh nope, ExportCommandParse now does not throw any exceptions. It leaves the validation to ExportCommand
38 (commented on own PR)
Ok done
39 (commented on own PR)
Good catch. Thanks
40 (commented on own PR)
OK done
41 (commented on own PR)
Ok done
42 (commented on own PR)
Good catch, fixed. Thanks.
43 (commented on own PR)
Changes made here.
44 (commented on own PR)
Changes made here.
45 (commented on own PR)
Changes made here.
46 (commented on own PR)
Changes made here.
47 (commented on own PR)
Changes made here.
48 (commented on own PR)
Changes made here. This is so that when a student is added to an event's attendee list, the change can be picked up when setting the event in UniqueEventList#setEvent()
49 (commented on own PR)
Changes made here.
50 (commented on own PR)
Yeah forgot to change it. Thanks
51 (commented on own PR)
Makes sense. Will do.
52 (commented on own PR)
So do an equality check? i.e target.equals(editedEvent)
I was thinking of doing it in the AssignCommand#execute()
53 (commented on own PR)
Sure
54 (commented on own PR)
Good catch! Thankfully additional spaces seem to have no impact upon testing thanks to ParserUtil#parseIndex()
as they will trim the input.
But if there any more bugs do report them.
55 (commented on own PR)
This is an outdated TODO. I have removed it in the latest commit.
56 (commented on own PR)
Oh yeah 😆 Thanks
57 (commented on own PR)
Good suggestion!
58 (commented on own PR)
Ok will follow UniquePeronList
59 (commented on own PR)
Yeah good catch
60 (commented on own PR)
Makes sense. Will do
61 (commented on own PR)
Wait we need to use equals because they need to check the contents of attendeeList
also. Else when setEvent
is called in AssignCommand#execute
, a duplicate is always detected. Check the latest commit from my branch to see the errors from the failed Java CI PR Run
62 (commented on own PR)
I could replace '@' with 'at' instead. I feel that putting the date and location in separate lines leads to wasted space.
63 (commented on own PR)
How about a comma instead e.g. 01/01/2020, Dining Hall at Eusoff
64 (commented on own PR)
Ok for now we settle with this.
65 (commented on own PR)
Ok will move to seedu.address.model.event
66 (other comment)
Completed, closing issue
67 (other comment)
Export feature has been implemented.
68 (other comment)
Should we delete and replace 3.1 with the exporting information?
Redo/undo section has been removed from DG
69 (other comment)
Change to list-event-attendees
70 (other comment)
use this instead
Parameters: EVENT_INDEX (must be positive integer)
@Asuraxsoul
(24 comments)1 (commented on others PR)
good use of hashmap
2 (commented on others PR)
Good idea to include threads for GUI!
3 (commented on others PR)
good use of enum
4 (commented on others PR)
Thanks for adding feature for navigating back to the corresponding tabs
5 (commented on others PR)
thanks for implementing switching of tabs to consultation for add consultation command
6 (commented on others PR)
thanks for adding in Mastery Check tab in GUI
7 (commented on others PR)
Thanks for so conscientiously updating the UG to make sure that it is up to date.
8 (commented on others PR)
good defensive coding!
9 (commented on others PR)
methods are well laid out neatly and logically
10 (commented on others PR)
boolean result variable can be named in a 2 sided way.
11 (commented on others PR)
you can probably updateTasksSummaryDetail() at higher level so that better abstraction is followed, no need to write so many of the same functions that may appear confusing.
12 (commented on others PR)
good abstraction of methods used here!
13 (commented on others PR)
good use of multiple assertions at essential points.
14 (commented on others PR)
same for the others in this class
15 (commented on others PR)
I feel that getting values from various lists does not need to be concerned with whether user is logged in or not.
16 (commented on others PR)
Thanks for changing the error message to fit both task and consultations
17 (commented on others PR)
The logic for delete commands looks good.
18 (commented on others PR)
good use of assertion
19 (commented on others PR)
maybe can state the general function this method does
20 (commented on others PR)
boolean variable can be named better. eg isPassed
21 (commented on others PR)
Thanks for removing the find command
22 (commented on others PR)
I believe the TaskCommandParser needs MESSAGE_MISSING_DATE instead of MESSAGE_MISSING_INFO because Task dont have NAME variable.
23 (commented on others PR)
I think this error message is incorrect, I might still need the previous version error message.
24 (commented on others PR)
THank you! 👍
25 (commented on own PR)
yes I understand where you are coming from but the first if condition is used to solve bug #256
26 (commented on own PR)
same comment as the above
27 (commented on own PR)
okay noted
28 (commented on own PR)
noted! Thanks
29 (other comment)
LGTM
30 (other comment)
LGTM thank you!
31 (other comment)
LGTM
32 (other comment)
LGTM
33 (other comment)
LGTM thanks for updating the readme!
34 (other comment)
LGTM
35 (other comment)
LGTM
36 (other comment)
LGTM
37 (other comment)
LGTM! Thank you for editing the checkstyles too!
38 (other comment)
LGTM!
39 (other comment)
LGTM!
40 (other comment)
LGTM!
41 (other comment)
LGTM!
42 (other comment)
LGTM!
43 (other comment)
LGTM!
44 (other comment)
LGTM!
45 (other comment)
LGTM, great effort for pulling quest data from source academy and updating the GUI, thank you!
46 (other comment)
Currently, only a temporary view list for all tasks is in place
To be implemented:
View -t, -tt, -te, -td
47 (other comment)
LGTM, thanks for adding consultation view command related tests!
48 (other comment)
LGTM, good job for adopting a more defensive coding style.
49 (other comment)
LGTM, diagrams look fantastic
50 (other comment)
Will resolve weird github checkstyle issues afterwards
51 (other comment)
LGTM, thank you
52 (other comment)
LGTM, thanks for cleaning up those codes that are unused for Students! Great effort.
Edit: Thanks @wilinetan too
53 (other comment)
LGTM
54 (other comment)
We have discussed and concluded that this feature can be omitted since this user story and feature is considered a subset of / taken care of by the delete function implemented.
55 (other comment)
looks good!
56 (other comment)
Thanks for editing the UG, looks good.
57 (other comment)
Looks good, Thanks!
58 (other comment)
Thank you for modifying the GUI to be better, I like the modification 👍
59 (other comment)
Thanks for adding UG photos
60 (other comment)
Thank you so much for spotting this bug.
61 (other comment)
Thank you for pointing this error!
62 (other comment)
Thank you so much for pointing out this error.
63 (other comment)
Hmm yes, I agree that it the suggestions you provided is more natural, but our intended purpose is to just give tasks an unique id each. Perhaps I will state and caution the user in the user guide. Thanks for flagging this out! 😃
64 (other comment)
looks great!
65 (other comment)
Thanks for fixing the bugs!
Thanks @wilinetan
66 (other comment)
THANK you all!
67 (other comment)
Looks good!
@shaokiat
(23 comments)1 (commented on others PR)
I think should be fine since all the CS modules we are covering follows that format. Or should we limit to 7 characters?
2 (commented on others PR)
* Returns the user prefs' GradPad file path.
can try using replace tool to search for remaining address book
3 (commented on others PR)
I guess the Tag can be the Core and Non-core for now
4 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of GradPad list
5 (commented on others PR)
// edit module in filtered list into a duplicate in GradPad
6 (commented on others PR)
* but smaller than size of GradPad
7 (commented on others PR)
// ensures that outOfBoundIndex is still in bounds of GradPad list
8 (commented on others PR)
public void execute_multipleKeywords_multipleModulesFound() {
9 (commented on others PR)
public void execute_zeroKeywords_noModuleFound() {
10 (commented on others PR)
* A utility class to help with building EditModuleDescriptor objects.
11 (commented on others PR)
* Parses the {@code tags} into a {@code Set<Tag>} and set it to the {@code EditModuleDescriptor}
12 (commented on others PR)
* Returns an add command string for adding the {@code module}.
13 (commented on others PR)
Perhaps can specify that modules are added into the Current Modules section/column instead of just GradPad
14 (commented on others PR)
Example of usage: `add c/ CS2103T cr/ 4`
15 (commented on others PR)
LOL
16 (commented on others PR)
I'm guessing we have to add the other non-CS modules that are in the syllabus as well to the moduleInfoMap
17 (commented on others PR)
I think Sam meant that the logic behind the implementation can be abstracted out so there's not as much repeated code because now there are still repeated code in the 3 methods which is the double for loops.
I'm guessing maybe the addition of the helper function would be good.
18 (commented on others PR)
Yeah we not calling it current GradPad modules anymore
19 (commented on others PR)
+ PREFIX_TAG + "Foundation";
Hehe maybe change to actual tag examples
20 (commented on others PR)
What's the difference between model.getFilteredModuleList()
and model.getGradPad().getModuleList()
?
Is this because there is no need for filtered module List anymore so edit command will just work on the entire module list?
21 (commented on others PR)
new ModularCredits("4"), getTagSet("Foundation")),
22 (commented on others PR)
Yes I agree with you. I guess because the previous implementation uses the index which is affected by whether it is a filtered list, so now that we are not using index anymore, there should not be a need for filteredModuleList. 👍
23 (commented on others PR)
Just curious why did you put preclusionMap
as a parameter? Can it be stored as a field and accessed through the class instead since there is only 1 preclusionMap. I'm not too sure I'm just asking
24 (commented on own PR)
Not sure if that will affect the storage part but okay I'll change it first
25 (commented on own PR)
I have changed it to CS2103T instead and passed the test case.
26 (commented on own PR)
Oh okay yeah sounds good.
27 (commented on own PR)
Yeap okay that one passed the test. But yeah was slightly confused with this test case.
28 (commented on own PR)
Yup for now it still works with indexes but I think we are planning to change it to ModuleCode in the near future so I just change the documentation first.
29 (commented on own PR)
I think it has got to do with the JavaFX status bar but I don't see it in the GUI
30 (commented on own PR)
Okay I'll remove it since its not needed.
31 (commented on own PR)
Ah grammar mistakes
32 (commented on own PR)
Oh yeah forgot about this. Thanks for catching it! 👍
33 (commented on own PR)
Oh wow good catch! Added the relevant code!
34 (commented on own PR)
This is with regards to Yan's comment because the command search MA 1521
will not throw error when it is supposed to but after the IllegalArgumentException was added it was able to catch the error
StringUtil.ignoreCase calls AppUtil.checkArgument which throws IllegalArgumentException
How should I go about catching this IllegalArgumentException?
35 (commented on own PR)
Thanks for the note! 😄
36 (commented on own PR)
Good question HAHA I'll put it back
37 (commented on own PR)
Edited! Thanks for the catch
38 (commented on own PR)
Yup I've added them in. Should I include hyper links to NUSMods and website of faculty of computing?
39 (commented on own PR)
Oops! Nice catch hehe
40 (commented on own PR)
I think its better to include though, because it is more clear for the reader else they would not know it is optional and the curly braces and square brackets were only used for the command summary so there shouldn't be inconsistency issues with regards to this note.
41 (commented on own PR)
Or are you suggesting that we remove the curly braces and square brackets entirely and replace with something else to indicate the optional fields?
42 (commented on own PR)
Do yall think that this is clear enough for the reader? It already made sense to me when I only add the word new
.
43 (commented on own PR)
Wow back at it with the streams again 💯
44 (commented on own PR)
Oh good find!
45 (commented on own PR)
Thanks hahahaha
46 (commented on own PR)
Yep got it
47 (commented on own PR)
yep changed
48 (commented on own PR)
changed!
49 (commented on own PR)
Changed!
50 (commented on own PR)
Yep sounds good!
51 (commented on own PR)
Ohhh okay make sense! I'll remove it
52 (commented on own PR)
LOL okay thanks
53 (commented on own PR)
Yeah I was thinking of this. I'll go change it
54 (commented on own PR)
Yeap sounds good!
55 (other comment)
Tag to be able to take in multiple words
KIV: Multiple tags in one t/
and separated by commas
56 (other comment)
Not a feature we will be implementing.
This will instead provide more flexibility for the user to add external modules not in curriculum.
57 (other comment)
Change to School of Computing
58 (other comment)
link #156 #165
@wang-jun-hao
(23 comments)1 (commented on others PR)
Perhaps "DOB must not be a date in the future" will be better and more succinct?
2 (commented on others PR)
Perhaps it is better to name it VALID_DATE_OF_BIRTH_AMY and VALID_DATE_OF_BIRTH_BOB to keep it consistent with the current style, where the full class name is used instead of abbreviations?
3 (commented on others PR)
Perhaps it is better to name it DATE_OF_BIRTH_DESC_AMY and DATE_OF_BIRTH_DESC_BOB?
4 (commented on others PR)
Maybe it is better to use the full class name for clarity?
A good case of invalid check since '/' is quite a common way of inputting dates.
5 (commented on others PR)
Might have added 12 spaces instead of 8 by mistake?
6 (commented on others PR)
Maybe you can re-arrange the order of the fields to make it more consistent with the rest of the code
7 (commented on others PR)
Fixed
8 (commented on others PR)
Fixed
9 (commented on others PR)
Fixed
10 (commented on others PR)
Perhaps it is better to have the first sentence of a javadoc on a single line.
11 (commented on others PR)
Perhaps it is better to have these fields as private and provide getters for encapsulation purposes.
12 (commented on others PR)
Perhaps it is better to define these variables as named constants (private static final) at the class level.
13 (commented on others PR)
ok we can kiv
14 (commented on others PR)
Perhaps it is good to have a javadoc for this method since it is public
15 (commented on others PR)
Perhaps we should have a javadoc for AccessCommand
16 (commented on others PR)
Perhaps we can also test the case when outOfBoundIndex is also out of bounds of MediBook list
17 (commented on others PR)
Can we use a try {new MedicalNote()} and catch block to handle this? MedicalNote constructor has a similar block of code for this and will throw exceptions that can be caught here.
18 (commented on others PR)
Maybe it is better to change getUsername() and getPassword() to just username, password for simplicity.
19 (commented on others PR)
Maybe it is better to handle the exception of empty string "" as username/password?
20 (commented on others PR)
Would it be better if we handled !isValidName and !isValidMcr separately (and use their respective MESSAGE_CONSTRAINTS) so that it is clearer for users what is the expected format? Also, would be better if we have some restrictions on the username/password.
21 (commented on others PR)
Can these test methods be replaced using other fields? Like change name field to either date/content, so that these tests are still carried out, just on other fields that are still available.
22 (commented on others PR)
Would you consider renaming this to check_validInput_successWithCorrectAccount()?
23 (commented on others PR)
Is this supposed to be changed too?
24 (commented on own PR)
I have tried appending the commend to the end of the line, but the line will exceed 120 chars. Hence, I moved it to the top.
25 (commented on own PR)
Thank you for pointing that out. I have added it into the check.
26 (commented on own PR)
Will do integration testing after other modules are merged within this branch
27 (commented on own PR)
fixed
28 (commented on own PR)
Ok thanks I have fixed this
29 (commented on own PR)
Ok thanks I have fixed this
30 (commented on own PR)
public static final Index INDEX_FIRST_PATIENT = Index.fromOneBased(1);
public static final Index INDEX_SECOND_PATIENT = Index.fromOneBased(2);
public static final Index INDEX_THIRD_PATIENT = Index.fromOneBased(3);
are from AB-3.
Should I just rename all to INDEX_FIRST, INDEX_SECOND, INDEX_THIRD?
INDEX_ONE may be misleading since there are one-based and zero-based indices.
The variables should be named with the same first term "INDEX" as per naming convention.
31 (commented on own PR)
Thanks for pointing it out. I have fixed it.
32 (commented on own PR)
Resolved
33 (commented on own PR)
Ok I have updated this.
34 (commented on own PR)
Ok updated
35 (other comment)
Completed fields necessary for v1.1
36 (other comment)
Addressed in merging v1.2b into master
37 (other comment)
Addressed in merging v1.2b into master
38 (other comment)
Addressed in merging v1.2b into master
39 (other comment)
Addressed in merging v1.2b into master
@sudogene
(22 comments)1 (commented on others PR)
Ah that one is LICENSE, should stay as person
2 (commented on others PR)
@throws ParseException if the given {@code academicYear} is invalid.
3 (commented on others PR)
@yejiadong @kerkpy
4 (commented on others PR)
just need newline at EOF
5 (commented on others PR)
just need newline at EOF
6 (commented on others PR)
HHmm
instead? Capital M is for month i think
7 (commented on others PR)
An UI component that displays information of a ...
{@code Training} ?
{@code TrainingSession} ?
{@code TrainingSchedule} ?
8 (commented on others PR)
Panel containing the list of training/training sessions/training schedules.
9 (commented on others PR)
Just putting a note here for myself
10 (commented on others PR)
I personally think removeAllTraining()
or clearTraining()
would be more coherent with the removeTraining method above, in terms of naming. It's more of an opinion only so you still make the final decision
11 (commented on others PR)
Id included?
12 (commented on others PR)
We putting training data in student json file too?
13 (commented on others PR)
use static string for this? INVALID_DATETIME_MESSAGE
14 (commented on others PR)
What if the idList contains repeated Id values?
15 (commented on others PR)
Will this class name be confusing since it sounds like adding student to the student list also (i.e. AddCommand
)? Just wondering only
16 (commented on others PR)
This is redundant null check because the constructor already has requireNonNull(studentsToAdd)
, instead it should check for studentsToAdd.isEmpty()
17 (commented on others PR)
Should be id = id.trim()
trim()
returns a new String, does not modify the old String.
18 (commented on others PR)
minor suggestion: args.trim().isEmpty()
19 (commented on others PR)
this nicer?
20 (commented on others PR)
"Available" Student?
21 (commented on others PR)
Can delete this method? Cause it has been abstracted to ParserUtil::isUniqueList
22 (commented on others PR)
AddStudentCommandParserTest
instead since our actual parser class name is AddStudentCommand
parser: AddStudentCommandParser
command: AddStudentToTrainingCommand
lmao
23 (commented on own PR)
Added that to prevent over-coupling with the parser (wanted to make PredicateList more stand-alone)
24 (commented on own PR)
I try to make Id test very standalone because it's mutable (keeps track of used Id values and auto increment for new students). So the TypicalStudents used in other tests will not be affected by Id's mutability and can safely just use a placeholder value (i.e. 1). But alright I can vary the values
25 (commented on own PR)
it's public like the other student field classes
26 (commented on own PR)
It's assumed here that there will always be the Id existing in the list, is there a scenario that this wont happen?
27 (commented on own PR)
yep thanks, shall do that. We see how this find by id goes, best is we abstract it to a util method
28 (commented on own PR)
nope, it's left here since AddStudentToTrainingCommandTest
has not been updated to factor in this check
29 (other comment)
tp.do();
30 (other comment)
My bad, didn't open to reviews
31 (other comment)
Gonna merge
32 (other comment)
LGTM!
33 (other comment)
LGTM
34 (other comment)
LGTM
35 (other comment)
this is legacy AB3 issue
36 (other comment)
LGTM
@yejiadong
(22 comments)1 (commented on others PR)
Might want to fetch the updated UserGuide.md to paste here, as it was edited and merged yesterday to resolve some docu bugs (e.g. address here is removed)
2 (commented on others PR)
Think can change the email here to one of our email addresses
3 (commented on others PR)
minor spelling of "the"
4 (commented on others PR)
@sudogene actually yes, each student will also store the dates of trainings assigned to them, so should be in their json too, we can look at this again after the add student to training command is added
5 (commented on others PR)
might be better to use getters to get the dismissalTime instead of accessing the variable directly
6 (commented on others PR)
shouldnt this be true, since if the training is scheduled on saturdays and sundays, student will always be able to make it?
7 (commented on others PR)
think might be clearer for AddStudentToTrainingCommand since AddStudentCommand can be confused with adding a student
8 (commented on others PR)
DeleteStudentFromTraining might be feasible here
9 (commented on others PR)
Might need to remove/add the LocalDateTime from/to the student's training schedule treeSet container as well, feel free to use the methods alr implemented in student class for this, so that student training schedule panel will update too
10 (commented on others PR)
might want to remove the prints here
11 (commented on others PR)
if studentsList empty, is it safe that .get() will not throw a null pointer error?
12 (commented on others PR)
makes sense, but might be good to include an assertion here in case of code changes in future
13 (commented on others PR)
is this part removed?
14 (commented on others PR)
small typo here - part of its schedule
15 (commented on others PR)
At least one student to be added -> at least one student to be "unmarked"
16 (commented on others PR)
UNMARK_AS_ATTENDED?
17 (commented on others PR)
INVALID_STUDENT_UNMARKED
18 (commented on others PR)
Do we want to standadise unmarkedAttendance as the word to use instead of unattend?
19 (commented on others PR)
unmarked?
20 (commented on others PR)
spelling - "if"
21 (commented on others PR)
marked
22 (commented on others PR)
fixed
23 (commented on own PR)
Fixed.
24 (commented on own PR)
Changed to removeAllTraining()
25 (other comment)
With exception of documentation/logs, all person class instances have been changed to student.
26 (other comment)
Pending checkstyle/intelli-j checks/edits as PR merge conflicts were resolved on Git
27 (other comment)
Duplicate of #17
28 (other comment)
Duplicate of #17
29 (other comment)
Duplicate of #24
30 (other comment)
Duplicate of #24
31 (other comment)
Once the final methods necessary are confirmed, tests will be incorporated at the end.
32 (other comment)
ok to review?
33 (other comment)
1500 is the default dismissal time inputted for all students, hence IMO, make UG clearer for testers to catch this.
34 (other comment)
Minor Formatting Fix - UG
35 (other comment)
Good to revamp our error checks for all invalid inputs - also test them rigorously and error displayed should correspond - use the Message class to streamline, ab3 is inaccurate in error checks for invalid input
36 (other comment)
Think we can address this in 2 ways -
Update UG to reflect that students can be the same EXCEPT Unique ID (and test rigorously to make sure this doesnt brick other functions)
Do not allow a student with exactly the same details by running checks whenever student is added or edited
37 (other comment)
im not sure what is wrong with this..??
38 (other comment)
Clarify this in UG - remove the word Ongoing to prevent confusion
39 (other comment)
40 (other comment)
images + videos maybe?
41 (other comment)
ok, make this clearer perhaps in training sectino or under FAQ
42 (other comment)
ok i think this can be solved if we prevent the marking of attendance of future trainings, coaches should only be able to mark past + ongoing trainings (perhaps lets change the heading there to past + ongoing)
43 (other comment)
duplicate of error issues
44 (other comment)
UI, expand box
45 (other comment)
erm, throw error or display this? or fix UG wording?
46 (other comment)
Okay, this seems to be a problem for everyone, we should deal with the 001 / 1 / 01 and standardise across all displays and input
47 (other comment)
hmm, doesnt this mean multiple tags allowed?
48 (other comment)
no, it is not possible to remove dismissal time
49 (other comment)
duplicate of ID issues
50 (other comment)
duplicate of attendance marking future training issue
51 (other comment)
error message streamlining
52 (other comment)
ok, yes we need to add bad-students to sample data
53 (other comment)
duplicate of ID issues
54 (other comment)
consider command overlap
55 (other comment)
good catch, edge case that should be tested too
56 (other comment)
57 (other comment)
yes, make it clear in UG dismissal time means dismissal time from SCHOOL
58 (other comment)
duplicate
59 (other comment)
ab3 functionality, no need to change
60 (other comment)
ok, lets fix this error message
61 (other comment)
hmm, lets remove the 3 hour concept
62 (other comment)
explain in UG why dismissal time should be searched before
63 (other comment)
perhaps under faq
64 (other comment)
Not an issue - ab3
65 (other comment)
user preference- sorting
66 (other comment)
modify parser
67 (other comment)
resolved with refactor to .withResolverStyle(..STRICT)
68 (other comment)
ab3
@andreatanky
(22 comments)1 (commented on others PR)
address should be module code i think!
2 (commented on others PR)
String Address can be changed to Module code
3 (commented on others PR)
Perhaps change Address class to module code class after merging for module code field is done
4 (commented on others PR)
Maybe example of name can be suited to assignment names more but its a minor problem so LGTM! 😃
5 (commented on others PR)
Perhaps comment can be changed to just 'module code'? Since it is applicable to both lessons and assignments
6 (commented on others PR)
is there an extra line at the top?
7 (commented on others PR)
Agreed. How about academic schedule?
8 (commented on others PR)
isRemindTypo would be better from my perspective! (Code consistency)
9 (commented on others PR)
Perhaps comment here can be removed!
10 (commented on others PR)
Likewise for here, but if we need it in the future we can leave it first
11 (commented on others PR)
Perhaps comment here can be removed!
12 (commented on others PR)
Is there a url/ prefix as a command?
13 (commented on others PR)
Another suggestion is that instead of "LOW", it can be replaced with priority.LOW_PRIORITY
14 (commented on others PR)
Perhaps priority can be named as updatedPriority for consistency? But current one is still fine!
15 (commented on others PR)
prioritize spelt wrongly! priority too
16 (commented on others PR)
or perhaps marks the 3rd assignment as not done?
17 (commented on others PR)
Perhaps replace "scheduler" with "suggested scheduled time slot"?
18 (commented on others PR)
Likewise for this!
19 (commented on others PR)
Perhaps this too!
20 (commented on others PR)
for mac its jus called terminal LOL
21 (commented on others PR)
Security and Privacy Settings can be italicised instead of using a mark up 😃 Would be good to include "modify your...... to accept anonymous files...."
22 (commented on others PR)
How about 'Mac uses the Terminal application to access its command prompt while ubutu.....'. It can be made more user centric by adding 'If your computer runs with Ubuntu or MacOS, the following instructions is applicable but do note that....'
23 (commented on own PR)
It is a personal portfolio to indicate our contributions. I used the sample content for the time being. (Part of AboutUs)
24 (commented on own PR)
Above examples are under 'add' command.
25 (commented on own PR)
Amended!
26 (commented on own PR)
Next two weeks might sound like this week is excluded
27 (commented on own PR)
next two weeks is already excluding this week
28 (commented on own PR)
Amended!
29 (commented on own PR)
amended!
30 (commented on own PR)
Amended!
31 (commented on own PR)
Amended! Tried to use as much passive language as possible
32 (commented on own PR)
Amended!
33 (commented on own PR)
I don't remember putting a null here but im going to fix it now!
34 (commented on own PR)
amended!
35 (commented on own PR)
amended!
36 (commented on own PR)
amended!
37 (commented on own PR)
amended!
38 (commented on own PR)
amended!
39 (commented on own PR)
amended!
40 (commented on own PR)
amended!
41 (commented on own PR)
amended!
42 (commented on own PR)
amended!
43 (commented on own PR)
amended!
44 (commented on own PR)
Amended!
45 (commented on own PR)
Amended!
46 (commented on own PR)
Amended!
47 (commented on own PR)
Amended! Likewise for the other classes
48 (commented on own PR)
😄
49 (commented on own PR)
Amended!
50 (commented on own PR)
Amended!
51 (commented on own PR)
Amended!
52 (commented on own PR)
Amended to make it sound a tad better LOL
53 (commented on own PR)
WOW AMENDED thanks for eyeballing
54 (commented on own PR)
Amended here as well
55 (commented on own PR)
Amended!
56 (commented on own PR)
Amended!
57 (commented on own PR)
Yeap!
58 (commented on own PR)
multiple keywords are only allowed for the same type of field though! I will amend later to see how i can btr phrase it 😃
59 (commented on own PR)
Amended!
60 (commented on own PR)
Amended!
61 (commented on own PR)
Amended!
62 (commented on own PR)
Thought "you need to complete soon" sounds a bit more impactful 😂
63 (commented on own PR)
Fixed!
64 (commented on own PR)
its correct! Message displayed is "Deleted Assignment(s): Name of assignment ......."
65 (commented on own PR)
I havent done the test cases proper 😂 had to change the initial test cases because the range is different now
66 (commented on own PR)
amended!
67 (commented on own PR)
amended!
68 (other comment)
Added more changes to the UG
69 (other comment)
LGTM!
@GeNiaaz
(21 comments)1 (commented on others PR)
Just a minor grammatical error: code is written
2 (commented on others PR)
Good contribution
3 (commented on others PR)
Can consider linking this to your commit?
4 (commented on others PR)
Link this to your commit too? 😃
5 (commented on others PR)
Good implementation of the Association class, we'll see how this plays out when we build the subsequent features.
6 (commented on others PR)
good one, makes it more specific 👍
7 (commented on others PR)
small grammatical error here: that have assignee named...
8 (commented on others PR)
same grammatical error here: that have assignee named...
9 (commented on others PR)
good spot! 💯
10 (commented on others PR)
You haven't implemented it yet?
11 (commented on others PR)
Maybe return a PersonName here instead of a string?
12 (commented on others PR)
Might be better to compare PersonName objects instead of strings
13 (commented on others PR)
Good spot! 💯
14 (commented on others PR)
Good that you made it clearer
15 (commented on others PR)
WOW this has been bugging me for the longest time, thanks for finding and changing it
16 (commented on others PR)
Why set it to null here? Why not declare the variable below.
17 (commented on others PR)
Good adhering to Law of Demeter
18 (commented on others PR)
Thank you for doing god's work in removing Meeting associated classes 👍🏾
19 (commented on others PR)
Good test cases, and good coverage. 💯
20 (commented on others PR)
What is the purpose of this test if I may ask?
21 (commented on others PR)
But what's the point, I mean
If it is equal or not, does it do anything useful?
22 (commented on own PR)
Yes indeed, I will also change the project names to more appropriate "project-like" names too. But for now I just want to get the Name refactored and to fix all the errors. On the third PR when I refactor the Address and tags, I will change all the testcases and such.
If I change it now, it will be a lot more time-consuming.
23 (commented on own PR)
My bad kind sir, I shall rectify this right away
24 (other comment)
For the Leader Object, you want to make it an instance of a Person? Such that it can contain email, address etc. I have included that in my implementation of Teammate. Lemme change that to Person then maybe your Leader can be an instance of Person too. This way you dun have to create email classes etc for the Leader
25 (other comment)
I approved the PR which @TCQian pushed to fix it, this issue is now defunct
26 (other comment)
Got it, thanks
27 (other comment)
Yes this is possible, because it is possible and indeed likely that two people in a team may have the same name. They are differentiated by their Git UserName
28 (other comment)
Duplicate issue, same as #236 , will close this.
29 (other comment)
Fixed in #304
@cwenling
(21 comments)1 (commented on others PR)
this should be email address
2 (commented on others PR)
should the repository link in line 11 be changed as well?
3 (commented on others PR)
might be more intuitive if the variable name is the same as the task name?
4 (commented on others PR)
this function works in Tr4cker too. maybe we should keep the corresponding version of this line?
5 (commented on others PR)
this might be an extra line
6 (commented on others PR)
might want to surround the "prepare for tp tasks" with quotation marks
7 (commented on others PR)
may want to keep the t in task as lowercase
8 (commented on others PR)
should this keep the private access, and methods that use this call fromZeroBased(int) or fromOneBased(int) ?
9 (commented on others PR)
would it be better to wrap the date time inside deadline with another class. so that we can just .dateTime instead of calling toString()
10 (commented on others PR)
could name it MESSAGE_FUTURE_CONSTRAINS to be clearer
11 (commented on others PR)
could these 2 if blocks be abstracted out? perhaps a method to check if the dayOfDeadline is contained inside the hashmap
12 (commented on others PR)
if ur checking separately for TODAY, perhaps TODAY does not need to be inside the hashmap?
13 (commented on others PR)
should be named getTr4cker_success() or something that implies test
14 (commented on others PR)
should these be changed to VersionedTr4cker too?
15 (commented on others PR)
should this section keep the original to reflect tr4cker instead of addressbook?
16 (commented on others PR)
consider more direct language (you can view an overview...)?
17 (commented on others PR)
It might be helpful to show a before and after of executing the command, since the adding of the todo can be seen in a different tab.
18 (commented on others PR)
"![result for 'find CS1231S Mission']" would need to be changes to the CS2103 version too.
19 (commented on others PR)
might be fine to keep it as : : around the information_source
this makes an emoji ℹ️
20 (commented on others PR)
💡 this too!
21 (commented on others PR)
perhaps list
be above mark as done
22 (commented on own PR)
would the use of a unique "today" parameter be better?
23 (other comment)
Merged #19
24 (other comment)
Merged #12
25 (other comment)
@codecov-io
please comment
26 (other comment)
@codecov-io
@Diwu-Yi
(21 comments)1 (commented on others PR)
Perhaps we can specify at this point: all ingredients have a default unit ? eg: Liquids: Litre; Solids (including toppings): KG
2 (commented on others PR)
Perhaps the naming of this field could be changed to isArchived to show that ArchiveStatus can only be true or false ?
3 (commented on others PR)
okay, sure
4 (commented on others PR)
I don't think the -1 should be removed
5 (commented on others PR)
Please change to Employee Directory section of Main View as we have discussed. Thanks
6 (commented on others PR)
Same issue here.
7 (commented on others PR)
Same issue here.
8 (commented on others PR)
Same issue here.
9 (commented on others PR)
same issue this part.
10 (commented on others PR)
Same issue here.
11 (commented on others PR)
Same issue here.
12 (commented on others PR)
Same issue here.
13 (commented on others PR)
Same issue here.
14 (commented on others PR)
Same issue here
15 (commented on others PR)
Same issue here
16 (commented on others PR)
For previous eg, you used a different sentence starter "Assume that". I think maybe it is better to follow through?
i.e. "Assume that you want to..."
However this is very optional
17 (commented on others PR)
Typo , should be matched not marched ?
18 (commented on others PR)
Same issue here ? May just change the "Assume that", less work
19 (commented on others PR)
Please change to Main View. Thanks
20 (commented on others PR)
Same issue here.
21 (commented on others PR)
Same issue here.
22 (commented on own PR)
Noted, will edit accordingly.
23 (commented on own PR)
Indeed, it should not be a prefix !
24 (commented on own PR)
Right, thanks for the suggestion !
25 (commented on own PR)
Yes, the original version did not work out, should be able to complete this by tomorrow !
26 (commented on own PR)
I followed from the EditCommand, so I guess this is fine ?
27 (commented on own PR)
True, will change !
28 (commented on own PR)
Noted, will add in.
29 (commented on own PR)
ya, I will check it as well !
30 (commented on own PR)
yep, will add the access modifier.
31 (commented on own PR)
yep, will detele.
32 (commented on own PR)
noted, editing now
33 (commented on own PR)
I tried and indeed it is not able to parse, will change now, thanks !
34 (commented on own PR)
Okay, I will take note of this.
35 (commented on own PR)
true, will remove.
36 (commented on own PR)
Noted, I must have modified it by accident, will change back!
37 (commented on own PR)
Noted for all, will change back to the original version!
38 (commented on own PR)
I think this one the updated version is correct because the original version does not really work.
39 (commented on own PR)
I agree, will change.
40 (commented on own PR)
I don't think so. This is because I used the header "situation" in the table for explanation so I believe "the situation is" here will make more sense to users because it is extra clear that I am referring back to the table. Hence, I will not change the sentence to avoid "the situation is" . Thanks.
41 (commented on own PR)
Noted, I think changing the structure like this is okay, will change!
42 (commented on own PR)
Noted, will delete , thanks.
43 (commented on own PR)
Indeed, will change.
44 (commented on own PR)
I didn't notice an issue with this, but sure, will change to make it flow.
45 (commented on own PR)
yea, will change
46 (commented on own PR)
I double checked and not sure why this is happening as well. To be safe, I will just delete the current one and reupload, thanks
47 (commented on own PR)
Noted with thanks
48 (commented on own PR)
Noted, thanks
49 (commented on own PR)
Noted, thanks
50 (commented on own PR)
Noted, thanks
51 (commented on own PR)
Noted, thanks
52 (other comment)
#6 AboutUs with Diwu-Yi's info
53 (other comment)
#7 Update UG with Diwu-Yi's section: add, delete and set instructions
54 (other comment)
#10 Update DG with Diwu-Yi 's section: use cases, did not touch the rest.
55 (other comment)
Complete the feature
56 (other comment)
#97
57 (other comment)
#105
58 (other comment)
#105
59 (other comment)
#127
60 (other comment)
#128
61 (other comment)
#146
62 (other comment)
#147
63 (other comment)
Follow AB3 storage implementations, the behaviour is expected.
64 (other comment)
Thank you for your feedback.
However, this application tCheck, is designed for an imaginary bubble tea chain, T-Sugar, which only uses these six ingredients for all their drinks. The design is in this way to reduce the amount of work of setting up that need to be performed by a stall manager as all available ingredients are pre-defined for them so they can start using it easily.
We will explain this design and the purpose in the user guide.
65 (other comment)
Thanks for the feedback.
This behaviour is expected because the invalid prefix is in fact processed as the value entered for the previous valid prefix. For example, in the first screen shot, T/20 is processed as the amount entered for "/S" and thus the error message for invalid amount is thrown. We have also verified with the prof that this behaviour is inherited from AB3.
66 (other comment)
Thanks for the feedback.
This behaviour is expected because the invalid prefix is in fact processed as the value entered for the previous valid prefix. For example, in the screen shot, n/1000 is processed as the amount entered for "i/" and thus the error message for invalid amount is thrown. We have also verified with the prof that this behaviour is inherited from AB3.
67 (other comment)
Thanks for the feedback.
This behaviour is expected because when duplicate valid prefixes are found, only the last prefix and its value are accepted and processed. For example, in the screen shot, BSPM/-1 is ignored. We have also verified with the prof that this behaviour is inherited from AB3.
68 (other comment)
Thanks for the feedback.
This behaviour is expected because the invalid prefix is in fact processed as the value entered for the previous valid prefix. For example, in the screen shot, ABCD/ is processed as the amount entered for "BSPM/" and thus the error message for invalid number is thrown. We have also verified with the prof that this behaviour is inherited from AB3.
69 (other comment)
Thanks for the feedback.
However, we have double checked and found out that we did tell users that the ingredient names are case sensitive to ensure consistency with the display content in GUI. We will make this note more obvious in the UG.
70 (other comment)
Thanks for the feedback.
This behaviour is expected because this is feature of the parser. An error for a prefix can be fixed with another, because when duplicate prefixes are detected, only the last one and its content is accepted and processed. We have also verified with the prof that this behaviour is inherited from AB3.
71 (other comment)
Thanks for the feedback.
However, the trade-off here is between asking the user to remember the sequence of all ingredients which can be quite challenging and using a longer command line. After careful evaluation we decide that it is better to stick to a longer command line to ensure easy usage. The prefixes are chosen as such : whenever it is possible to use the first alphabet, use it. When duplication occurs, use the First letter of the 2nd word. If that is not unique, use the second letter in the first word. So the logic is clear for users to get use to. Thanks.
72 (other comment)
Thanks for the feedback.
However, the trade-off here is between being very accurate and having a command that is too long. For instance, m/10.000002. Hence, when designing this feature, we consulted some industry experts and found out that for one stall as a whole, keeping an inventory to the nearest KG/L is more than sufficient and a very high accuracy is not the stall manager's concern. Thus, we decide to only accept integer. We will make this point extra clear in the user guide.
73 (other comment)
#229
74 (other comment)
#229
75 (other comment)
#229
76 (other comment)
Resolve conflicts
@AaronnSeah
(20 comments)1 (commented on others PR)
I think the check is failing as there is no new line at the end?
2 (commented on others PR)
I think that clears the GUI might not be clear enough as the the contact list is also a GUI. You could consider chatbot GUI or something that it is clearer?
3 (commented on others PR)
or clear the chat messages in the chatbot GUI
4 (commented on others PR)
I think https://github.com/se-edu/StonksBook-level3/tree/master/src/main/java/seedu/address/MainApp.java
should be changed to
https://github.com/AY2021S1-CS2103T-T11-1/tp/blob/master/src/main/java/seedu/address/MainApp.java
5 (commented on others PR)
the lack of new line before the image is intentional. Will it mess with the width attribute?
6 (commented on others PR)
the lack of new line before the image is intentional. Will it mess with the width attribute?
7 (commented on others PR)
no problem! just checking 👍
8 (commented on others PR)
I think setting sample sales and remark for more than half the contacts would be good, especially for sales list
9 (commented on others PR)
I think this will get very costly. Is there an alternative way to do this? like a static counter?
10 (commented on others PR)
I think the naming is quite confusing for the command archive remove.Would naming personToArchive to archivedPerson and archivedPerson be named to newUnarchivedPerson or something be clearer?
11 (commented on others PR)
Could you remove the unused import?
12 (commented on others PR)
unused import here too
13 (commented on others PR)
this is a feature, to have the contact list sorted by default. is there a reason it is removed?
14 (commented on others PR)
I think naming contact archive to archive add or archive would be better than separating an archive functionality into two different naming conventions
15 (commented on others PR)
how about creating a static method doing this, then do private static final counter = methodcall()? then you call once every time you boot up instead of every insertion?
16 (commented on others PR)
I think min yih's PR of list all sales has done this part
17 (commented on others PR)
the example usage is not updated?
18 (commented on others PR)
You could consider renaming to latestContactId? I think the name can be clearer about the intention of this variable.
19 (commented on others PR)
you might want to consider only adding the text if its not blank?
20 (commented on others PR)
will unit tests be added in future PR?
21 (commented on own PR)
oh thanks for the catch!
22 (commented on own PR)
Thanks for the suggestion, I will add them now!
23 (commented on own PR)
I will be creating PRs to update this file before every end of milestone!
24 (commented on own PR)
We can actually add a meeting for year 0001, we can sync up in v1.4 instead?
25 (commented on own PR)
@hakujitsu file renamed to AllListCommand for both show all and for specified contact.
changes are that it extends from abstract class ListCommand which stores some static variables and a common method (formatting sale list) that was abstracted from your previous class so that both our classes can use it.
On top of that, message strings are set as static variables to be consistent with other command design. Do you let me know what you think!
26 (commented on own PR)
@hakujitsu parser logic has changed abit to adapt to my sale list subclass as well
27 (commented on own PR)
thanks for the check! I will try to fix my image settings to look like yours asap
28 (other comment)
Completed
29 (other comment)
Completed
30 (other comment)
Completed
31 (other comment)
will merge this last after all pull from master
32 (other comment)
if possible, we merge first then fix all the code style after all the merges in a separate PR
33 (other comment)
Could you rename it to be more specific to meetings/ reminders? cause title seems general
34 (other comment)
Added @hakujitsu as reviewer as some of her code has been modified as discussed
35 (other comment)
I will work on this tomorrow
36 (other comment)
adding @jmleong666 as reviewer as dialogbox.fxml is your code
37 (other comment)
thanks @Asthenosphere , I will crop those out, but there are some images with a new window though I think it will be hard to crop the header of the second window
38 (other comment)
@Asthenosphere I will merge this myself!
39 (other comment)
descending and ascending does not have the same meaning
40 (other comment)
No problem on the change on my part, thanks!
@lll-jy
(20 comments)1 (commented on others PR)
Did you see TCQian.md?
2 (commented on others PR)
May need to align capitalization?
3 (commented on others PR)
Would it be better to put INDEX1 and INDEX2 as code (i.e. in ``)
4 (commented on others PR)
May quote INDEX as code
5 (commented on others PR)
May quote 'list' as code?
6 (commented on others PR)
deadline number
may be changed? e.g. deadline datetime
7 (commented on others PR)
Similar as above
8 (commented on others PR)
This may need to be changed?
9 (commented on others PR)
I can see that all your code works. But would it be easier if we use java LocalDate
and LocalDateTime
to deal with it? And it may be easier for us in the future work if we want to filter projects by deadline.
10 (commented on others PR)
All the examples may need to updated according to the validation regex.
11 (commented on others PR)
This file may need to be changed (for deadline regex)
12 (commented on others PR)
I think we'd better keep the format aligned, say use DEADLINE_DESC_AMY
as the name. And we can change AMY
to project names together for future refactoring work.
13 (commented on others PR)
Same as the above comments about naming
14 (commented on others PR)
Same as above comments about naming.
15 (commented on others PR)
This is an email address rather than a repo address right?
16 (commented on others PR)
Will this work well with the task filter command?
17 (commented on others PR)
May you revert this line first? Because some of other code that I wrote is dependent on the filtered project list, and deleting this line may cause some bugs at this stage. I will probably deal with the problem later and delete this line together.
18 (commented on others PR)
The work of Tian Fang this week.
19 (commented on others PR)
I think one leave
command would be enough. But we can keep this for now.
20 (commented on others PR)
Haha may delete this dummy debugging code.
There are several system output elsewhere. You may consider delete them all changing them to logging?
21 (other comment)
Other bugs fixed:
Output box
Losing focus
@josiahkhoo
(20 comments)1 (commented on others PR)
Just wondering if it would be better if MCQ
was named MultipleChoiceQuestion
to standardize with our OpenEndedQuestion
class. Would be more descriptive for whoever is looking at the code base as well.
2 (commented on others PR)
Would be good if you can include the toString()
methods for the Answer and Question class, that way when it is implemented in the GUI it would be easier to render it seperately (since the current way to access the string form of the question and answer is through the Flashcard class).
The current toString()
method in FlashCard is still useful when interacting with the application through CLI 👍
3 (commented on others PR)
Looks good! Just wondering whether it would be better if we made userAnswer an Answer type also, that way we can potentially do more things with it in the future.
If userAnswer was an Answer type, we can just override .equals()
as a way of comparison to check if userAnswer is indeed Answer.
4 (commented on others PR)
I think this should be number 6
5 (commented on others PR)
Empty point
6 (commented on others PR)
updates* save file
7 (commented on others PR)
Agree with @joshtyf! We would eventually have to update the documentation anyways, so would be good if we can do it incrementally instead of waiting all the way to the end to update 😄
8 (commented on others PR)
Do you think we should make this more specific? Perhaps call this AddOpenEndedQuestionCommand
because we would eventually need to have a command to add a multiple-choice question.
9 (commented on others PR)
Nice abstraction!
10 (commented on others PR)
Nice EP!
11 (commented on others PR)
Can we name this differently to avoid misrepresentation and confusion? Think we used value for Question
and Answer
12 (commented on others PR)
Don't think we need VALIDATION_REGEX
if we are already checking it against Difficulties.values()
13 (commented on others PR)
Perhaps you can make use of .reduce()
to make this method even more concise.
return tagsToMatch.stream().reduce(("with tags ", (curr, next) -> curr + next.toString() + " ").trim()
14 (commented on others PR)
QuickCache
is missing a :
infront of it. Believe it should be :QuickCache
15 (commented on others PR)
Same as the comment above.
16 (commented on others PR)
Lets standardize to "add q/question ans1 c/first c/second"
(with the inverted commas)
17 (commented on others PR)
Think requireNonNull(difficulty)
should come before difficult.isEmpty()
since you can't call isEmpty()
on null
requireNonNull(difficulty);
if (difficulty.isEmpty()) {
return new Difficulty(Difficulties.UNSPECIFIED.name());
}
18 (commented on others PR)
Small typo here, I think you meant 'The INDEX refers to the index number'
19 (commented on others PR)
Think we don't need this question because we have an example of an OEQ in the next question.
20 (commented on others PR)
It should be OpenEndedQuestion and MultipleChoiceQuestion containing Answer.
21 (commented on own PR)
I see! I think I can change it to value
in that case, I changed it to choice
to standardize with the other classes but it seems content
or value
(which was used by the initial AB) would be clearer.
22 (commented on own PR)
Updated in the next commit, can you help me to take a look @joshtyf?
23 (commented on own PR)
Fixed in 1d082d2
24 (commented on own PR)
Fixed in 1d082d2
25 (commented on own PR)
Fixed in 1d082d2
26 (commented on own PR)
Fixed in 1d082d2
27 (other comment)
@ChenXJ98 can you help with merging this into master 🙇♂️
28 (other comment)
closes #42
29 (other comment)
@ChenXJ98 we will also need to integrate this into the saving of flashcard so that we can retain the times tested information across instances of QuickCache
30 (other comment)
resolves #46
31 (other comment)
clear
command has already been implemented.
32 (other comment)
Thanks @joshtyf for updating the UML diagrams!
33 (other comment)
Moved to v1.3
34 (other comment)
Hi @BILLXYR, thank you for pointing this bug out. We have resolved this in #206.
35 (other comment)
Hi @Asuraxsoul, thank you for pointing this bug out and the suggestion. We have resolved this in #206.
36 (other comment)
Hi @Asuraxsoul, thank you for pointing this bug out and the suggestion. We have resolved this in #206.
37 (other comment)
This contains some commits from #218, so should look at that first before merging this.
@chewypiano
(20 comments)1 (commented on others PR)
Perhaps can refactor out a string format method in the superclass (i.e. Macronutrient) that formats the toString() method found in the Protein, Carb, Fat subclasses so as to reduce code duplication.
2 (commented on others PR)
Yes, this PR has some minor errors within some of the doc files etc. Will be fixed, but wanted more to show the refactoring as a whole and gather input on that. Still, thanks for pointing out, will look to fix the nits soon.
3 (commented on others PR)
Should this be -> instead of --> ?
4 (commented on others PR)
Similar to previous comment, shouldn't this be -> instead of -->?
5 (commented on others PR)
I think can just remove these changes for macro, Joey made changes for this in a separate PR.
6 (commented on others PR)
Is this try-catch necessary?
7 (commented on others PR)
By changing boolean value upon catching from true to false, does this change the behaviour as specified in UG?
8 (commented on others PR)
This method may be wrongly named. Perhaps getSampleFoods() ?
9 (commented on others PR)
Not sure if this matters for coding standard, but collect
is most usually denoted as a verb, maybe change name of HashSet to collectedSet
or collectionSet
or tagCollection
?
10 (commented on others PR)
Should this be written slightly differently? Maybe Assertions.assertTrue(Carbohydrate.isValid(Carbohydrate.newDefault()));
instead?
Similar instances for other Macronutrient tests
11 (commented on others PR)
These 2 are wrongly labelled. foodWDifferentCarbs
should use carbohydrate1
and not fat1
when initialising and vice versa with foodWDifferentFat
.
12 (commented on others PR)
In this test class, TypicalFoods
is imported and subsequently TypicalFoods.getNasiLemak()
etc. are called to invoke the example foods. However in previous test classes (for example FindCommandTest.java
), each individual command is imported i.e. import static jimmy.mcgymmy.testutil.TypicalFoods.getNasiLemak;
.
Though not really a big issue, maybe standardise to the latter method, as is common with most of our code base. This occurrence is repeated at JsonMcGymmyStorageTest.java
.
13 (commented on others PR)
Sure, no problem.
14 (commented on others PR)
Okay sure
15 (commented on others PR)
Great!
16 (commented on others PR)
I think there's a typo here and in the test method names below; should be find_empty....
instead of fnd_...
. Just a minor nit.
17 (commented on others PR)
Maybe Amount can only take in values between 0 and 1000
. I believe 0
is still acceptable as it is also the default value. I'm not too sure atm whether our upper bound is 1000
or 999
.
18 (commented on others PR)
I think this is for the index, not the macronutrient value?
As Joey mentioned correctly, we are limiting macronutrient values to 1000g each. Firstly because exceeding 1kg of any type of nutrient for a single dish does not make much sense so limiting it to 1000g does not limit its utility. Second and more importantly, exceeding 1000g of macronutrient will increase total calorie count by a lot, which in turn will cause the total calorie count to reach integer overflow easily.
Basically, yeah we should limit protein, carb, fat value to 1000g.
19 (commented on others PR)
These comments do not exactly tally with the subsequent assertEquals arguments. Similar instances found below. Just a minor nit.
20 (commented on others PR)
Variable name does not match string content and MM cannot be 20, just minor naming nit here
21 (commented on own PR)
I think we should keep this as just
assertThrows
instead. We should stick to the static asserts for tests
Our Assert
class only has the assertThrows
method. I think it is fine for this case since we are not really unnecessarily importing. Also this was automatically optimised by intelliJ.
22 (commented on own PR)
Sure, makes sense.
23 (commented on own PR)
Alright, will change naming. Regarding your second point, I guess that makes sense. Thanks for input!
24 (commented on own PR)
Code didn't work without this line lol, but I am still refactoring, this is just to make it work for now.
25 (commented on own PR)
Thanks, this was auto generated code I think, will look to refactor other bits as well soon.
26 (commented on own PR)
Yes, but it is for different parameters. This way find food1
is still allowed but you can also do find food1 -t lunch
to get food1 from lunch only.
27 (commented on own PR)
Yep, was thinking of doing this. I used null just to make the code functional, will refactor tomorrow probably.
28 (commented on own PR)
Instead of a dummy class, do you think doing foodPredicateParameter.getValue().orElse(food -> true);
would be better?
29 (commented on own PR)
Yeah, this is intended, so that we don't restrict the user from having to input something as name/tag search. For example, if we implemented it as you said, the user could not do find -d 21-10-2020
to find food items on the 21st of October. Instead, user would have to type in some sort of food name/tag as a mandatory parameter such as find some food -d 21-10-2020
which would filter out only the food items with name/tag that includes either "some" or "food" + being on that date, making it less intuitive and harder to use the find command meaningfully.
At the moment there is a check for empty parameters but for your particular concern, find
on its own will still work, functioning similar to list
, although I could just as easily change to it returning empty list.
30 (commented on own PR)
I think I only briefly made mention of this under design considerations in DG, do I need to elaborate more on this or can it just be elaborated over in the UG since it concerns the user more?
31 (commented on own PR)
Yeah exactly right, McGymmy assumes parameters flagged ""
are mandatory.
32 (commented on own PR)
Yeah this was initial code just to make it work, as mentioned earlier.
33 (commented on own PR)
Good idea, might do this.
34 (commented on own PR)
Though not great, I'll probably leave it since we would need to change quite a bit more if we want to maintain the mandatory check for flag-less i.e. ""
parameters while letting find still search in a flag-less manner i.e. find food
. I might just create an issue for this.
35 (commented on own PR)
Alright sure!
36 (other comment)
The CI test says that you are missing the shadow plugins
Seems like a github actions issue. This happens from time to time.
Closing and reopening the PR should restart the CI process (hopefully fixing this).
Noted with thanks.
37 (other comment)
Might also add an extension like this:
find -all [keyword 1] [keyword 2] ...
to find foods that match all of the keywords
find -some [keyword 1] [keyword 2]...
to find foods that match some of the keywords
The find -some
is inherently adopted, as in it works like that currently. The find -all
looks good, we can probably do so in future if needed.
38 (other comment)
Might want to introduce the Flag term in the introduction of UG
I think i already did this.
39 (other comment)
Unable to replicate said bug. Both relative and absolute paths seem to be working for Mac console.
40 (other comment)
@JoeyChenSmart I think just need to specify in the UG under the edit
, tag
commands etc. that index must be at the front.
41 (other comment)
TODO: Minor change in tag/untag command execute method.
42 (other comment)
Priority v.low at the moment, as leaving it unchanged is fine as well.
@justacasul
(20 comments)1 (commented on others PR)
index.getOneBased() - 1 is just index.getZeroBased()?
2 (commented on others PR)
what is this haha
3 (commented on others PR)
toAdd is can get confusing here, consider another name (deletedRecipe/updatedRecipe/etc)?
4 (commented on others PR)
Do we need PersonListCard.fxml?
5 (commented on others PR)
What about recipes?
6 (commented on others PR)
Might be good to add an example like you did with Item
7 (commented on others PR)
your optimal size / an optimal size / the optimum size might be better
8 (commented on others PR)
Should a TODO be placed here?
9 (commented on others PR)
Might be good to have TODO here as well
10 (commented on others PR)
my zheng in the filename is missing a g lmao
11 (commented on others PR)
might want to update the png as well
12 (commented on others PR)
same here
13 (commented on others PR)
might want to update the commands
14 (commented on others PR)
same here
15 (commented on others PR)
Will there be an item named alice bob charlie?
16 (commented on others PR)
too chim, need 200 iq to understand
17 (commented on others PR)
tuturu mayushii desu
18 (commented on others PR)
remove this lmao
19 (commented on others PR)
Is PrintableRecipe used only once in it's lifetime? I was wondering whether overloading the constructor to create a version with offset = true might be better.
Otherwise, if it's used multiple times in different situations, there might be a need to reset the offset to false.
20 (commented on others PR)
if displayedIndex is used only for this one situation, why not just do new RecipeCard(printableRecipe, X - 1) when calling it?
21 (commented on own PR)
Huh might be because I deleted everything and git cloned the whole tp again
22 (commented on own PR)
Idk what difference this makes lmao
23 (commented on own PR)
yee
@athuyaoo
(20 comments)1 (commented on others PR)
How come block doesn't need to be non null?
2 (commented on others PR)
are block B and block b 2 different blocks?
3 (commented on others PR)
Perhaps reducing the space by 4 would help conform to coding standards better.
4 (commented on others PR)
Perhaps having VALID_BLOCK and VALID_ROOM will be better for conforming with standards
5 (commented on others PR)
perhaps you can split this up to VALID_BLOCK and VALID_ROOM, so that you can reuse them? (especially in TypicalPersons.java)
You can make VALID_BLOCKROOM with the 2 as well.
6 (commented on others PR)
I think got small typo here. Matriculation number and gender?
7 (commented on others PR)
assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB
+ BLOCKROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND
+ MATRICULATION_NUMBER_DESC_BOB + GENDER_DESC_BOB,
Should the indentation be 8 spaces here? https://se-education.org/guides/conventions/java/intermediate.html#layout
8 (commented on others PR)
assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB
+ BLOCKROOM_DESC_BOB + GENDER_DESC_BOB + TAG_DESC_FRIEND
+ MATRICULATION_NUMBER_DESC_AMY + MATRICULATION_NUMBER_DESC_BOB,
Should the indentation be 8 spaces here? https://se-education.org/guides/conventions/java/intermediate.html#layout
9 (commented on others PR)
I think it's better to remove this space?
10 (commented on others PR)
Same here, additional line can be removed.
11 (commented on others PR)
Thanks
12 (commented on others PR)
sorry StudyGroups and studentGroups are a bit different I feel?
13 (commented on others PR)
maybe can change these to example student groups like basketball, soccer, choir etc?
14 (commented on others PR)
can change studentGroup here to something else like basketball/ soccer
15 (commented on others PR)
Same here
16 (commented on others PR)
Same here
17 (commented on others PR)
Same here
18 (commented on others PR)
I think it might be more suitable to change this to studentGroups from StudyGroups?
19 (commented on others PR)
I think you can replace this with the actual image right?
20 (commented on others PR)
Why is this private static? Would it be better to separate it as another class?
21 (commented on own PR)
Good catch. Thanks
22 (commented on own PR)
Thanks, will change.
23 (commented on own PR)
Sure, thanks.
24 (commented on own PR)
No, so far all the model properties (Address, Email, Name, etc) all has public final variables to store their values.
25 (commented on own PR)
Fixed
26 (commented on own PR)
Thanks, Fixed
27 (commented on own PR)
Sure, done
28 (commented on own PR)
Done
29 (commented on own PR)
Done
30 (commented on own PR)
Thanks, resolved.
31 (commented on own PR)
Thanks, resolved.
32 (commented on own PR)
Thanks!
33 (commented on own PR)
Thanks
34 (other comment)
Closed by #25
35 (other comment)
To add table of contents that is standardised with title case.
36 (other comment)
Closed, as minor issue
@TCQian
(20 comments)1 (commented on others PR)
Is it better to use NAME_DESC_A instead of NAME_DESC_AMY?
2 (commented on others PR)
I assume the name of meeting is to be edited too?
3 (commented on others PR)
Wrong constructor Email is invoked?
4 (commented on others PR)
This lines does not match the function. Especially the @code taskTags. Is there any missing refactor for this comment?
5 (commented on others PR)
Is it projectName instead of taskName?
6 (commented on others PR)
Is it projectName?
7 (commented on others PR)
Is it trimmedMeeting?
8 (commented on others PR)
Why do you remove this line?
9 (commented on others PR)
LGTM.
10 (commented on others PR)
"a new task object would be created and passed"?
11 (commented on others PR)
Is this supposed to be in taskcommandtest?
12 (commented on others PR)
make the "Task-related features" bold.
13 (commented on others PR)
make the "Teammate-related features" bold
14 (commented on others PR)
complete word or words?
15 (commented on others PR)
names or name? word or words?
16 (commented on others PR)
Could you please clarify which point should contains full stop and which should not? Why "List all persons....catalogue." has full stop but then "Leaves the current page......scope" has no?
17 (commented on others PR)
Why line is split into 2. It seems like it doesn't exceed the limit of a line of code.
18 (commented on others PR)
Ok!
19 (commented on others PR)
Make sense.
20 (commented on others PR)
Fixed.
21 (commented on own PR)
What task filter command?
22 (commented on own PR)
Alright.
23 (other comment)
Hey, i think this revert is not needed anymore since we're reverting an earlier version of the repo in PR#16
24 (other comment)
Phone -> Deadline
Email -> RepoURL
25 (other comment)
Opened a new branch for this, will close this PR and migrate to another PR.
26 (other comment)
This PR is successor for https://github.com/AY2021S1-CS2103T-W10-3/tp/pull/68
27 (other comment)
Completed
28 (other comment)
Those leaves command might be removed later. Can we implement a stack for handling the statuses? Only a leave command will be used to remove the newest status? Maybe better implementation on reseting the itemsToBeDisplayed during scope switching.
29 (other comment)
The method to get assignees name from the task was changed and it caused the assignees' names can't be retrieved and shown on the taskDashboard. Other project attributes such as person class involve the participation class might get affected by this changes. Could you please edit the TeammateDashboard, TaskDashboard to fix the errors of some methods not found?
30 (other comment)
Amendment will be done by Geniaaz.
31 (other comment)
Latest version is merged. This will be abandoned.
32 (other comment)
Use listprojects command to display the full list of projects after using find command
33 (other comment)
Just startperson for better visualisation
34 (other comment)
It is working fine now.
35 (other comment)
I don't understand this.
36 (other comment)
The scoping is done.
37 (other comment)
Whoever in charge of this please state the way to show full list after filter list in UG
38 (other comment)
Chia Qian Tan, [1 Nov 2020 at 2:49:22 AM]:
for the bug of non synchronic update on teammate and task and project after edit command called is because the itemOnView in project class is not renew and the itemToBeDisplay in model are not updated
To synchronise the update on taskDashboard:
In execute of editTaskCommand, check if the task edited is the taskOnView in Project
If so, add line of project.updateTaskOnView(editedTask) to update the taskOnView, AND model.enterTask(editedTask) to stimulate the update on taskToBeDisplayed in model
Must follow the steps: check if the taskOnView is edited> if so, update taskOnView> enter the task to model, assuming the enterTask in model will handle the taskEdited and display it on dashboard (I am sure it will)
To synchronise the update on teammateDashboard:
In execute of editTeammateCommand, check if the teammate edited is the teammateOnView in project
If so, add line of project.updateTeammateOnView(editedTeammate) to update the teammateOnView, AND model.enterTeammate(editedTeammate) to stimulate the update on teammateToBeDisplated in model
Be aware of the Object type of the teammate/person parsed to the method(updateTeammateOnView,enterTeammate)
Must follow the steps: check if the teammateOnView is edited> if so, update teammateOnView> enter the teammate to model, assuming the enterTeammate in model will handle the teammateEdited and display it on dashboard (yes it will)
To synchronise the update on project, as well as person
If there is a edit project command, I am sure we need to add additional lines to synchronise the project displayed on the dashboard
Same as previous two, check then this time only call model.enter(project) to update the projectToBeDisplayed in model
Im sorry i dare not to edit the command classes because im not familiar with the person and teammate thing
39 (other comment)
Tag should be a word without space. Edit UG
40 (other comment)
This is the correct behaviour because the repo url should end with .git.
41 (other comment)
Tell the user to find a word not an alphabet in the project name in UG.
42 (other comment)
For filter command as well
43 (other comment)
Use github username instead of index.
44 (other comment)
Update the UG.
45 (other comment)
Same as #209
46 (other comment)
Add a label for GitHub username
47 (other comment)
Please remove it.
48 (other comment)
returns
49 (other comment)
Task-related features
50 (other comment)
Teammate-related features
51 (other comment)
Fixed.
52 (other comment)
This application serves the offline users so we can not check the existence of the repo. We will add a note in UG.
53 (other comment)
Same as #234
54 (other comment)
Index.
55 (other comment)
Disallow showing persons list during viewteammate.
56 (other comment)
LGTM
57 (other comment)
@junlong4321 Token can only be read with a space in front. For example, 'add n/PROJECT NAMEdl/DEADLINEru/REPOURLd/PROJECT DESCRIPTIONtg/TAGtk/TASK' with no space in front of every tokens except name token is a invalid command input for add since an add command must includes n, dl, ru, d, tg, tk tokens. I even tested even if i use the special token in the repour such as https://github.com/dl/b.git, it will not cause the b.git after dl/ to be recognised as a deadline input.
@m0nggh
(20 comments)1 (commented on others PR)
I suggest you can add a similar javadoc comment for this method by following the getMedicalConditions() method above (since it is provided already).
2 (commented on others PR)
Unsure if this method should be public (to standardise with the medical conditions methods)
3 (commented on others PR)
Very minor documentation error: 'a' instead of 'an' RedoCommand.
4 (commented on others PR)
I think the variable e is taken from the previous edit command, should use a or something clearer. Same thing for the ReplaceCommand state check portion.
5 (commented on others PR)
Minor nitpick: The variable found sounds a bit vague, just a suggestion to put as foundAnimal or something more specific.
6 (commented on others PR)
Not sure whether undoCommand and RedoCommand are being used here as well.
7 (commented on others PR)
Small nitpick: perhaps you can add the word "below" after figure 2 to standardise with the figure 1 description above.
8 (commented on others PR)
Small nitpick: Maybe can add shown in the label description i.e. GUI "shown" upon...
9 (commented on others PR)
Think this one is for the delete index?
10 (commented on others PR)
May have to modify this since delete should work without finding anymore.
11 (commented on others PR)
I think first time should not be hyphenated?
12 (commented on others PR)
Perhaps you can say 'stored in your ZooKeep book' instead to standardise with what you wrote below.
13 (commented on others PR)
Just a suggestion: find animals with same feed times or similar medical conditions
14 (commented on others PR)
Think the feeding times need to be changed to feed time after we edit it in the code as well.
15 (commented on others PR)
Same as comment above (2 more occurrences below I think)
16 (commented on others PR)
Is this a typo? The image does not seem to load in the preview page.
17 (commented on others PR)
Minor nitpick: "is for anyone" instead of "is anyone".
18 (commented on others PR)
Not sure if I am seeing correctly but the preview does not display the 2 figures to be side by side.
19 (commented on others PR)
Feels like for FAQ maybe we can say its done by everyone? To show teamwork in some sense, just a suggestion.
20 (commented on others PR)
Okay in that case, it should be fine then.
21 (commented on own PR)
I was contemplating on where to put this code under too, I think I will try to put it under the parser class instead. Thanks.
22 (commented on own PR)
I think I needed the category for the printing of the success message for the sort command based on the parameter entered.
23 (commented on own PR)
I think it was because I did not want to input a null as the animal comparator
24 (commented on own PR)
I think i placed it as a tip under the find feature, thanks anyways!
25 (other comment)
Re-create another branch as there are too many merge conflicts to resolve
26 (other comment)
Should we change the json files (e.g. the typicalAnimalsAddressBook) in the test folder as well?
27 (other comment)
Will look at other files to see if there are necessary changes, thanks!
28 (other comment)
I think they are in different files, I can check all together at once actually.
29 (other comment)
I think the white bullet point is because of the further indentation. Not really sure how to solve this.
30 (other comment)
Added a simple preface, please feel free to edit and improve on it before closing this issue. Thanks.
31 (other comment)
Agreed that feed time should probably be matched entirely for a hit. However, I'm not sure if it is strange that id can be matched by substring since finding '1' can find like many animals.
32 (other comment)
I feel like it is okay to just leave them separately since it is difficult to scroll up to refer to such a note/reminder.
@WM71811
(20 comments)1 (commented on others PR)
I guess the parser is under development?
2 (commented on others PR)
can add a javadoc here?
3 (commented on others PR)
similarly javadoc can be added..?
4 (commented on others PR)
similar as above
5 (commented on others PR)
Archive (all emp;oees): here should be employees?
6 (commented on others PR)
I think whoes is a typo?
7 (commented on others PR)
Maybe tag could be be "tags" here?
8 (commented on others PR)
For the example here, maybe can use the format as Example: (Steps + Expected Outcome)? To be consistent with the other parts you have written
9 (commented on others PR)
Same here
10 (commented on others PR)
I am not sure about this, since we may need to explain such tags at front if we are using them?
11 (commented on others PR)
Maybe Monday Friday
in "For example, Monday Friday
will find employees whose tags.." can be changed to c-tag-find Monday Friday
?
12 (commented on others PR)
Maybe can be more consistent on whether to use e.g. or for example. Is "for example" more formal?
13 (commented on others PR)
Are we using tCheckParser for the diagrams? If we are using tCheckParser, then maybe can change AddressBookParser to it.
14 (commented on others PR)
Is UniqueSalesRecordList#asUnmodifiableObservableList()
indeed exposed as Model#updateFilteredSalesRecordList(Predicate>SalesRecordEntry>)
? I think that Model#updateFilteredSalesRecordList(Predicate>SalesRecordEntry>)
is about filtering the list by predicate, while UniqueSalesRecordList#asUnmodifiableObservableList()
means shows the list?
15 (commented on others PR)
Should we include the word "Steps:" above these points?
16 (commented on others PR)
So here would be italics I guess? for result display and tracker
17 (commented on others PR)
I am not sure if we should include the UI part (as in where it will be shown on the GUI) in the first line for the command description? If we include, should we say Sales Tracker inside the Main View?
18 (commented on others PR)
Like in s-update, you did not talk about GUI there, so I am wondering if it should be consistent.
19 (commented on others PR)
Maybe change the passive voice? e.g. You can now see that tCheck has updated... in ....
20 (commented on others PR)
To change the passive voice, maybe say "drink is on top" without "listed"?
21 (commented on own PR)
thanks, resolved!
22 (commented on own PR)
thanks, resolved
23 (commented on own PR)
thanks, resolved
24 (commented on own PR)
thanks
25 (commented on own PR)
updated, thanks!
26 (commented on own PR)
updated, thanks!
27 (commented on own PR)
it automatically become the next line when I save.. so can I leave it as that?
28 (commented on own PR)
I would like to highlight that it is not "reset" before this execution, so I thought it is clearer than isReset..?
29 (commented on own PR)
Noted with thanks
30 (commented on own PR)
Noted with thanks
31 (commented on own PR)
Noted with thanks
32 (commented on own PR)
0k thanks
33 (commented on own PR)
Noted with thanks
34 (commented on own PR)
Noted with thanks
35 (commented on own PR)
Noted with thanks
36 (commented on own PR)
Noted with thanks
37 (commented on own PR)
Noted with thanks
38 (commented on own PR)
noted with thanks
39 (commented on own PR)
noted with thanks
40 (commented on own PR)
noted with thanks
41 (commented on own PR)
I think you referred to the wrong method, thanks for reviewing!
42 (commented on own PR)
Noted, thanks!
43 (commented on own PR)
Noted, thanks!
44 (commented on own PR)
Noted, thanks!
45 (commented on own PR)
They are the same, thanks for noting. I will delete the function above.
46 (commented on own PR)
Okay, thanks!
47 (commented on own PR)
Okay thanks!
48 (commented on own PR)
Noted, thanks!
49 (other comment)
LGTM
50 (other comment)
LGTM
51 (other comment)
LGTM
52 (other comment)
LGTM.
53 (other comment)
LGTM
54 (other comment)
LGTM
55 (other comment)
LGTM
56 (other comment)
LGTM!
57 (other comment)
LGTM
58 (other comment)
Thanks for the feedback, I would change the window size to prevent overflow.
59 (other comment)
Thank you, I will list how much more the user needs to reach the minimum restock level.
60 (other comment)
Thank you. I would modify the feature to make it more useful
61 (other comment)
Thanks. The command be more useful later when i-view-single is modified.
62 (other comment)
Thank you. I would consider about this point raised.
63 (other comment)
Thanks. I will address the problem.
64 (other comment)
Thank you for the advice. I would improve it.
65 (other comment)
Thank you for the advice.
66 (other comment)
Thank you for the feedback. I will improve on it.
67 (other comment)
Since it is a wrong PR that trys to merge from a wrong branch, so it is closed without merging.
@JingYenLoh
(19 comments)1 (commented on others PR)
The execution example seems to be for list rooms
, is that intentional?
2 (commented on others PR)
These changes appear to be more relevant for #46 . Perhaps they should not be included in this PR?
3 (commented on others PR)
Will resolve via rebase strategy.
4 (commented on others PR)
Thanks for extracting this out 😄
5 (commented on others PR)
That's nice!
6 (commented on others PR)
Oh nice, was planning to do that in 1.3.
7 (commented on others PR)
We now have clauses that cannot exist together, e.g. you can't specify rooms --vacant --allocated
, but we can update that in 1.3.
8 (commented on others PR)
An example of the above mentioned flag. Also I think we should document parameters and flags differently, but it's fine for 1.2.
9 (commented on others PR)
might want to add an assertion here, that unallocatedCount > 0
10 (commented on others PR)
What's the reason for this interface?
11 (commented on others PR)
Can consider logging here
12 (commented on others PR)
Good point!
13 (commented on others PR)
Also a nit on my part, should this be isRoomCreationAllowed
following CS2103's conventions?
14 (commented on others PR)
Similar to what Mayank said, perhaps a minor change can be made to obey CS2103's Law of Demeter?
15 (commented on others PR)
🤣
16 (commented on others PR)
Bro it's "change(s)" requested not changed requested.
17 (commented on others PR)
Nice
18 (commented on others PR)
Perhaps these notes can be wrapped in an info modal to stand out, similar to the ones used in certain sections of the UG.
19 (commented on others PR)
Thanks for updating this section! Also, let's have an F
for this feature 😞
20 (commented on own PR)
I'll remove the redundant line. The rest shouldn't be removed IMO - they are stories we've come up with.
21 (commented on own PR)
#27 is already in. I'll include the rest.
22 (other comment)
As discussed in our team meeting this week, @mkeoliya and I will be updating the Developer Guide. We will include a note about the git hooks when we do that.
23 (other comment)
@AY2021S1-CS2103-T16-3/developers , @mkeoliya and I had a long discussion on how this value adds to our users. We weren't really able to find a concrete use case for this feature. Can anyone think of why this would be useful for our target users? We're leaning towards lowering the priority of (or even scrapping altogether) this User Story.
OTOH, we further refined our concept of the export feature, which we're documenting in #52 .
24 (other comment)
Closing to see if I can safely close this without affecting their grading scripts, since these are polluting our repo.
25 (other comment)
Closing, we won't be needing this feature. Their autograder scripts should have picked this up by now.
26 (other comment)
Closing, we won't be needing this feature. Their autograder scripts should have picked this up by now.
27 (other comment)
Thanks!
28 (other comment)
Resolved.
29 (other comment)
Duplicate of #16
30 (other comment)
Closing as AddressBook already supported this.
31 (other comment)
Requesting 2 reviewers for this 😠
32 (other comment)
While working on viewing vacant rooms, I realized this feature would be straightforward for me to implement as well. I've discussed with @Lysire and I will work on this instead.
33 (other comment)
I noticed the coverage dropped a lot from my previous PRs. Sorry! I've written some parser tests. Not sure how much I can get in for the rest of v1.2, but i'll see what I can do.
34 (other comment)
While working on this PR, I noticed traces of leftover AddressBook in our app. I've purged most of it in 651a1c2 , although the documentation requires updating.
35 (other comment)
The issue happens because you don't have a display server on WSL, which is the first line of the error message. You can try running Xming or VscXrv if you want to use WSL.
@mkeoliya perhaps we can make it explicit in our UG/DG that WSL is not supported.
36 (other comment)
Closing, will not be implemented.
37 (other comment)
Closing, not in scope of any milestone.
38 (other comment)
Closing, not within any milestone.
39 (other comment)
Closing, not within any milestone.
40 (other comment)
Closing, not within any milestone.
41 (other comment)
Closing, not within any milestone. I would have loved to implement this though!
42 (other comment)
Closing, not within any milestone.
43 (other comment)
Closing, not within any milestone.
44 (other comment)
Closing, not within any milestone.
45 (other comment)
Closing, not within any milestone.
46 (other comment)
Closing, not within any milestone.
47 (other comment)
Closing, not within any milestone.
48 (other comment)
This was actually implemented in #136 ! I missed this issue.
49 (other comment)
I'm not sure if this is necessary. @mkeoliya what are your current thoughts on this?
50 (other comment)
Some clarification required on this. I believe the entirety of our GUI is accessible via CLI, even the AddressBook menu bar.
51 (other comment)
This issue has been fixed in 8f1cc94.
52 (other comment)
Can I close this, @Lysire ?
53 (other comment)
Unfortunately, I don't have much time this week 😞 I'll have to end this PR here. Requesting review.
@pennhanlee
(19 comments)1 (commented on others PR)
I get what you're doing in this line but the test constant VALID_TOTAL_PAGES_JANE_EYRE is abit misleading. Maybe you might want to consider having a new test constant?
2 (commented on others PR)
the constructor Bookmark() creates a default bookmark with value 0. Perhaps we can discuss which approach we want to take for setting up a Default Bookmark of Pg 0?
3 (commented on others PR)
This method looks quite long (60 LOC) but the recommended SLAP length is ~30
Maybe it will be better to separate the checking of Valid Find command and the parsing of the FindCommand?
Also, is there a reason for Line 65 to reset the Prefix count?
4 (commented on others PR)
Maybe it will be better to immediately cast the float type upon instantiation instead of typecasting at Ln36?
Else, LGTM!
5 (commented on others PR)
Can you change the link of the MainWindow.fxml please?
6 (commented on others PR)
Just wondering if this indent style is deliberate?
7 (commented on others PR)
Please change the Jdoc here to fit Notes, thank you!
8 (commented on others PR)
Maybe it is clearer to state the commands will be managed like in UG instead of those that wont be?
9 (commented on others PR)
Maybe it would be good to add Javadoc for these public methods.
10 (commented on others PR)
Perhaps you could change AddressBook to Library for this part.
11 (commented on others PR)
Perhaps you can change Address so Genre for this part!
12 (commented on others PR)
Maybe the toString() return value can be more meaningful?
13 (commented on others PR)
Perhap you could change this to JsonLibraryBook... ?
14 (commented on others PR)
Perhaps you can change this to libraryStorage?
15 (commented on others PR)
Maybe it will be better if we throw an exception instead of defaulting to a dummy sorting choice?
16 (commented on others PR)
Did you miss out 2 AddressBook at the end of the sentence?
17 (commented on others PR)
Will it be good to add javadoc here?
18 (commented on others PR)
Lets not use "Lets say"
19 (commented on others PR)
There is a typo with Test genre
20 (commented on own PR)
Looks like there are some discrepancies between our UG and DG. Let's go over this again in the next meeting. In the meantime, I'll make the relevant changes! Thanks!
21 (commented on own PR)
Must have missed this part out. Thanks!
22 (commented on own PR)
Good recommendation! Thank you for spotting this. I've made the relevant changes.
23 (commented on own PR)
Thanks for pointing this out! I have made the changes.
24 (commented on own PR)
Thanks for spotting this!
25 (commented on own PR)
That's a good point, I have changed it. Thanks!
26 (commented on own PR)
Thanks for the recommendation! I have included HashMap as an attribute. Thanks!
27 (commented on own PR)
Good Idea! i've made the changes. Thank you 😃
@EkChinHui
(19 comments)1 (commented on others PR)
I'm not sure if we want to use the term budget book compared to budgets. I used budgets in the User Guide, whichever case it should be consistent in both guides. @wenhaogoh please advise
2 (commented on others PR)
Just a small change needed, I think the wording is slightly off here. Maybe you meant to say when the command is called or used. Either that or perhaps you meant "When a command that requires ..."
3 (commented on others PR)
I think the phrasing could just be "Once a budget is open,..."
4 (commented on others PR)
Perhaps this could be phrased as "Index of the budget to be opened"
5 (commented on others PR)
I'm not sure if it might be a good idea to mention that the application switches from displaying expenditures to displaying budgets instead.
6 (commented on others PR)
This is fine but inconsistent with what I used, I used find NAME for my format instead. Let's settle on one to keep things consistent! 👍
7 (commented on others PR)
I think you missed out tags as well
8 (commented on others PR)
Just a nit to pick, I think it should be "jump straight into the action"
9 (commented on others PR)
There seems to be a grammatical error here.
10 (commented on others PR)
Would be good to remove the view
11 (commented on others PR)
"to the budget that is currently open"
12 (commented on others PR)
TYPE here should be TYPE
13 (commented on others PR)
a is redundant here
14 (commented on others PR)
"This will sort the expenditures (that are currently displayed) by their name in alphabetical order as seen in Figure 5.3.6.1 below:"
15 (commented on others PR)
view is redundant here
16 (commented on others PR)
Add budget method is not called.
17 (commented on others PR)
I think these test cases can just be removed for the time bring.
18 (commented on others PR)
Constructor should test for a ReadonlyNusave instead.
19 (commented on others PR)
The phrasing of documentation sounds wrong.
20 (commented on own PR)
Good spot! I'll change it ASAP. 😄
21 (other comment)
LGTM!
22 (other comment)
duplicate issue #59
23 (other comment)
This is due to the secondRowText being bound in MainWindow, thus setText throws an error when updating in MainPageInfoBox
@sogggy
(18 comments)1 (commented on others PR)
I think this portion shouldn't be changed!
2 (commented on others PR)
change the variable name to 'name'
3 (commented on others PR)
change variable name to name
4 (commented on others PR)
i think we should leave these empty lines out, i.e. shouldn't have these empty lines!
5 (commented on others PR)
here as well
6 (commented on others PR)
remove the empty lines!
7 (commented on others PR)
can add assertion here so that we can know where's the error!
8 (commented on others PR)
Will need to do error handling for indices that are greater than the number of expenditures in the future
9 (commented on others PR)
Redoes should be 'redos'.
10 (commented on others PR)
Should be VersionedNusave instead of VerisonedNusave
11 (commented on others PR)
Link for this image is broken!
12 (commented on others PR)
change 'by name' to 'by search term'
13 (commented on others PR)
add clear budget user story, add find budget/expenditure user story, list budget/expenditure user stories 👍
14 (commented on others PR)
Add user story for indication if expenditure exceeds threshold
15 (commented on others PR)
Add user story to see how many expenditures inside a budget
16 (commented on others PR)
Add user story to include tags to my expenditures
17 (commented on others PR)
Add user story for exiting the program,for seeing latest entries at top of budgets, for seeing latest entries at top of expenditures, when an expenditure is created
Add user story for new user to look through sample data
18 (commented on others PR)
I think for the class diagram we should include state, and also for delete 1 need to mention whether we are talking about delete 1 under context or expenditure or budget!
19 (commented on own PR)
got it!
20 (other comment)
My changes have been added. We can close the issue once the PR is merged 👍
21 (other comment)
LGTM! Thanks!
22 (other comment)
Bad pull request! Will close this
23 (other comment)
fetch from upstream first before submitting pull request
24 (other comment)
Close #80
25 (other comment)
close #142
26 (other comment)
Fixed the clock
@angrybunny123
(18 comments)1 (commented on others PR)
I agree with leyang we can make use of the existing edit command in AB3 😄
2 (commented on others PR)
Some "person" variables can still be changed to "book"
3 (commented on others PR)
As Le Yang has mentioned, the javadocs and test names can be updated as well
4 (commented on others PR)
Maybe it would be better if you named it PREFIX_NOTE instead, even though they both refer to "/n", for clarity
5 (commented on others PR)
Am not too sure if it is necessary to check for duplicate notes, but I think it's fine to include
6 (commented on others PR)
I'm not too sure if we should include a conditional to check valid index in the activity diagram, because this diagram doesn't show that an error would be thrown.
7 (commented on others PR)
Not sure if it should be just execute() or n.execute(), let's discuss it tomorrow!
8 (commented on others PR)
I think saying 'Technically Allows' is a bit weird because it implies that it is a bug. Maybe we can add a statement to explain why the bug wouldn't occur?
9 (commented on others PR)
Nice comprehensive testing Wai Kye!
10 (commented on others PR)
I notice that max book capacity was repeated in Model.java as well, perhaps this value could be imported as a static variable from another file?
11 (commented on others PR)
Or maybe this can be removed since I don't think its being used anywhere
12 (commented on others PR)
Love the comprehensive tests, Le Yang!
13 (commented on others PR)
Maybe this variable should be public static final?
14 (commented on others PR)
Oooh okay didn't know that 😄
15 (commented on others PR)
I'm not sure if this needs to be here as you mentioned in the PR that you were using the regex solution instead
16 (commented on others PR)
Not too sure if we should mention this as we mention "There is no need to save manually", but then we tell users that they need to exit properly
17 (commented on others PR)
I feel like this line is a bit awkward, perhaps we could add it in the line above instead? Something like, "Look at the detailed information of your recorded book by using our View Command". Let's say you have two books in your list.
Example command..... '
18 (commented on others PR)
Maybe this should be "Lower than or equal to the total pages of the book"
19 (commented on own PR)
That's a good suggestion Penn Han, will work on it now!
20 (commented on own PR)
I have made the changes you suggested Penn Han, do let me know if it looks good to you. Thanks!
21 (commented on own PR)
Yes, I added that because I wanted for there to be stricter input validation when using the sort command.
22 (commented on own PR)
Will update the test case names. Thanks for the comprehensive review, Wai Kye 😃
23 (commented on own PR)
I was deciding between pages read and percentage of book read, and I felt that pages read was more meaningful, but we can discuss this in our next meeting!
24 (commented on own PR)
Thanks for the suggestions Le Yang, I agree with you and I have made the necessary changes 😄
25 (commented on own PR)
I use this toString() value to return "Sorted by: xxxx.toString()", so I think leaving it like this is fine
26 (commented on own PR)
Exception would be thrown in SortCommandParser if prefix was invalid. But I'll change this to return null in the default case to make it less confusing.
27 (commented on own PR)
Yup that's a typo, nice catch!
28 (other comment)
LGTM!
29 (other comment)
Looks good to me, Wai Kye!
30 (other comment)
One small issue I see in the UI screenshot is in entry 4 (the Gordon Ramsay entry), the text isn't centralized with the border. Other than that, LGMT!
31 (other comment)
LGTM!
32 (other comment)
This is because our equals method for book considers Name, Genre and Total pages, but I think you do make a good point here, thanks for raising this issue!
33 (other comment)
Thanks for pointing this out, we made a mistake in the error message for add book, b/BOOKMARK should be optional and be in square brackets.
34 (other comment)
We get a lot of reports on this. Maybe in the user guide, we need to explicitly tell users to enter the 'list' command if they want to go back to list view.
35 (other comment)
I guess this is a user guide bug as we stated that Genre should only contain alphanumeric characters and spaces.
36 (other comment)
I can't reproduce it too. Works well for me.
37 (other comment)
I think this issue was created when the user entered
find n/ something, which returned no matching books,
followed by "sort n/". Maybe we can consider switching to view all the books when a sort command is entered?
38 (other comment)
I think this user has a point, if I do input a goal that is before my bookmark, it's probably due to a typo. If I forgot to add my goal and I do input a goal before my bookmark, having an error message that says something like:
"You have already fulfilled your goal!" would elicit the same effect as you have mentioned in my opinion.
39 (other comment)
LGTM!
@Nikhilalalalala
(18 comments)1 (commented on others PR)
Do we have to do com.eva.storage.StorageManagerTest
2 (commented on others PR)
Should this be com.eva.Model#getAddressBook instead
3 (commented on others PR)
I think same issue as above, no need "CliSyntax" since it is imported already
4 (commented on others PR)
Same issue here as above
5 (commented on others PR)
Same issue here as above
6 (commented on others PR)
Do you want to change the name of Comments to something like CommentList so that it is more clear that this is a list of comments
7 (commented on others PR)
I think you need to change the javadocs here
8 (commented on others PR)
Was thinking if this can be given a more informative name like startDate
9 (commented on others PR)
same for 'to' maybe endDate
10 (commented on others PR)
Was thinking if this can be improved to maintain the same level of abstraction as before, by constructing the Leave object with public Leave(LocalDate from, LocalDate to)
because in other cases for example,
Add Person, the text input goes from Logic
--> AddressBookParser
--> AddCommandParser
and this is where the Name, Email, Address Objects are made, then these objects are passed into AddCommand
and is then passed into Model to add the person.
I think this change does not make a difference logic wise, but helps make the level of abstraction more standard. But up to you to take it up.
11 (commented on others PR)
Alright sure, I agree with your reasoning, Thank you! Great job 😃
12 (commented on others PR)
Would it be better to change this to use like the standard requireNonNull(personToEdit)
as used in all other places?
And perhaps, you could import the whole CommentCommand?
13 (commented on others PR)
Perhaps you could use the same requireNonNull
function like in other places
And is there a way to just import the CommentPersonDescriptor
instead of calling it by CommentCommand.CommentPersonDescriptor
14 (commented on others PR)
Minor, but the javadoc is a little misleads readers to think the specific leave object that is conflicting will be returned.
15 (commented on others PR)
Minor, Good to specify if the list returned is inclusive or exclusive of the start and end date
16 (commented on others PR)
Possible to standardise the prefixes for the title when adding or deleting the comment?
17 (commented on others PR)
Does this allow the case where I am viewing Applicant A but I can add application for Applicant B?
18 (commented on others PR)
The error is caught in lines 61 to 63, in this method itself. If thats the error youre looking for.
19 (commented on own PR)
Yes, I just added it like this as of now, will adapt once new ui is pushed.
20 (commented on own PR)
Hmm yea, noted about this from previous PR, will try to figure out some time to do this, thanks for reminding!
21 (commented on own PR)
Sure!, we can discuss in upcoming meeting to standardise this.
22 (other comment)
LGTM!
23 (other comment)
LGTM!
24 (other comment)
LGTM!
25 (other comment)
LGTM! Just one small comment. I think we can just stick to dates first? Or do you guys want to include timings as well.
Yeah, I think we can stick to dates first and build upon timings at a later stage.
26 (other comment)
LGTM!
27 (other comment)
LGTM!
28 (other comment)
LGTM! One small comment, but otherwise is great 😃
29 (other comment)
LGTM! The changes Ben advised on interviewdate, naming from person to staff and addressbook to eva, I will implement them in my next pr.
30 (other comment)
Looked through the files changed, I think all looks good and like you mentioned, since leave also heavily uses dates we can change the prefixes to a generalised date prefix.
31 (other comment)
LGTM! Nice job on adding the numbers in the DG, makes it clearer for readers.
32 (other comment)
LGTM! Just some minor comments on the javadocs part. Nice observation on this bug 😃
33 (other comment)
LGTM!
34 (other comment)
LGTM!
35 (other comment)
LGTM!
36 (other comment)
LGTM!
37 (other comment)
Removed in PR Set Application Status Command.
38 (other comment)
duplicate issue
39 (other comment)
Need to ensure interview date is > current date
40 (other comment)
duplicate issue
41 (other comment)
duplicate issue
42 (other comment)
Standardise the example commands for all commands
43 (other comment)
We have discussed this and standardised all commands as shown in here
44 (other comment)
LGTM!
45 (other comment)
LGTM!
@WangZijun97
(17 comments)1 (commented on others PR)
Just tested with the current master
branch code, 0 does not remove the role from the shift yet, but instead shift-edit removes all roles, then add the ones keyed in. Do we want to have the 0 = remove functionality, or just not allow 0 to be keyed in?
2 (commented on others PR)
Thanks for helping to update the user guide.
3 (commented on others PR)
I think will be good to check if " "
(a bunch of whitespaces) is also rejected by the regex since they won't be covered by the test.trim() == ""
. In any case should have added it earlier into RoleRequirementTest
😛
4 (commented on others PR)
I think role is an optional argument so perhaps no need to check if it is present.
Actually since we are on this topic, I think pay isn't either? But if these are necessary then perhaps updating the User Guide will do.
5 (commented on others PR)
Thanks for abstracting this out properly xD
6 (commented on others PR)
I'm not sure if the FULL
value should be implemented into the code itself, or should it just be an argument that we accept that from user input that is essentially a wrapper for creating both an AM
and a PM
unavailability. Not sure if this might result in duplicates when creating shifts of AM
and of FULL
of the same day?
7 (commented on others PR)
I think no role should be unable to assign to anything, kind of like when someone new join and havent do the training I guess. Makes sense for pay to be compulsory, so agreed there.
8 (commented on others PR)
Maybe if these are created as proper JavaFX nodes with assignment set to its inner value, then JavaFX will update them properly. Implementation could be similar to WorkerListPanel
except it is as children to WorkerCard
and ShiftCard
.
9 (commented on others PR)
I think ALICE
is unavailable during the day/time of SHIFT_A
, perhaps not a good idea to put that as a typical assignment?
10 (commented on others PR)
I think this is ok, for a possible future implementation could allow shifts of differing number of hours - hence calculating worker pay will need to be at a model level. Besides Worker
has no knowledge of its assignments
11 (commented on others PR)
Is this file the alternative color scheme? Maybe can make use of UserPrefs
to allow users to switch to this. Also would be good if the duplicates in the two themes are condensed into one place so that we don't need to edit both when including new GUI elements. Otherwise there will be two representations of some parts of our GUI styling.
12 (commented on others PR)
This needs to be updated with current master
branch code.
13 (commented on others PR)
Not sure if its because of my system but the jingle seems to get cut off halfway through when playing on startup.
14 (commented on others PR)
Maybe this can be similar to reassign
in that the message outputs both what the role was and what the role has been edited to?
15 (commented on others PR)
Please prevent leaves from being edited by this function or it will have the ability to remove all workers from leave (which I don't think is intended). Although since it's index based that should never happen, but some assertions always help just in case someone decides to be funny and edit the save file.
16 (commented on others PR)
Perhaps splitting by "\\s+" instead of " " will be better in that users who accidentally put extra spaces won't brick and edit an existing role to a blank role. E.g. role-edit 1 blablabla
will still work
17 (commented on others PR)
Don't think this is necessary as getAssignment
was added to this stub class in a recent PR. But perhaps that can be updated to either fetch or always provide toGet
using orElse()
to fulfil this functionality.
18 (commented on own PR)
Adjusted the suggest to reflect functionality as Fri PM returns all Fri and all PM shifts (don't think need a FRI PM specific search as Fri will at most return 2)
19 (other comment)
Same as issue #12
20 (other comment)
Looks good! The use cases provided are comprehensive. Maybe later we can also add high-level cases, like "accepting a new hire for a position", which will include use cases 1, 4, and 7.
Included one such use case (but just UC-001 --> UC-007) so that we can see how that might look like.
21 (other comment)
LGTM!
22 (other comment)
Thought I would just add which tests I'm working on adding now so that we don't duplicate:
AddressBookTest
ModelManagerTest
I can continue and handle all of seedu.address.model
tests first.
23 (other comment)
AssignCommandTest
has been removed as issue was resolved. Furthermore, the implementation of assign was revamped, hence the test case is grossly invalid.
24 (other comment)
Resolved by #88
25 (other comment)
Updating functionality to allow assigning leave to assigned positions, but outputs a warning regarding unassigned assignments
26 (other comment)
Useful - perhaps, but not very essential functionality. Manager can view leave of each worker in the worker pane. We will not be implementing this.
27 (other comment)
Found the root cause - has to do with the order of invocation between ShiftEditCommand#editShiftInAssignments()
and Model#setShift()
as the former also calls Model#setShift()
before the edited shift has been set. Also ModelManager#setAssignment()
does not update the role and shift of the old assignment, which causes problems with reassign.
28 (other comment)
@wakululuu Thanks for suggestions! They have been committed. All references to cleaner have been swapped to janitor too.
29 (other comment)
Thanks for suggestions, added as requested.
30 (other comment)
Thanks, suggestion added.
@therizhao
(17 comments)1 (commented on others PR)
Don't think need to compare caloriesPerRep, since it is not an identifier field
2 (commented on others PR)
This property should be called value
getName().name
sounds a bit unsemantic as the property name has the same name as class name (haha so many names)
3 (commented on others PR)
This test could be removed, see previous review
4 (commented on others PR)
Could rename to calories for clarity
5 (commented on others PR)
What do u mean by hardcoded here?
6 (commented on others PR)
should be setLogs?
need to fix the naming of the overloaded method below too
7 (commented on others PR)
should be find w/o s
can split this into 2 tests
find_state_expected
8 (commented on others PR)
Can split into multiple tests with format method_state_expected
9 (commented on others PR)
Can split into multiple tests
with format
method_state_expected
10 (commented on others PR)
Remember to change addressBookStorage to logBookStorage (same for the lines below)
11 (commented on others PR)
Should update to use LogBook
12 (commented on others PR)
Person -> Log
13 (commented on others PR)
Should be logBook
14 (commented on others PR)
LogBook for the return type
15 (commented on others PR)
Could we have just exercises as static instead?
16 (commented on others PR)
Could split input and use the first string
input.split(' ')[0]
-> checking the first 3 char substring may be brittle (e.g. may cause unforeseen bugs if we change the commands e.g. if got addelephant command, addex will show addex and addelephant)
17 (commented on others PR)
could rename to listWithSingleExercise (current naming feels like it's a superset of the next test case)
18 (other comment)
Closes #17
19 (other comment)
Not needed anymore
20 (other comment)
lgtm
21 (other comment)
done
22 (other comment)
Test added for editexercises
23 (other comment)
Test was done for addexercises
24 (other comment)
25 (other comment)
26 (other comment)
#126
27 (other comment)
#120
28 (other comment)
#118
29 (other comment)
Left -> Logs
Right -> Exercises
30 (other comment)
to investigate, might be linked to #126
31 (other comment)
#126
32 (other comment)
#134
33 (other comment)
find >search string in log>
logically -> log name
but current behaviour -> search everything
34 (other comment)
Options
Comment should not empty (easier)
Make comment optional
35 (other comment)
#126
36 (other comment)
#148
37 (other comment)
#126
38 (other comment)
Missing clear
39 (other comment)
done add delete edit
40 (other comment)
Maybe update UG to indicate the range of 1 to 1000 for reps/calories?
Will update in another pr
41 (other comment)
Closes #126
Closes #148
Closes #144
Closes #131
42 (other comment)
css fix
43 (other comment)
Update: Instructions for manual testing
44 (other comment)
[ ] must remove more test cases comment
[ ] basic cleanup
45 (other comment)
46 (other comment)
47 (other comment)
[ ] remove add more test cases
48 (other comment)
fix md error
49 (other comment)
Follow command summary format in UI and docs
Update e/>exercise> -> exercise name
verify that all change to correct format (in UI and docs)
Fix UI format
Add one more e.g. with no comments
50 (other comment)
Message should be the second one
51 (other comment)
standardise -> the second one add \n
52 (other comment)
possible can check if can hover the text
53 (other comment)
#208
54 (other comment)
Update format in UI
55 (other comment)
should be consistent with the about.md docs
56 (other comment)
left with clear
57 (other comment)
Store the hashcode of the exercise
Exercise needs another field called id
58 (other comment)
OR search and replace old ex name with new ex name in logs
59 (other comment)
dup #181
60 (other comment)
Closes #187 , fix remove ex bug, ui improvements
@dianneloh9
(17 comments)1 (commented on others PR)
Would getBidderList()
be a better name? So that when you call this method, you know that you are getting a bidder list and likewise for seller list. What do you think?
2 (commented on others PR)
Should this be "add -bid" with a space in between so that it's more standardised? Likewise for "list -bid".
3 (commented on others PR)
Should property prefix be "p" instead? Then bidder id be prefixed "b".
4 (commented on others PR)
I think it may be easier to check at the BidBook / UniqueBidList level (or even AddBidCommand, I'm not sure where is the best place yet), so that Bid does not know about PropertyBook. Maybe can think about this further in the future, but for now it's okay since other stuff is not done yet.
5 (commented on others PR)
removeBidder?
6 (commented on others PR)
Good idea. I think we should all do this.
7 (commented on others PR)
MeetingManager?
8 (commented on others PR)
merge this with setTabBar()
9 (commented on others PR)
Can remove this line
10 (commented on others PR)
Should organise by the comment headers
11 (commented on others PR)
Nice catch
12 (commented on others PR)
Can use static variables here, eg PREFIX_PAPERWORK = "p"
13 (commented on others PR)
Very small issue but MESSAGE_DUPLICATE_BIDDER
?
14 (commented on others PR)
Naming could be better perhaps
15 (commented on others PR)
Maybe should change to checkIsValidBid
because this name suggests that the method will return a boolean. Alternatively, you can also make this return true if no exception is thrown.
16 (commented on others PR)
I think instead of this, maybe can make Id and Price comparable. So just need to sort by id first then sort by price. Perhaps can keep this first, I don't mind making Id and Price Comparable.
17 (commented on others PR)
Hmm why change to 11.0.1?
18 (commented on own PR)
Thanks Marcus. Yes this part is redundant, will delete it.
19 (commented on own PR)
Good suggestion. I have incorporated this in the newest commit.
20 (commented on own PR)
I am not sure exactly how these json creators work but I think they need to be stored as a String because of the json format. And it is the same format as the original AB3's implementation. I am not very sure though.
21 (other comment)
For the issue with the test, I suggest making isValidBid
private and calling isValidBid
inside ModelManager
inside the call to addBid
. Would this work?
22 (other comment)
23 (other comment)
delete relevant meetings as well
24 (other comment)
@tengjianling
(17 comments)1 (commented on others PR)
you edited the qAndAInList back to questionSetInList
2 (commented on others PR)
questionSetInList
3 (commented on others PR)
change questionSet back to qAndA
4 (commented on others PR)
change questionSet back to qAndA
5 (commented on others PR)
change questionSet back to qAndA
6 (commented on others PR)
change questionSet back to qAndA
7 (commented on others PR)
change questionSet back to qAndA
8 (commented on others PR)
change questionSet back to qAndA
9 (commented on others PR)
change questionSet back to qAndA
10 (commented on others PR)
change questionSet back to qAndA
11 (commented on others PR)
change questionSet back to qAndA
12 (commented on others PR)
change questionSet back to qAndA
13 (commented on others PR)
questionSet
14 (commented on others PR)
questionSet
15 (commented on others PR)
questionSet
16 (commented on others PR)
questionSet
17 (commented on others PR)
questionSet
18 (commented on own PR)
Ok I bolded the 3 lines
@abdurrahmanfaqihiskandar
(16 comments)1 (commented on others PR)
Isn't this supposed to be 1 to 6?
2 (commented on others PR)
You need to update to student for this file.
3 (commented on others PR)
I think can remove all the portfolio section. Since it's all johndoe.md
4 (commented on others PR)
Isn't this already handled by the FindCommandParser class?
5 (commented on others PR)
Yeah Andy is right. Hour is HH
and minute is mm
. Source
6 (commented on others PR)
shouldn't this be private not public?
7 (commented on others PR)
I think we can vary the values that VALID_ID has so that the test can be more comprehensive? If not all have the same value of 1
, then the test only cover id of 1
.
8 (commented on others PR)
I think should change the name of the variable to match the usage. To me it doesn't look nice ah.
9 (commented on others PR)
This one as well same as above. If im reading this correctly, the index is the index of the trainings shown. Should rename is accordingly. The exception in addstudentcommand also has this.
10 (commented on others PR)
Maybe "Trainings cannot be scheduled for dates that are past"? Or something like that?
11 (commented on others PR)
just a slight grammatical mistake: "a" not "an"
12 (commented on others PR)
Should it be called FindStudentTrainingCommand
? Idk. This name sounds like you want all trainings instead of a particular student's training schedules.
13 (commented on others PR)
the variable name needs to be in caps.
14 (commented on others PR)
this one as well
15 (commented on others PR)
this one also
16 (commented on others PR)
Solid shortcuts. HAHAHAH
17 (commented on own PR)
okay! fixed it.
18 (other comment)
- Mention clearly in User Guide that students in trainings on training panel are sorted by alphabetical order, hence not by the order of their IDs
"p" comes before "s" eh JD
19 (other comment)
hmm, doesnt this mean multiple tags allowed?
Yes. AB3 UG also does this.
@HCY123902
(16 comments)1 (commented on others PR)
LGTM
2 (commented on others PR)
Maybe some real time numbers can be added instead of giving an empty value.
3 (commented on others PR)
There can also be some check about the valid time number string.
4 (commented on others PR)
Maybe there can also be an upper bound for the number of times that a book can be borrowed.
5 (commented on others PR)
LGTM
6 (commented on others PR)
LGTM
7 (commented on others PR)
LGTM
8 (commented on others PR)
Maybe some real number string can be used for times instead of the empty string.
9 (commented on others PR)
Maybe there can be more books with different categories can be added to the sample to help the user understand what categories of books there are.
10 (commented on others PR)
Thanks for changing the number to a different one from the stocking number of the other library.
11 (commented on others PR)
Thanks for adding the command
12 (commented on others PR)
It seems that the documentation of this command is from the original project. Maybe it can be changed according to the current implementation.
13 (commented on others PR)
Thanks for changing the command format and adding an example.
14 (commented on others PR)
LGTM
15 (commented on others PR)
LGTM
16 (commented on others PR)
LGTM
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
LGTM
20 (other comment)
LGTM
21 (other comment)
LGTM
22 (other comment)
LGTM
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
LGTM
26 (other comment)
LGTM
27 (other comment)
LGTM
28 (other comment)
LGTM
@mkeoliya
(16 comments)1 (commented on others PR)
These issues are missing.
2 (commented on others PR)
Also missing are #27, #25, #24, #23.
3 (commented on others PR)
Should be removed.
4 (commented on others PR)
Yep my bad! Was referring to the create compound commands
user story only. Could you remove it?
5 (commented on others PR)
Perhaps you forgot to include #58 and #59?
6 (commented on others PR)
AddCommand
should be replace by ReallocateCommand
7 (commented on others PR)
Can we change this to commandWordAlias.alias.toString()
to follow the Law of Demeter?
8 (commented on others PR)
Bro put the image in our docs/images
folder and use the markdown format to insert it.
9 (commented on others PR)
Good catch here!
10 (commented on others PR)
I think we can shorten residence regulation
here to ResiReg
11 (commented on others PR)
This should be refactored to a method inside CommandHistory, probably called getResultAsString
. Maintains SLAP and prevents redundant getter methods.
12 (commented on others PR)
What's the rationale behind changing the order of execution?
13 (commented on others PR)
The historyWithAC
object probably be defined as VALID_COMMAND_HISTORY
in CommandTestUtils
, so that it can be reused by other tests, and to maintain consistency with other testing.
14 (commented on others PR)
Good to refactor this to getResultAsString()
as well.
15 (commented on others PR)
As above, these labels should be placed in a constants file. TypicalCommandHistories
works as well, especially if we're looking to add a CommandHistoryBuilder
or add integration tests in the future.
16 (commented on others PR)
Lacks test coverage. (Probably add a test where there's two CommandHistory
objects with the same history
but different counter
). Useful if for some reason the list of command histories gets modified unsafely.
17 (other comment)
Duplicate of https://github.com/AY2021S1-CS2103-T16-3/tp/issues/15
18 (other comment)
LGTM!
19 (other comment)
Closed via #47, #48, and #46
20 (other comment)
Closed via #64
21 (other comment)
Closed via #57 and #61
22 (other comment)
Closed.
23 (other comment)
Closed.
Note to all: To be updated after we finish v1.2.
24 (other comment)
Closing since the tP dashboard now reflects all changes.
25 (other comment)
To be closed after #78
26 (other comment)
Closed by #78
27 (other comment)
Closed by #71
28 (other comment)
Closed via #110
29 (other comment)
Closing since it is a redundant feature. Semesters are automatically named based on the current date and year (ref: #102)
30 (other comment)
Closing, since we will not be implementing this feature (and instead working on documentation, testing).
31 (other comment)
Closed via #117
32 (other comment)
Closed via #102
33 (other comment)
Closed, as this PR rendered redundant by #125
34 (other comment)
No action to be taken, since WSL was not mentioned as a mainstream OS in our Developer Guide.
35 (other comment)
After conferring with the tester via Telegram, this issue is marked as invalid. Thanks for testing though!
36 (other comment)
Yeah I agree - better to make it clear exactly when an error message is shown. Closing now.
37 (other comment)
^Addressed in #175
@lamlaaaam
(16 comments)1 (commented on others PR)
Parameter of withAnimal is an Animal object. Suggest to change "Harambe" to "harambe" to fit naming conventions.
2 (commented on others PR)
I assume this was for debugging? Suggest to remove or if need be, change to a logging statement.
3 (commented on others PR)
.equals() for string comparision.
4 (commented on others PR)
This shouldn't be initialized to a new ZKB I think, just declare the variable.
5 (commented on others PR)
What is this isEmpty for? Looks a little out of place.
6 (commented on others PR)
Can we just give the redo stack a getSize() or isEmpty()? Otherwise this boolean is like dangling out of nowhere.
7 (commented on others PR)
I think don't need to reference names.
8 (commented on others PR)
I think no need to re-explain the Undo portion, just refer the reader to the above section. Just skim it over here and focus on Redo.
9 (commented on others PR)
For consistency, name methods in form Class#method(parameter). e.g. ParserUtil#parseFeedTimes()
10 (commented on others PR)
Typo in "chronological".
11 (commented on others PR)
Missing a period at the end.
12 (commented on others PR)
Parameters should be class names.
13 (commented on others PR)
Minor nitpick in language. "listed" instead of "categorised".
14 (commented on others PR)
Maybe "ascending" in place of "increasing" to be consistent with line 78.
15 (commented on others PR)
"an animal"
16 (commented on others PR)
I think this and the UG one below goes under Documentation.
17 (commented on own PR)
Are we allowed to? I seem to have a vague memory of Jane saying it has to be one member one section.
18 (other comment)
Unit tests should also be double-checked to conform to specifications for ID.
19 (other comment)
Unit tests for emails should also be removed.
20 (other comment)
Unit tests should be double-checked to conform to species field specifications.
21 (other comment)
Fails code coverage since new lines added are not covered by tests.
22 (other comment)
It's only Malcolm's picture I think. So he has to crop and reupload. Follow the dimensions given in the week's project tab.
23 (other comment)
Shall we just rename it to ZooKeep since it's our app name?
24 (other comment)
Is this the same issue as #79 ?
25 (other comment)
Just curious if it is necessary to have an UpdateStack when implementing redo. Would it be cleaner to have the current HistoryStack hold a redo stack?
This inherently guarantees redo only works after undo, since only an undo operation pops the HS and pushes state into RS.
26 (other comment)
Just a thought, is listing the features alphabetically the best bet? Currently it references the less "basic" features first like "append". Furthermore these features reference features that are later down the list, meaning the user would not have read them yet. Shall we consider listing from basic to advanced?
27 (other comment)
All members have included implementations.
28 (other comment)
I think this was a deliberate action by AB3 since it sounds more direct. You directly list out the (then) person by name, before listing his fields out. But I agree it looks inconsistent and could be seen that way.
29 (other comment)
From a use case perspective, I think feed times should not be matched by substring. Suggest updating UG to specify substring matching for strings and full match for integers?
@chuyouchia
(16 comments)1 (commented on others PR)
Needs to be updated with new command word.
2 (commented on others PR)
Should be added already since functionality exists?
3 (commented on others PR)
Might be better to name as "deck mode" for consistency with the summary?
4 (commented on others PR)
Might be a good idea to get rid of the AB3 reference?
5 (commented on others PR)
it is a broken link - should be model/Model.java not ui/Model.java?
6 (commented on others PR)
should be Observable?
7 (commented on others PR)
Similarly, might be a good idea to remove AB3 reference?
8 (commented on others PR)
Update the add, delete and edit card to match the new syntax?
9 (commented on others PR)
should be would not, guide should be less verbal and more formal? (in language not tone)
10 (commented on others PR)
Missing pros and cons format?
11 (commented on others PR)
similarly, missing pros and cons format?
12 (commented on others PR)
"jaon" should be changed to "json" here?
13 (commented on others PR)
would be good to remove AB3 references?
14 (commented on others PR)
should be changed to card mode?
15 (commented on others PR)
similarly, should be changed to card mode?
16 (commented on others PR)
Might be a good idea to add descriptive messages for the screen shots? e.g.
Enter the deleteDeck command into the command bar as per the example
You should see the newly rendered list of decks will have deleted the deck away if the deck numbering given was valid.
17 (commented on own PR)
Done, thanks for the catch!
18 (other comment)
Delete Address Class from production and test code.
19 (other comment)
Update in UG that a new unique tag will create a new deck
20 (other comment)
Change Tag to Deck and enforce valid deck name checking
21 (other comment)
Detailed Explanation - UG + Explanation on what happens when you review whole list
22 (other comment)
Update the UG with expected behavior for empty list
23 (other comment)
Tweak to 1 dp and explain in the UG what happens with the rounding behaviour
24 (other comment)
Update in UG that it is the correct intended behaviour
25 (other comment)
returns full word match excluding punctuation
26 (other comment)
Update the UG
27 (other comment)
Intended function, update UG to reflect
28 (other comment)
change student to users, add flashnotes behind
29 (other comment)
UG explanation
@chuyiting
(16 comments)1 (commented on others PR)
Please kindly help update my email, and for the others @cupofjoee, @petrickjerico, @ducbinh2611
Eddy Chu: e0418218@u.nus.edu
Thanks
2 (commented on others PR)
Want to check which test requires the usage of this. See if there is better solution.
3 (commented on others PR)
Does the empty string not match the VALIDATION_REGEX?
Is it possible to solve it by modifying the VALIDATION_REGEX>
4 (commented on others PR)
Good jobs! Thanks a lot.
5 (commented on others PR)
Please delete these flags here, haha.
6 (commented on others PR)
I think hasTime() ? getDateTime().get() : "" is better as it is better to show String rather than Optional[something].
7 (commented on others PR)
Would you think another class called EmptyFormat implements TimeFormat is better?
e.g.
public LocalDateTime check(String time) {
if (time.equals("")){
return null;
}
throw new TimeFormatException();
}
8 (commented on others PR)
Thanks a lot.
Sorry for the error.
9 (commented on others PR)
Great.
10 (commented on others PR)
May I check the reason for the system output here? If it is used for debug, maybe can just delete them.
11 (commented on others PR)
Can you slightly explain this part? Does the Quiz stop by running one more CorrectCommand and causes NullPointerException or IndexOutOfBoundsException? What is the scenario that the exceptions are thrown?
Thanks a lot~~
12 (commented on others PR)
Maybe you can leave the name of the command in the Command itself like the one in the ab3. I think that can avoid "magic string".
13 (commented on others PR)
Really like this decision of building RefreshCommand. Good job!!!!!!
14 (commented on others PR)
This is what I was worried about, when I was refactoring, I found out that the QuizModel cannot really be separated due to the strong coherence with the Flashcard.
Would you think adding one more layer of the Model (QuizFlashcardModel) would be a better structure??
15 (commented on others PR)
Maybe can trim the userInput before parting it, so that " quiz score flset" would still work.
Another thing to notice is that currently it is using rigorous check, for example quiz(space*2)flset: would not pass. This also happens in the Schedule.
Maybe we can develop a StudyBanana customised tokeniser ourselves to solve these problem.
16 (commented on others PR)
OHH, just too clarify, so the flow of usage is like,
quiz flset:1
=====> show the question
ans: my answer
=====> show the answer
correctCommand/wrongCommand
======> show next question or end the quiz if all flashcards have been iterated.
Am I correct?
17 (other comment)
Duplication.
18 (other comment)
LGTM, @petrickjerico, please help double check the file changed and merge it, thanks.
19 (other comment)
No pull request required for this tutorial.
20 (other comment)
Duplicate changes with #61. Close this PR as it used your master branch.
21 (other comment)
Functionality built.
22 (other comment)
Functionality built
23 (other comment)
Functionality built.
24 (other comment)
Functionality built
25 (other comment)
Functionality built!
26 (other comment)
Functionality built.
27 (other comment)
Functionality built.
28 (other comment)
Functionality built.
29 (other comment)
LGTM!
30 (other comment)
The description is very clear, thanks a lot. Sounds really great.
31 (other comment)
Where does this bug happen??
Does it still exist now?
32 (other comment)
Fixed.
33 (other comment)
Fixed.
34 (other comment)
Fixed.
35 (other comment)
Fixed.
36 (other comment)
Fixed.
37 (other comment)
Fixed.
38 (other comment)
Fixed.
39 (other comment)
Fixed.
40 (other comment)
Fixed.
41 (other comment)
Fixed.
42 (other comment)
Fixed.
43 (other comment)
Fixed
44 (other comment)
Fixed
45 (other comment)
Fixed
@kkangs0226
(16 comments)1 (commented on others PR)
Not sure if it matters, but since the code does not use ProjectBook class it might be better to put @link seedu.address.model.ProjectBook in the comment instead of importing it
(Which is what they did for AddressBook) → to discuss with team
2 (commented on others PR)
Other than this (+ a few things that Praveen has mentioned), LGTM to me!!:>
3 (commented on others PR)
I think should have empty line here??
4 (commented on others PR)
Not sure if I understood your TypicalWorkDuration class fully, but is it comparing different projects here?
5 (commented on others PR)
I think we should standardise to FIND_ALL_MATCH and FIND_ANY_MATCH for uniformity since filter might be confusing/misleading
6 (commented on others PR)
Yup, I think there is no need to put this method under Project. We can just keep it in Deadline!
7 (commented on others PR)
I think this is a good suggestion, you can remove the hasDeadline() method by doing this!
8 (commented on others PR)
I agree with Praveen, i think we can move it over to StringUtil
9 (commented on others PR)
Do the others think it would be a problem that the time for deadline is not checked against created time? I know we are not saving the created time and this would mean we would need to make changes to the created date to include time but I feel like if we are checking the date, we should be checking the time as well. What do the others think?
10 (commented on others PR)
I feel like ParseException should not be thrown here, perhaps a CommandException can be thrown so that we do not need to introduce ParseException to the execute method? What do the others think?
11 (commented on others PR)
Alright, sure! I'm okay with not checking the time
12 (commented on others PR)
Alright, noted! Thanks
13 (commented on others PR)
Can put {@code Project} here?
14 (commented on others PR)
Should have empty line here
15 (commented on others PR)
Is there a need to toggle toAdd boolean in this method?
16 (commented on others PR)
Is there any followup to this??
17 (commented on own PR)
oops i think they were added by mistake
18 (commented on own PR)
yup
19 (commented on own PR)
Yup, will add
20 (commented on own PR)
Not sure what the others think about this, I think that would also work.
21 (commented on own PR)
Nope, there are no other compulsory fields for Project other than name since description and tags are optional
22 (commented on own PR)
Fixed!
23 (commented on own PR)
Fixed!
24 (commented on own PR)
I changed the code for the parse method of AddCommandParser class instead so the existing getValue() method can be used, thanks for the comment
25 (commented on own PR)
Good suggestion, but could we push this to our next iteration if it is not too urgent? I am still not very familiar with how Json works, will need some time to work on it!
26 (commented on own PR)
Fixed!
27 (commented on own PR)
Will leave it as such as discussed, will discuss more in detail after implementation of project ID
28 (commented on own PR)
Yes I'll go fix it!
29 (commented on own PR)
Fixed!
30 (commented on own PR)
It should disregard the preamble.
I have added a test for this!
31 (commented on own PR)
Somehow the checkstyle doesn't pass it if i leave a newline, I think we can disregard these for now?
32 (commented on own PR)
Same as my previous comment
33 (commented on own PR)
I think we can leave it here since other classes are doing the same. We can move them to Messages in one go in the next iteration!
34 (commented on own PR)
Fixed!
35 (commented on own PR)
The reason why I need to use HashMap is because not all projects have Deadlines, and I'm using Comparator.nullsLast to place all projects without deadlines at the end of the list after projects with deadlines, so I need to compare Deadlines (and not Projects). But after extracting the deadlines (or nulls), I will still need to compare the names alphabetically in case of same deadline or null deadline, which is why I need to return the name as well. Anyone can lmk if there is a cleaner way to do this!
36 (commented on own PR)
Fixed!
37 (commented on own PR)
Fixed!
38 (commented on own PR)
Fixed!
39 (commented on own PR)
I have changed the SortCommandParser to fail when there is a non-empty preamble for consistency as AddCommandParser and FindCommandParser does the same. I have added a test accordingly!
40 (commented on own PR)
Fixed!
41 (commented on own PR)
Abstracted into a SortCommandUtil class!
42 (commented on own PR)
Fixed!
43 (commented on own PR)
Fixed!
44 (commented on own PR)
Fixed!
45 (commented on own PR)
Fixed!
46 (commented on own PR)
Done!
47 (commented on own PR)
Done as well!
48 (commented on own PR)
Done!
49 (commented on own PR)
I need to clarify with the others on whether we need this line, because this line conflicts with tests when it shouldn't for certain tests. I commented it out first
50 (commented on own PR)
Uhh it's a draft for UndoCommand, can we try to leave it first?
51 (commented on own PR)
Same as above:>
52 (commented on own PR)
Yup they are tests, they check whether the fields of modelmanager have been updated correctly after undo/redo
53 (commented on own PR)
This is related to the first comment, it is supposed to be there but it is conflicting with the other tests. Will clarify and resolve later when we call to fix code quality etc.
54 (commented on own PR)
It is because these methods are only called under 1 scenario (which is that it will work) which is why i didn't put test scenario. I added expected behaviour to the names so they sound more like tests!
55 (other comment)
Just wondering if it would be better to keep to one deadline command to indicate both date and time (so we don't need dt/ and dd/) so if you want to indicate time, you can do something like dl/VALID_DATE, VALID_TIME and if you don't, you can just put dl/VALID_DATE. Perhaps we could discuss with the group. Other than that, LGTM:)
I just realised that you already addressed this issue, and I'm ok with what you have suggested! Thanks:)
56 (other comment)
Yup, I think we can try to fix this issue
57 (other comment)
I think we should exclude the created date attribute when we are comparing two projects because it should not be an important attribute of the project? For example if I created this project yesterday and I forgot about it, and I make another entry today that has the exact same content, it should still be considered as a duplicate. What do the others think?
58 (other comment)
Yup I think that will be good
59 (other comment)
A correction of my previous comment, it is not just edit command, alternating commands cause the line to appear and disappear
60 (other comment)
the line appears and disappears with alternating commands!!
@pockii
(16 comments)1 (commented on others PR)
i think it should be tag edit ...
instead of edit tag...
?
2 (commented on others PR)
i think this should be edit tag
/tag edit
?
3 (commented on others PR)
should we include a case for when the given tag name is also invalid? (e.g. t/ is missing)
4 (commented on others PR)
I think we should change this to reflect Projact's aim instead?
5 (commented on others PR)
conflicts with master branch
6 (commented on others PR)
so just to clarify, this would be done by kk right?
7 (commented on others PR)
i think should be MESSAGE_DUPLICATE_TAG?
8 (commented on others PR)
i think this part is a bit confusing especially the command and features part?
(also what is the definition of feature vs command? because I've always interpreted feature as the whole aspect (e.g. contacts, tags, tasks...), and commands to be like what you can do with those features but maybe I'm wrong?)
also, i think the command name is normally named after the command word? so this could be kind of confusing
9 (commented on others PR)
should it be able to go back to chronological order? else, it feels like this should be our default setting since there's no other option
10 (commented on others PR)
previously raised, but maybe it should be SortCommand? or we change everything to fit e.g. AddContact...
11 (commented on others PR)
haha wait why did we need to remove this in the first place? i remember it was related to some hack thing?
12 (commented on others PR)
haha sorry let me rephrase, why was that comment there in the first place?
13 (commented on others PR)
ah i think it is possible for there to be no contacts with a tag to delete since tag add
creates a tag with no person attached to it? so maybe we shouldn't assert it haha but I'm not really sure!
14 (commented on others PR)
Potential errors/fixes:
after adding a
task...
maybe it would be more succinct to say "so how to mark the task as done once you've completed the task"
15 (commented on others PR)
see the task "..." have
a tick beside it?
16 (commented on others PR)
should we standardise all user input constraints to either information source or exclamation?
17 (commented on own PR)
oh ya, thanks!
18 (commented on own PR)
TaskClear currently mutates List>TagTask>
. Discuss if this is acceptable or there should be another way to ensure that Tag's fields remain immutable is needed.
@wilinetan
(16 comments)1 (commented on others PR)
I think can remove this line:
String viewCommandOption = nameKeywords[0];
2 (commented on others PR)
Nice use of this method!
3 (commented on others PR)
Agreed! Really helps to speed up the loading! 😃
4 (commented on others PR)
the numbering seems to off from 6.6.12 to 6.6.14
5 (commented on others PR)
Is this inserted in the content page as well?
6 (commented on others PR)
Does this mean that the greeting will always be reset upon start up?
7 (commented on others PR)
Will it be better to have a more helpful exception message thrown?
8 (commented on others PR)
to shorten the code for this part, perhaps you can consider just checking for the second condition
9 (commented on others PR)
same comment as above on shortening code
10 (commented on others PR)
Good catch of the bug!
11 (commented on others PR)
Perhaps the message can be clearer? e.g. "Please enter an index number after the command. e.g. delete -mc 1"
12 (commented on others PR)
I think theres a typo here should be "Parses a String score with integer values into a boolean"
13 (commented on others PR)
is the type suppose to be Mastery Check and params suppose to be editedMasteryCheck?
14 (commented on others PR)
Nice exceptions to have!
15 (commented on others PR)
i think password is missing a /p
16 (commented on others PR)
Actually do we want the headers to be in markdown as well? Cos currently the headers are not in markdown
17 (commented on own PR)
👍
18 (other comment)
LGTM thanks!
19 (other comment)
LGTM
20 (other comment)
LGTM
21 (other comment)
LGTM
22 (other comment)
LGTM
23 (other comment)
LGTM!
24 (other comment)
Thanks for updating the URL!
25 (other comment)
Thanks for implementing this feature!
26 (other comment)
Thanks for your all contributions to the project!
27 (other comment)
LGTM!
@amylzting
(16 comments)1 (commented on others PR)
Would it be better if there was no need to generate default serial number here? As I feel it is an extra step before we get the actual serial number for the stock. I may have an idea of how to do it, and can help to work on it!
2 (commented on others PR)
Perhaps could remove this line as it seems it is not relevant!
3 (commented on others PR)
Perhaps it is not needed to show the path to the serial number sets book?
4 (commented on others PR)
This line is pretty long. Perhaps could break it down to improve code readability?
5 (commented on others PR)
Perhaps could break down into more readable statements. Seen a few times!
6 (commented on others PR)
As mentioned, perhaps it is possible to remove this method!
7 (commented on others PR)
Perhaps could make a new exception class for the duplicate source?
8 (commented on others PR)
Perhaps "stock" should be "serial number set"?
9 (commented on others PR)
Should "inputted" be "input" instead?
10 (commented on others PR)
Should this line follow the format of the others such as what is shown in "status message"?
11 (commented on others PR)
Should we standardise past tense / present tense? ("Update" vs "Added")
12 (commented on others PR)
Based on our last meeting, I think prefix for quantity to increment/decrement should be changed to "iq/"?
13 (commented on others PR)
I agree!
14 (commented on others PR)
One of the note can be removed.
15 (commented on others PR)
Probably could remove this line? As we defined same stock as having same name, serial number and source.
16 (commented on others PR)
This part should be the reason why the stock is not updated. Should put the bookmark here as well. The bookmark above is for stock with notes.
17 (commented on own PR)
Thanks! Have done so in newest commit.
@hanweic53
(15 comments)1 (commented on others PR)
This should be the correct link to our repo instead: (https://github.com/AY2021S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/tr4cker/MainApp.java)
2 (commented on others PR)
As in the previous comment, some of the links in this file should change.
3 (commented on others PR)
"stores tr4cker data" instead? Same for the rest of this file haha
4 (commented on others PR)
As in the previous comment, it should be "tr4cker" instead of "taskDescription book"
5 (commented on others PR)
Misspelled "Examples"
6 (commented on others PR)
add a line spacing after each field perhaps?
7 (commented on others PR)
Maybe can use the existing n/ prefix for event name?
8 (commented on others PR)
Is there a more intuitive parameter name? Perhaps queryDays?
9 (commented on others PR)
Perhaps you can consider using a more intuitive variable name?
10 (commented on others PR)
Perhaps you can wrap -1 as a variable instead of using it as a magic number in the other methods as well?
11 (commented on others PR)
Perhaps you can use else-ifs to make this method more readable since only one of the clauses will be executed?
12 (commented on others PR)
Good use of abstraction here!
13 (commented on others PR)
Not sure if you should accept 0 as a valid argument because Users might be confused whether to use 0 or 1 to look at the events that are in >24 hours.
14 (commented on others PR)
This is related to the first comment; not sure if you should accept 0 as a valid argument.
15 (commented on others PR)
Maybe you can wrap this String as a variable in the Messages class since there're repetitive uses?
16 (commented on own PR)
Yes you're right.
17 (commented on own PR)
Yes, you're right.
18 (commented on own PR)
I think using toString() is apt because what we want is a String representation of a Deadline.
19 (other comment)
Merged #15
20 (other comment)
Merged #16
21 (other comment)
Looks good to me, ready to merge.
@ChenXJ98
(15 comments)1 (commented on others PR)
Looks good! I think we can stick with this for now 😃
2 (commented on others PR)
Target user profile looks good
3 (commented on others PR)
Value proposition looks. Slight grammar issue (feature instead of features).
4 (commented on others PR)
Grammar: 'flashcard' instead of 'flashcards'
5 (commented on others PR)
Looks good
6 (commented on others PR)
Looks good
7 (commented on others PR)
Thanks for helping to edit
8 (commented on others PR)
Export implementation looks great! Thanks!
9 (commented on others PR)
Great implementation!
10 (commented on others PR)
can remove propose here as well
11 (commented on others PR)
same over here and the few below
12 (commented on others PR)
Very welcoming! Thanks!!
13 (commented on others PR)
Looks good! I think its pretty clear!
14 (commented on others PR)
thanks for adding this was adding this myself hahaha
15 (commented on others PR)
Good usage!
16 (commented on own PR)
Noted, I have made the changes and standardised the format of our use cases
17 (commented on own PR)
getQuestion now returns String, I think the one you are looking at is outdated
18 (commented on own PR)
This code is outdated as well
19 (commented on own PR)
I think this method is to initialise sample question. But will not be implemented last after v1.2a
20 (commented on own PR)
We can discuss the naming during this week's meeting, cause quite a lot will change and I am afraid it might get confusing.
21 (commented on own PR)
okay I will change it! thanks
22 (commented on own PR)
I have done the changes, thanks!
23 (commented on own PR)
I've made the changes, thanks!
24 (commented on own PR)
Ah yes thanks for pointing this out!
25 (commented on own PR)
Okay noted. Thanks!
26 (commented on own PR)
yup! Thanks I have updated the diagram!
27 (other comment)
Okay thank you!
28 (other comment)
Since all issues relating to 1.1 is resolved, I'll close this issue.
29 (other comment)
lgtm! thank you!
30 (other comment)
Looks good! I will review it after lunch!
31 (other comment)
Hi thanks for pointing this out! We have made changes and the image should be showing up now. 😃
32 (other comment)
Hi thanks for raising this issue! We think you might have misinterpreted this. Since this is a sample question for the user to test out, we have included the correct answer along with the question so the user can test it out personally. We have made changes so that this idea can be more clearly presented! Thank you! 😃
33 (other comment)
Hi thanks for raising this issue! We think you might have misinterpreted this. Since this is a sample question for the user to test out, we have included the correct answer along with the question so the user can test it out personally. We have made changes so that this idea can be more clearly presented! Thank you! 😃
@kimberlyohq
(15 comments)1 (commented on others PR)
Should this be flashcard list instead?
2 (commented on others PR)
Maybe can rename this to execute_lowercaseKeyword_success
?
3 (commented on others PR)
I think it should be in alphabetical order, so after find
command
4 (commented on others PR)
Same as previous comment, should be after find
command
5 (commented on others PR)
do you think it will be better to just remove the “followed by” here also? coz I will be fixing that in #145
6 (commented on others PR)
I think this should be "...of a flashcard" instead?
7 (commented on others PR)
I think can change to the input format is invalid so that it will be consistent?
8 (commented on others PR)
I think can remove "in an order"
9 (commented on others PR)
I think it would be better to standardise fullstop
10 (commented on others PR)
I think can omit link to User Guide
11 (commented on others PR)
I think the use case should resumes from 2/4?
12 (commented on others PR)
I think the use case should resume from step 2?
13 (commented on others PR)
I think u forgot to add *a
14 (commented on others PR)
Btw, i think theres a typo in criteria
15 (commented on others PR)
I think u forgot to add here also [else]
16 (commented on own PR)
oh wait ya i will remove it
@hakujitsu
(15 comments)1 (commented on others PR)
Based on what I see, it looks fine when the page is published, and the spacing is the same as the other pictures.
2 (commented on others PR)
Based on what I see, it looks fine when the page is published, and the spacing is the same as the other pictures.
3 (commented on others PR)
Minor thing, but it would be good to standardise referring to the appointment as {@code appointment} in the JavaDocs as per hasAppointment and addAppointment!
4 (commented on others PR)
Should there be a full stop at the end of the javadoc? Very minor thing though! Is also in some other files
5 (commented on others PR)
Should there be a full stop at the end of the javadoc?
6 (commented on others PR)
Is this something that was implemented in this PR? I didn't experience any filtering out of past meetings when executing commands to refresh the display.
7 (commented on others PR)
Great, thanks for clarifying! Will approve and merge.
8 (commented on others PR)
I think you're missing a space after the date?
9 (commented on others PR)
Would be good to put the example in a separate line, currently it's cut off in the GUI!
10 (commented on others PR)
Should there be a line explaining the function of the constructor?
11 (commented on others PR)
Should there be a full stop after the JavaDoc?
12 (commented on others PR)
I'm not sure what this does, could it be omitted?
13 (commented on others PR)
There's a small typo in the word "conflicts".
14 (commented on others PR)
Should there be a message specified behind m/
?
15 (commented on others PR)
In AddCommand, CONTACT_INDEX
is used instead of simply saying index, which is done here. Could we standardise towards using CONTACT_INDEX
?
16 (commented on own PR)
Added more sample sales data and remarks as requested!
17 (commented on own PR)
Fixed in latest commit!
18 (commented on own PR)
Good point, I overlooked that. I think I'll keep that implementation and change the JavaDocs, since comparing the lexicographical order of the buyer's name is difficult to implement without having model
as one of the parameters.
19 (commented on own PR)
Renamed as suggested!
20 (commented on own PR)
Good catch, should be fixed in the new commit.
21 (commented on own PR)
I've deleted the typo!
22 (commented on own PR)
Hmm, I feel like it technically isn't needed compared to the updateModelWithContact methods, since removeModelsWithContact should provide the exact contact that matches the one in the model.
23 (other comment)
I think that should be fine, we could relook it if the refreshes cause any issues later!
24 (other comment)
Hmm, I pulled again to test but the meeting still remains greyed out for me and doesn't disappear, could you check again?
25 (other comment)
My bad, I tried again and it seems to be fixed. Will merge!
26 (other comment)
Duplicate of #184
27 (other comment)
Related to #211
28 (other comment)
Related to #211
29 (other comment)
Related to #211
30 (other comment)
Related to #207
31 (other comment)
Related to #207
32 (other comment)
Looked into this issue. Contact equality is based on persons of the same name having at least one other identity field that is the same. Therefore, there isn't an issue here.
Will clarify in User Docs.
@timjkong
(14 comments)1 (commented on others PR)
i think this is ok but we should have a command to edit start and end date within travel plan directory also if not it might be a bit confusing
2 (commented on others PR)
can change person to activity
3 (commented on others PR)
can change person to activity
4 (commented on others PR)
rename p to activity?
5 (commented on others PR)
person to activity
6 (commented on others PR)
AddressBook change to ActivityList?
7 (commented on others PR)
addressbook change to activity list?
8 (commented on others PR)
address book change to friend list?
9 (commented on others PR)
Returns true?
10 (commented on others PR)
AddressBook change to WishList?
11 (commented on others PR)
change person to activity
12 (commented on others PR)
person change to activity, addressbook change to wishlist
13 (commented on others PR)
addressbook change to wishlist
14 (commented on others PR)
think you accidentally added 'a'?
15 (other comment)
Also added delete command to user guide. Not sure why it wasn't there? Maybe got removed accidentally.
@jonahtanjz
(14 comments)1 (commented on others PR)
Maybe can remove this line as the repeat step will be doing the check?
2 (commented on others PR)
Perhaps can remove "System is the SimplyKitchen
" as "System" is not used below?
3 (commented on others PR)
Should "String expiry date" be "String expiryDate" to match the argument?
4 (commented on others PR)
Perhaps can consider "Searches for food items in the inventory with descriptions matching any of the given keywords." instead?
5 (commented on others PR)
Model#redoAddressBook()
should change to FoodInventory
6 (commented on others PR)
Perhaps can change these to FoodInventory?
7 (commented on others PR)
JavaDoc contains address book
8 (commented on others PR)
Perhaps can throw an "IllegalArgumentException" instead of returning null?
9 (commented on others PR)
Same here. Maybe can throw "IllegalArgumentException" instead?
10 (commented on others PR)
Perhaps it should be "If an entry is incorrect, ..."?
11 (commented on others PR)
Maybe can change "food" to "food item" to make it consistent with the rest of the UG? Same for "foods" as well.
12 (commented on others PR)
Same as above, maybe can consider using "food items" instead?
13 (commented on others PR)
Same for "foods" here.
14 (commented on others PR)
Perhaps can say "A tag cannot contain..." instead to be clearer because the restriction is for 1 tag?
15 (commented on own PR)
Yes overlooked that. Will make change back.
16 (commented on own PR)
Yup will change back.
17 (commented on own PR)
Yup sounds good to remove priority.
18 (commented on own PR)
Good catch! Will change.
19 (commented on own PR)
Ok noted. Will change.
20 (commented on own PR)
Thanks
21 (commented on own PR)
This is to ensure that both upper and lower cases are accepted as a valid command. For example, "add d/tuna p/HIGH" or "add d/tuna p/high" or "add d/tuna p/High" are all valid commands.
22 (commented on own PR)
Alright will change.
23 (commented on own PR)
Yup switch statement will be better. Will change.
24 (commented on own PR)
Yup good catch! Fixed
25 (commented on own PR)
Alright changed.
26 (commented on own PR)
Changed. Thanks
27 (commented on own PR)
Alright. Added new tests
28 (commented on own PR)
Alright. Changed
29 (commented on own PR)
Ok. I think I will change to four valid predicates.
30 (commented on own PR)
Noted. Will change.
31 (commented on own PR)
Ok. Will change these as well as the '4' to 'four' for the predicates.
32 (commented on own PR)
Alright updated. Thanks
33 (commented on own PR)
Alright updated. Thanks.
34 (commented on own PR)
Yup sure.
35 (commented on own PR)
Alright.
36 (commented on own PR)
Thanks
37 (commented on own PR)
Hmm I'm not sure about this but I guess it's fine because it's stated in the user guide and this would make the error message very long?
38 (commented on own PR)
Alright thanks will change.
39 (commented on own PR)
Ok will change.
40 (other comment)
Need to test feature
@peter-yeh
(14 comments)1 (commented on others PR)
This line should be above import seedu.address.*
That may be the reason why u failed the checks
2 (commented on others PR)
But I think you don't have to change alr, cause we won't be using this
3 (commented on others PR)
updatefilteredPersonList is not changed.
4 (commented on others PR)
are you missing a add-itinerary?
5 (commented on others PR)
I just realised this too, and this title should have 4 hashtag instead of 3
6 (commented on others PR)
I feel that we shouldn't hard code the numberings, so it's easier to add on items next time without renumbering
7 (commented on others PR)
And I think this would be auto generated without us typing it manually?
8 (commented on others PR)
As in this part can be skipped, cause it would be auto generated if you update your headings.
9 (commented on others PR)
With &&,
you only return true
if this attraction
start/end time is between the start/end time of itineraryAttraction
? Should it be ||
10 (commented on others PR)
Thanks
11 (commented on others PR)
return super; // if you want the Attraction
return this; // if you want ItineraryAttraction
12 (commented on others PR)
did return super work?
13 (commented on others PR)
wait.. why you change back to return this? you shld use super if you need only Attraction
14 (commented on others PR)
walaooo just add a enter here lah
15 (commented on own PR)
I think this is deleted
16 (commented on own PR)
This isn't deleted for some reason...
17 (other comment)
to check if I am still within my budget
18 (other comment)
...to track if I am going to exceed my budget
19 (other comment)
This thing fail my second commit because of a missing /next line
20 (other comment)
Wah this looks good to me alr
21 (other comment)
this looks good
22 (other comment)
The code couldn't pass test cases after I merged yuxuan's PR into master. So I tried to resolve the test cases on GitHub. Turns out it isn't so simple.
23 (other comment)
Merge this after Add itinerary #98 has merged
24 (other comment)
it's a feature
25 (other comment)
change command layout to add-itinerary-attraction so the parser does not need to accept 3 words command
26 (other comment)
Add Itinerary Attraction Command Integration Test as well
27 (other comment)
To get this error:
select-itinerary 1
add-itinerary-attraction 1 day/1 st/1000 et/1400
delete-itinerary 1
add-itinerary-attraction 1 day/1 st/1000 et/1400
Throws error that the attraction is duplicate.
Problem:
currentItinerary is still set to the old itinerary, even after deleting the itinerary
so when the user delete itinerary and call step 4, it would just check the ItineraryAttraction in the currentItinerary
Also, if the user calls add-itinerary-attraction with a new itineraryAttraction while the itinerary was just deleted, it would add back the deleted-itinerary into the list.
surprised not many ppl found delete-itinerary, add-itinerary-attraction bug
28 (other comment)
no idea why this is error. Maybe isStartTimeEarlier() error?
29 (other comment)
typo lah
30 (other comment)
31 (other comment)
10 reasons why we need markVisited
32 (other comment)
33 (other comment)
Add in user guide
34 (other comment)
only command exception and parser exception will cause the font to turn red
35 (other comment)
why can he put 1200-1200
36 (other comment)
your command prompt doens't support that char
37 (other comment)
suggestions: use a diff terminal
38 (other comment)
app starts fresh if json file is corrupted
39 (other comment)
error message to shows upper limit the integer takes in
40 (other comment)
throw visited attraction command error message
41 (other comment)
https://nus-cs2103-ay2021s1.github.io/website/schedule/week10/topics.html#singleton-pattern
singleton
42 (other comment)
I feel that add-itinerary-attraction is fast enough
43 (other comment)
it's more natural compared to add-i-a
44 (other comment)
explain why we didn't use short form in the introduction instead of using the long commands
45 (other comment)
46 (other comment)
For user guide
47 (other comment)
Remove EditItineraryAttraction table
48 (other comment)
I think you uploaded some images back into the image folder. I not sure which files are impt to your part. So can you remove those unused by you from the images folder and move those impt ones into the relevant sub folders tks.
@boundtotheearth
(14 comments)1 (commented on others PR)
I think it's ok since it should be the product name
2 (commented on others PR)
I agree, but i think not super important. Can do when we have time
3 (commented on others PR)
Would it be better for descriptions to be optional?
4 (commented on others PR)
What is the purpose of this method? Is it not possible to use/change the existing getValue() method?
5 (commented on others PR)
Should description be considered an identity field for a project? I.e. should we allow projects with same name but different description?
6 (commented on others PR)
I think it would be useful to implement the Json serialization such that if description does not exist, then it is taken to be empty (""), so we don't have to add a description to all the sample data
7 (commented on others PR)
Should this throw an exception instead?
8 (commented on others PR)
Should this method belong to ReadOnlyProjectBook instead? Logic should not have to know about the internal components of Model (i.e. tags). Can probably get the projectbook from logic, then get the tags from the projectbook
9 (commented on others PR)
Should this method be in Description instead? It doesn't require anything form project and is only calling a method from description, so I think we should put it together with all the other description code.
10 (commented on others PR)
Similar to above, should this be in deadline instead?
11 (commented on others PR)
Maybe can consider using something like LocalDateTime.MIN?
12 (commented on others PR)
Why is this being changed?
13 (commented on others PR)
Can UI or Statistic ever be null? I think it might be better to make sure that they're never null using requirenonnull rather try to handle null values. If either are ever null, there would be bug in other parts of the program anyways.
14 (commented on others PR)
I think its a small issue, so can just merge as it is
15 (commented on own PR)
The Timer class is only used to keep track of the active timers. Once the timer is stopped, the data is stored under a WorkDuration class (which has not reference to project), and put in a list inside the corresponding project.
I implemented it this way because I didn't want to store incomplete timers in a project, since it might cause problems if the timer wasn't stopped properly. Its also easier to check for active timers this way (see activeTimer in ModelManager)
And i think it would be easier to extend to having multiple concurrent timers if we decide to do that (then each timer needs to know which project its keeping track of)
Just storing the index won't work because the filtered list might change while the timer is running.
16 (commented on own PR)
Actually I think the Optional.equals() method also checks if both are empty, so I can just remove the 1st line
17 (commented on own PR)
Haha the javadocs is from the original addressbook. I'll change it
18 (commented on own PR)
This is mostly what i was referring to when i said more/better tests are needed.
Basically, since I'm using LocalDateTime.now() to get the current time, 2 times will never be exactly the same (they will be some nanoseconds apart). For example in tests, even if I start 2 timers immediately after one another, they will have different values, so equals() will still say that they're different. Since the existing tests involve checking if 2 models are equal, this will break a bunch of existing tests.
I'm think of either (a) Overloading the timer functions so that I can start them at a fixed time (just for testing) or (b) Introduce a custom global clock for the application to run on. The global clock will be the same as system clock in production, but in testing it will have functions that allow us to manually control the time.
19 (commented on own PR)
A user will never see this message (as of now) since we don't require users to manually input times. If we add commands that involve time inputs, then it might be better to not use ISO8601 format in the first place (its hard to read) and instead use some variation of the "yyyy MM dd hh:mm:ss" style.
This error only come up in logs when theres an error in loading saved data (e.g. the saved data is not in ISO format). For now I'll add an example of what the format looks like to the error message
20 (commented on own PR)
TypicalWorkDuraiton is just a class to provide dummy data for testing. I defined some simple durations like 1 day, week, month, etc for testing
21 (commented on own PR)
It was related to the immutability thing I told you about last time. Its not relevant anymore but they're both equivalent
22 (commented on own PR)
Ok fixed
23 (commented on own PR)
This was auto generated by intelliJ and I'm gonna assume that it knows better than I do
24 (other comment)
Sorry but I don't see the difference. Can you draw a big red circle around this line? (no troll i legit don't see it)
25 (other comment)
Fixed in #106
26 (other comment)
Yea I don't think created date should be a considered
27 (other comment)
I don't have this issue. Could it be due to your changes to the reminder UI?
28 (other comment)
Active Timers display has been changed.
@Anthony6401
(14 comments)1 (commented on others PR)
Why is there another >br />
? Is it intended?
2 (commented on others PR)
I think you forget to add role
3 (commented on others PR)
I think HelloFile does not need to read or write in help command, it shouldn't be in extension.
4 (commented on others PR)
This is the same as Luo yi's comment at the top.
5 (commented on others PR)
Is the "\n" before parameters intended? All the other command does not use "\n" before parameters. I think it is better to make it consistent.
6 (commented on others PR)
Okay then. Should we do that to all other commands?
7 (commented on others PR)
After seeing the screenshot, I also think it is better to use \n since we have so much space for the text box. Noted!
8 (commented on others PR)
Perhaps you mean to append the themeName here?
9 (commented on others PR)
Are we deleting appendix for manual testing altogether or will we add it later?
10 (commented on others PR)
What is this FileListStub for? I can't find any class that use this. If this class is not being used, can it be deleted? We can add it again later if we really need it, to make the code cleaner.
11 (commented on others PR)
Is it better to declare a static string and use string.format in here? I feel like it is better to use it rather than a magic string even though it is only " ".
12 (commented on others PR)
Alright!
13 (commented on others PR)
Is it better to combine the if check to one using "or" operator since both of them return false?
14 (commented on others PR)
Okay!
15 (commented on own PR)
Didn't realize that. Thanks!
16 (commented on own PR)
I tried using empty line, but the gap between Q and A is too large. I think it is better to use >br>
.
17 (commented on own PR)
Didn't catch that before. Thanks! I have changed it.
18 (commented on own PR)
Changed!
19 (commented on own PR)
I dont think this is related to TagCommand, since the value in here is from what being read from the preferences.json file. The absolutePath in here is to ensure it is a absolute path if the user try to manipulate the data inside the json file to use relative path.
20 (commented on own PR)
It is the behavior of the UnlabelCommand. It is not possible normally because the parser will throw an error, but if you can provide UnlabelCommand with an empty set, it will run successfully, with nothing changes. I saw a similar test case in the LabelCommand, so that's why I put it in the UnlabelCommand test too. I can delete it if you think it is unnecessary.
21 (commented on own PR)
At first, I am writing it to be similar like that, but I thought it is better if we can show which tag we are talking about in the CommandResult.
22 (commented on own PR)
Didn't see that. Thanks!
23 (commented on own PR)
Noted!
24 (commented on own PR)
Okay. I have added the new test.
25 (commented on own PR)
Added!
26 (commented on own PR)
Currently, in UnlabelCommandTest, I am using VALID_PATH that is in the CommandTestUtil. However, I need the VALID_PATH to be different with the default label in the TagBuilder, so that's why I am changing it. If I changed the default label in TagBuilder, more test case will fail, so I change the one in the CommandTestUtil.
27 (commented on own PR)
Actually, i'll try to change how the UnlabelCommand is tested. I'll revert back everything. For some reason, I thought it will be harder to change the UnlabelCommandTest. Sorry!
28 (commented on own PR)
This conversation is discussed above.
29 (commented on own PR)
This conversation is discussed above.
30 (commented on own PR)
Yeah, I miss that. Thank you for pointing it out!
31 (commented on own PR)
I'm just using it as cd user input, but yeah I think the name is kinda inaccurate. I'll change it to something that the project has!
32 (other comment)
test
33 (other comment)
Okay then. I'll close this PR.
@printinghelloworld
(14 comments)1 (commented on others PR)
How about "displays all your lessons and assignments for 2 weeks (including the current week)"?
2 (commented on others PR)
maybe can change to often 'late for appointments and struggling to meet deadlines'. but this is quite minor so can edit in the future
3 (commented on others PR)
I think module code might not have to end with an alphabet or number all the time right haha. maybe can phrase it '... have 4 numbers and may end with an alphabet.'
4 (commented on others PR)
just wondering, do we need an editPersonDescriptor at this stage or later?
5 (commented on others PR)
is this supposed to be 'in the context of RemindCommand' instead of DeleteCommand?
6 (commented on others PR)
does it have to be abstract since this class doesn't contain any abstract methods.. I think a normal class would suffice
7 (commented on others PR)
UnremindCommand?
8 (commented on others PR)
second* assignment
9 (commented on others PR)
oh okay, I didn't know that Command was abstract. ya we can leave it as abstract then
10 (commented on others PR)
maybe can rename to expectedHours since it's referring to hours
11 (commented on others PR)
what's this ResolverStyle just curious haha
12 (commented on others PR)
of your deleted assignment(s) ?
13 (commented on others PR)
Looks good! But I think it'll be good to mention some of the user benefits / problem that schedule solves
14 (commented on others PR)
Likewise for undo, I think can mention some of the user benefits
15 (commented on own PR)
okay we can discuss this in our meeting later!
16 (commented on own PR)
wait what do you mean? is it we allow them to have any number of tags as well?
17 (commented on own PR)
Okay updated!
18 (commented on own PR)
ah ok! line 57 right
19 (commented on own PR)
updated!
20 (commented on own PR)
thanks for pointing it out!
21 (commented on own PR)
edited!
22 (commented on own PR)
edited! thanks for pointing this out
23 (commented on own PR)
edited accordingly! thanks!
24 (commented on own PR)
whoops thanks for pointing this out
25 (commented on own PR)
changed to academic schedule!
26 (commented on own PR)
okay changed to Andrea's suggestion cause I don't think unmark is a proper English word as well according to Google haha
27 (commented on own PR)
Implemented using regex and changed the access modifier back to private!
28 (commented on own PR)
Yup remind has the same problem as well. I think it has something to do with how we implement .equals for the Commands in general. We kinda just check whether they're the same type I think
29 (commented on own PR)
The argMultimap will just parse those that are present into the HashMap. Like it won't crash or anything
30 (commented on own PR)
okay edited!
31 (commented on own PR)
Are you referring to the different components like the commandbox, remindersbox etc ? What are their names ah cause the labelled diagram is not up yet
32 (commented on own PR)
okay thanks!
33 (commented on own PR)
uhh I've no idea how to do that for Linux and Mac 🤣 @minhhhnguyen2000 @andreatanky anyone knows?
34 (commented on own PR)
ok !
35 (commented on own PR)
ahh okay thanks for pointing that out
36 (commented on own PR)
sounds good!
37 (commented on own PR)
Do we usually start with if though haha
38 (commented on own PR)
thanks !
39 (commented on own PR)
changed!
40 (commented on own PR)
cause isSameAssignment doesn't check for the module code haha, as long as name and deadline same it'll return they are same
41 (commented on own PR)
changed accordingly!
42 (commented on own PR)
ok thanks!!
43 (commented on own PR)
I changed it based on the prefixes he mentioned during our call that day. @minhhhnguyen2000 pls take note 👍
44 (commented on own PR)
okay thank you!!
45 (commented on own PR)
I think the TIME_DATE_AND_TIME_FORMAT
doesn't have the ':' though. @minhhhnguyen2000 are you okay with changing?
46 (other comment)
Looks good! Just a small suggestion, maybe we can standardise the use of capital letters under 'I can' and 'so that I can'. we can either capitalise the first word or not capitalise the first word for both scenarios 😃
Sounds good! Which do you suggest is better? I'm fine with either way 😃
I think for now we can not capitalise for both scenarios !
47 (other comment)
Let me fix the checkstyle
48 (other comment)
Have to update based on the final UG (Eg, delete multiple, edit assignments etc) Existing descriptions are great!
yeap I'll edit again on Thursday once our UG is updated!
49 (other comment)
Wait idk why got UserGuide stuffs inside
@siqiang-ng
(14 comments)1 (commented on others PR)
so is the command tagFind or tagfind?
2 (commented on others PR)
I think so too!
3 (commented on others PR)
Can I check why are there two TagDeleteCommand.java?
4 (commented on others PR)
Nice!
5 (commented on others PR)
I think this is delete?
6 (commented on others PR)
Ive added an exception here in my TaskDoneCommand to check if taskIndex is out of range, maybe you will want to add them here as well
7 (commented on others PR)
TaskDone to TaskDelete
8 (commented on others PR)
I think is TaskDeleteCommandParser.parse(arguments)
9 (commented on others PR)
TaskDelete*
10 (commented on others PR)
For the MESSAGE_USAGE
11 (commented on others PR)
Ok yep I realised this too and made the adjustment in taskdone as well
12 (commented on others PR)
I think since there is a method documentation so it is fine?
13 (commented on others PR)
thanks ahah
14 (commented on others PR)
I was thinking the information source to be used for other purposes? Like additional information. But exclamation is like something that it is important to take note of at that point in time.
15 (commented on own PR)
Ok! I can change to what was suggested. For the showing of 2 ways, I think a general one will be fine? Since like the use case is to show interaction between system and user.
16 (commented on own PR)
oh wait haha i think i should change to contact list.
17 (commented on own PR)
ok about the present tense, will take note
18 (commented on own PR)
ok done!
19 (commented on own PR)
done as well!
20 (commented on own PR)
Because in UniqueTagList, there is this test that checks whether the contains(Tag) method returns true even when the tag is edited. So to edit the tag, we will have to edit the person list (by adding one person in) that is attached to this tag.
@Test
public void contains_tagWithSameIdentityFieldsInList_returnsTrue() {
uniqueTagList.add(CS2103T);
Tag editedCS2103T = new TagBuilder(CS2103T).withPersons(VALID_PERSON_AMY)
.build();
assertTrue(uniqueTagList.contains(editedCS2103T));
}
21 (commented on own PR)
No apparently I tried to think of ways to do it but we could not because of the fact that UI get the Filtered List instead of the Sorted List, unless we implement the undo feature?
22 (commented on own PR)
I remove the comment only
23 (commented on own PR)
hmmm if like this, then we might have to change all to command only
24 (commented on own PR)
Ohh erm I was really confused w the implementation initially, because I think this is not a good long-term solution but I guess for now, we should just proceed
25 (commented on own PR)
ohh yep thanks
26 (commented on own PR)
sequence was changed to try out the sort method
27 (other comment)
Thanks! Made the necessary edits. Let me check what I can do about CommandResult.java
28 (other comment)
Does anyone know how to generate the Code Coverage result again?
29 (other comment)
Reformat the DG slightly.
30 (other comment)
Not going to put PersonName field under Tag
31 (other comment)
Not needed anymore
@GabriellaTeh
(14 comments)1 (commented on others PR)
you forgot to change the prefix, i think it should be type:
2 (commented on others PR)
I dont think addressbook should be changed to typebook
3 (commented on others PR)
This one also, should not change addressbook to typebook
4 (commented on others PR)
this one also, should not change
5 (commented on others PR)
this should be dateTime
6 (commented on others PR)
Should be "constructs an empty DateTime when user does not provide the dateTime field
7 (commented on others PR)
comment should be dateTime
8 (commented on others PR)
Comment should be invalid dateTime
9 (commented on others PR)
this comment also
10 (commented on others PR)
should DEFAULT_DATE_TIME
11 (commented on others PR)
should be dateTime instead of Phone
12 (commented on others PR)
Not sure if it is just me but i usually write thursday as 'thurs' in short from but it must be 'thu' for the input. Maybe can make it clearer?
13 (commented on others PR)
change the name of the task to editedEvent1 or something
14 (commented on others PR)
this one also
15 (other comment)
For use cases for list, add, delete, it should be task not person.
16 (other comment)
Also currently the message says that the lesson is added when the end date can be set before the start date, but it does not show up on the list. Should change the output message
17 (other comment)
Have you fixed the
###>Title>
problem as mentioned in the issue?
I could not find the problem.
@Rahul0506
(14 comments)1 (commented on others PR)
Would be better to name it as "exactlyMultipleWordsIgnoreCase"? "contains" is a little misleading.
2 (commented on others PR)
Can you not just import the View.InventoryType ?
3 (commented on others PR)
same as before
4 (commented on others PR)
maybe use a more descriptive name
5 (commented on others PR)
missed this
6 (commented on others PR)
I think you can import only DEFAULT_DESCRIPTION separately?
7 (commented on others PR)
just use requireNonNull?
8 (commented on others PR)
Don't need the "this"
9 (commented on others PR)
Is this used anywhere? It was deleted for the Item class, and UniqueRecipeList no longer uses it
10 (commented on others PR)
"redoes undone change" might be more clear?
11 (commented on others PR)
Change these to reflect comma-separated
12 (commented on others PR)
" " (space) after command_word needed
13 (commented on others PR)
Wouldn't it be better to set the filter to search for the item, then use the filteredList? Right now it seems like it uses the "currently filtered list" which might not be intended if you use this command after doing maybe a "find", as the item searched for might not exist in the subset filtered.
14 (commented on others PR)
Don't need the empty check above anymore, stream would handle it
15 (commented on own PR)
This was specified in user guide, can be changed easily regardless
16 (commented on own PR)
Good note, modified
17 (commented on own PR)
changed to "apple banana carrot"
18 (commented on own PR)
Done, my bad
19 (commented on own PR)
huh, yeah that was dumb
20 (other comment)
I think I did this in my PR. Need to check after merging if any files remain
21 (other comment)
Also need to add following commands:
clear item/recipe
craft
edit
undo/redo
22 (other comment)
Dunno what this means
23 (other comment)
UG update needed
24 (other comment)
UG update needed
25 (other comment)
Options not implemented currently
26 (other comment)
UG update needed
27 (other comment)
Modify Parser/Quantity constructor. It does the check, but doesn't convert to an integer
28 (other comment)
Documentation update needed/ handle optionals
29 (other comment)
The open square bracket should not have a space before it. Either:
UG update needed, or
Modify parser to be able to accommodate a space
30 (other comment)
Space " " is not regarded as alphanumeric. It seems the Exception is not successfully raised/ lost somewhere
31 (other comment)
CraftCommand
uses AddQuantityToItemCommand
for each update. Each of these commits. Either change where commit takes place (eg. to LogicManager.execute) or smth else
32 (other comment)
Message update needed
33 (other comment)
Just a bunch of UG updates
34 (other comment)
Specify in UG more explicitly
35 (other comment)
Same as with tags, verification checks raise error but it gets lost
36 (other comment)
Same as #134
37 (other comment)
Case sensitivity, dunno if we should edit
38 (other comment)
UG update needed
39 (other comment)
UG update
40 (other comment)
Same as #133
41 (other comment)
UG update/ modify parser to handle optional
42 (other comment)
Seems like "platter" isn't there. Should make it more clear in UG that item must exist for a recipe to be added to it
43 (other comment)
I dunno what this is, asked for more info
44 (other comment)
Yeah I just tested this and found it weird
45 (other comment)
UG update
46 (other comment)
Quantity verification check update
47 (other comment)
Maybe something to consider adding in the view command
48 (other comment)
Proper bamboozle, no sanitisation before compiling the Pattern. Same for find
command
49 (other comment)
Same core issue as #113
50 (other comment)
Different Exception raised, dunno what to do about this
51 (other comment)
Recipe similarity check uses only id
52 (other comment)
Same core issue as #115
53 (other comment)
Same as #135
54 (other comment)
Superseded in #107
55 (other comment)
Superseded in #129
56 (other comment)
Intended. But maybe have this as an alias for a default list command, like listi
@erinmayg
(13 comments)1 (commented on others PR)
I think it's supposed to be Module
2 (commented on others PR)
Should we use FaculType instead of address book or just keep it as it is?
3 (commented on others PR)
Perhaps it would be better to use MODULE_CODE and MODULE_NAME instead? I think it avoids confusion and keeps it consistent.
4 (commented on others PR)
I think it'd be better to phrase it as "The list has at least one module."
5 (commented on others PR)
Can also search by remark and tags 😄
6 (commented on others PR)
I think it's supposed to be Unassignall 😄
7 (commented on others PR)
Have you tried special blank characters like "\n", "\t", etc. ?
8 (commented on others PR)
I think this should be ListCommand 😃
9 (commented on others PR)
Can also try to test on special characters like "\n", "\t", etc. 😄
10 (commented on others PR)
I think this is supposed to be {@code moduleCode}
11 (commented on others PR)
Same typo heheh.
12 (commented on others PR)
I don't think this uses "the" (?)
13 (commented on others PR)
I think there's a typo here
14 (commented on own PR)
Oh yes. It seems I forgot to change it haha 😅
15 (commented on own PR)
Hm... I was just following the class name. Wouldn't it be weird if "professors" suddenly appeared out of nowhere since it has never been mentioned before?
16 (commented on own PR)
Okay! 👍🏻
17 (commented on own PR)
Ok! 👍🏻
18 (commented on own PR)
Oops. I forgot. Thanks for reminding! 😄 Will implement it ASAP.
19 (commented on own PR)
I've added it! 😃 Thanks for the input!
@Asthenosphere
(13 comments)1 (commented on others PR)
Should change to StonksBook here as well.
2 (commented on others PR)
Maybe it would be better if we add comments along the way as we write code? Just a suggestion haha.
3 (commented on others PR)
Can remove the tag add command since we will not be supporting it.
4 (commented on others PR)
Just a small thing, would it make more sense if we set the condition to yearValue > 1970 or something?
5 (commented on others PR)
ascending?
6 (commented on others PR)
Same as above
7 (commented on others PR)
Should this Enter be in >kbd>>/kbd> as well?
8 (commented on others PR)
>kbd>
9 (commented on others PR)
Ascending
10 (commented on others PR)
Just wondering if all the examples should all be step-by-step.
11 (commented on others PR)
"Quantity should be a positive integer less than 10 million, and should not be blank.";
12 (commented on others PR)
assertFalse(UnitPrice.isValidUnitPriceString("-1.00")); // negative unit price
13 (commented on others PR)
Just nitpicking here, is there missing a space for the MONTH and YEAR rows?
14 (commented on own PR)
Yep, this will be relevant once my next PR is in.
15 (commented on own PR)
Right sorry haha
16 (commented on own PR)
Thanks!
17 (commented on own PR)
Good catch lol
18 (commented on own PR)
Hmmmm I've tried this approach, but seems edit and delete command only work if the filtering is done on the sorted list.
19 (commented on own PR)
Hmmmm the original was addressBook.json here so I kept it in camel case. I will try changing to lower case and see if anything goes wrong.
20 (other comment)
Already implemented in AddressBook, will open a new issue for the tag operations etc.
21 (other comment)
Good catch! I think it would make more sense to treat this action as a tag delete if there's only one contact with this tag.
22 (other comment)
Seems there's some very strange issues with this branch. Will close this PR and open a new one.
23 (other comment)
Closed in PR #96
24 (other comment)
Maybe we wait for everyone to add docs for their parts and merge together? @sebastiantoh
25 (other comment)
Make sense, will refactor.
26 (other comment)
Not really sure what the issue here lol
27 (other comment)
Unable to reproduce. Closing.
@schoolex
(13 comments)1 (commented on others PR)
Are you missing a new line here?
2 (commented on others PR)
should it be persons?
3 (commented on others PR)
Room follows this format
>Level>>Room No>
Shouldnt the range from room include other levels other than 1?
eg. 100 - 420 (The block has 4 levels, 20 rooms per level)
4 (commented on others PR)
Seems like there is a typo here
5 (commented on others PR)
should it be .txt files instead?
6 (commented on others PR)
Better to use a table form
7 (commented on others PR)
Is the format consistent with the numbering style in the logic API?
8 (commented on others PR)
There's a typo here, follwed -> followed
9 (commented on others PR)
Is there a formatting issue with the escape character
10 (commented on others PR)
The argument in the method does not match step 1. Can consider shortening it to find
11 (commented on others PR)
i think set functions violates the 'ReadOnly' function of this class. Can consider using the 'UserPrefs' class instead
12 (commented on others PR)
Can consider using UserPrefs
instead
13 (commented on others PR)
typo here, 'not longer'
can consider changing the "erase the existing data" to "reset it to default settings"
14 (commented on own PR)
Will update this
15 (commented on own PR)
Will add a toUpper() to enforce caps
16 (commented on own PR)
It needs to be set before the addressBook
is loaded else there will be a validation error when loading the saved addressBook
17 (commented on own PR)
UserPrefs
is just a class to store the info of the preferences. It does not actually modify another class attributes
18 (commented on own PR)
This is the default value which be overridden by setBlockPref
, its needed for testing since all the test cases do not read from the preference file
19 (commented on own PR)
userPref
will never be null
, because the check is done in UserPref
. Block
and Room
in this case is referring to the class, so it cant be null
either
20 (commented on own PR)
Good catch
21 (commented on own PR)
its handled in the respective set methods, eg setMinFloorSettings
22 (commented on own PR)
i cant parse the input if the length is correct. Updated my implementation to show constraints for both block and room
23 (other comment)
Tracked by tp dashboard
24 (other comment)
Will fix this bug
25 (other comment)
Duplicated issue #206
@CodingCookieRookie
(13 comments)1 (commented on others PR)
Should we remove this and use run in debug mode when its finalised
2 (commented on others PR)
I like your usage of stubs!
3 (commented on others PR)
Pattern.matches throw some exceptions when dealing with some corner cases like. Perhaps String.matches() do as well?
4 (commented on others PR)
Perhaps studentAttributesList would be better here?
5 (commented on others PR)
Should this be AddStu instead of Add? Because there is a AddSes later
6 (commented on others PR)
Perhaps can remove this now ? 😃
7 (commented on others PR)
Perhaps can combine "If the argument is valid" with no argument ==> If argument is invalid, a ParseException
...?
8 (commented on others PR)
Thanks for the suggestion but if the argument is invalid, it throws a CommandException but if argument is empty it throws a ParseException. Hence, this is why I separated them.
Noted thanks for clarification
9 (commented on others PR)
Perhaps don't have to leave a blank line here?
10 (commented on others PR)
Perhaps could be better phrased to ":tip: After receiving the confirmation prompt, enter yes
to confirm the removal of student at the specified INDEX
or reject the command by entering no
"?
11 (commented on others PR)
Perhaps could have more consistent usage of active vs passive voice?
12 (commented on others PR)
Perhaps ATAS should be bold for consistency?
13 (commented on others PR)
Should this be Examples?
14 (commented on own PR)
oops LOL yeah thanks!
15 (commented on own PR)
yup thanks for spotting the mistake!
16 (commented on own PR)
Noted with thanks!
17 (commented on own PR)
Noted and edited with thanks 😄
18 (commented on own PR)
Noted and edited with thanks 😄
19 (commented on own PR)
Noted and edited with thanks 😄
20 (commented on own PR)
what do you think I should replace it with though?
21 (commented on own PR)
Edited with thanks 😄
22 (commented on own PR)
Edited with thanks
23 (other comment)
LGTM
24 (other comment)
LGTM. However, would changing
current
tocurrent session
maybe make the command too long for the user to have to type? Maybe the rest of the team could chime in on this as well. @CodingCookieRookie @YuunoKun @MarcusTw
I would prefer current personally 😃
25 (other comment)
LGTM
@Ashley-Lau
(13 comments)1 (commented on others PR)
I think it would be good to standardise. LGTM other than this.
2 (commented on others PR)
Are we going to allow the new quantity to be less than 0?
3 (commented on others PR)
Where do you suggest then? The other location I can think of is stock class.
4 (commented on others PR)
Is there an extra tab here?
5 (commented on others PR)
I think you shouldn't use the short form of accumulated here for the class name?
6 (commented on others PR)
I think this is fine.
7 (commented on others PR)
Should we include an example which shows the usage of deleting multiple stock?
8 (commented on others PR)
Maybe can include the word "multiple" to make the use case more explicit? Some people with poor English like me might miss this out.
9 (commented on others PR)
just a small typo here I chanced upon
10 (commented on others PR)
i think this is for you to debug and you forgot to remove?
11 (commented on others PR)
minor inconsistency in the naming
12 (commented on others PR)
here too
13 (commented on others PR)
Is there supposed to be a 1 behind the fairprice here?
14 (commented on own PR)
Nope. I think the refactoring screwed up all the links within the docs. Good catch!
15 (commented on own PR)
We would be storing stocks rather than person in our warenager so I thought the renaming of the class would be appropriate here.
16 (commented on own PR)
Alright will remove it!
17 (other comment)
LGTM!
18 (other comment)
LGTM!
19 (other comment)
LGTM
20 (other comment)
update sn/fairprice1 iq/1000 sn/fairprice2 seems to be incrementing both stock by 1000. Is this the expected behavior?
21 (other comment)
LGTM!
22 (other comment)
Included changes for print command here as i dont want to make another pr before this branch is merged.
23 (other comment)
Noted with thanks.
24 (other comment)
Have made the necessary changes. Thanks for the suggestion!
25 (other comment)
Very good catch! Have fixed the issue. Thanks!
@VaishakAnand
(13 comments)1 (commented on others PR)
Minor issue, could you change users
to students
, because its a list of students not users. Otherwise, LGTM!
2 (commented on others PR)
Should be &&
instead of ||
for school and year.
The student is the same only if all the field values are the same.
3 (commented on others PR)
Should be detailList
, instead of tagList
4 (commented on others PR)
I understand you want to separate the syntaxes, but I feel these should be in CliSyntax
with the other prefixes instead, so that all the prefixes can be found / accessed easily in a centralised location, rather than all over the place. It could just be separated from the other Prefixes in a different block of code
5 (commented on others PR)
Minor suggestion, could replace prefix
with field
instead, so that a non-technical user reading the user guide can better understand.
Eg: The s/ field marks an unanswered...
6 (commented on others PR)
Need to change TIME_FORMATTER
to OUTPUT
for both startTime and endTime
7 (commented on others PR)
add Coming soon here
8 (commented on others PR)
add here
9 (commented on others PR)
add here
10 (commented on others PR)
Why are these changed uh, cos i think the extra ---
in the link breaks the links.
11 (commented on others PR)
Duplicate line
12 (commented on others PR)
Minor change, could you update the javadoc as well
13 (commented on others PR)
typo hahaha
14 (commented on own PR)
okay, removed
15 (commented on own PR)
Oops! Thank you, i've fixed it!
16 (commented on own PR)
Fixed, thanks!
17 (commented on own PR)
Okay, resolved
18 (commented on own PR)
Good catch! I'll remove it in my next PR.
19 (commented on own PR)
Good suggestion! I've implemented it in my latest commit.
20 (commented on own PR)
Thanks again, I've just implemented this in my latest commit.
21 (commented on own PR)
Correct, we can't edit for now. I can do a separate PR to allow for such an edit
22 (commented on own PR)
Sure
23 (commented on own PR)
okay, ill do it like this: 1) 30 October 2020 (✓) FEEDBACK
24 (commented on own PR)
Changed it to this:
25 (commented on own PR)
Yikes
26 (other comment)
Good point, I'll do so in my next PR, thanks!
27 (other comment)
Fixed before PE dry run started.
28 (other comment)
Duplicate issue (#190 )
29 (other comment)
Fixed before PE dry run.
30 (other comment)
Duplicate issue (#190 )
31 (other comment)
Duplicate issue (#190 )
32 (other comment)
Editing details through edit command would make it more difficult, as it would be complicated to find out which detail within the student the user wants to edit, and to get the desired new detail text for the detail. Bringing it out to separate command makes it clearer for the user, and easier for all parties.
Therefore, we won't be implementing this suggestion.
33 (other comment)
Duplicate issue (#152 )
34 (other comment)
Handled by #194
35 (other comment)
For all the sequence diagrams, does the newly created Student really get destroyed, since this Student object replaces the older student in the Model, when
setStudent(student, copy)
is called.
I can't comment on the exact lines since they're from a previous pr. Outside of this, everything looks ok to me.
The command takes an existing student (the student in the diagram) and creates a copy from it, then replaces it in the model. Then the old student should get deleted since nothing points to it anymore.
AH ok gotcha. Then in that case, should we show the new student object (copy) creation? Or would that be considered a low level detail that we don't have to show.
36 (other comment)
For all the sequence diagrams, does the newly created Student really get destroyed, since this Student object replaces the older student in the Model, when
setStudent(student, copy)
is called.
I can't comment on the exact lines since they're from a previous pr. Outside of this, everything looks ok to me.
The command takes an existing student (the student in the diagram) and creates a copy from it, then replaces it in the model. Then the old student should get deleted since nothing points to it anymore.
AH ok gotcha. Then in that case, should we show the new student object (copy) creation? Or would that be considered a low level detail that we don't have to show.
I feel like I can elaborate on it in the description bah
hmm okay, i think I'll show the creation in my diagrams tho, if thats fine. LGTM
@florenciamartina
(12 comments)1 (commented on others PR)
Perhaps it is better to rename the set to "professors"?
2 (commented on others PR)
Perhaps it is better to change this to "ModuleName" to avoid confusion?
3 (commented on others PR)
Perhaps it is better to change this into ModuleCode instead?
4 (commented on others PR)
I think it is better if the error message is "Operation would result in duplicate modules".
5 (commented on others PR)
You are right, I think just leave it as "persons" for now.
6 (commented on others PR)
LGTM for me 👍
7 (commented on others PR)
Perhaps you can change this to UniqueModuleList for the sake of consistency? (since it is UniquePersonList for Person) 😄
8 (commented on others PR)
Minor problem, but should this be MESSAGE_MODULES_LISTED instead?
9 (commented on others PR)
Should this be ".. to show only the module
at the given.." ?
10 (commented on others PR)
May I ask what is the "final" modifier for? 😅
11 (commented on others PR)
Do you think it's better if the variable name is changed into "moduleToSet"? 😄
12 (commented on others PR)
Cool, thanks for the clarification!
13 (commented on own PR)
You are right, I forgot to change it! 😅
14 (commented on own PR)
I'll change it to FaculType instead.
15 (commented on own PR)
alright!
16 (commented on own PR)
Make sense. I'll change that.
17 (commented on own PR)
I have made some changes. Can you check it again? thanks.
18 (commented on own PR)
Got it. Will change it.
@csiongn
(12 comments)1 (commented on others PR)
Hihi I think our find command syntax has changed. So we need the 1 optional parameter after find
to use the find command
2 (commented on others PR)
Hihi the find command syntax needs to be changed here also later.
3 (commented on others PR)
Should we remove the traces of address book?
4 (commented on others PR)
here also but i think rmb to change later
5 (commented on others PR)
Hi sflr but can I just clarify that having this line means that during execution of this, if the list is filtered then it would choose the index for student based on the filtered list but after adding it would go back to the non filtered list. Is this like the intended behaviour?
6 (commented on others PR)
I think there is a change in the command format for this part to put the solution if im not wrong. So might want to update the use format message because right now I think it's still the old message
7 (commented on others PR)
For this line take note because matcher.matches()
changes the state of matcher, when assertions are not used there might be bugs.
8 (commented on others PR)
Hmm would this method be better off in SchoolType.java
instead since it's about SchoolType
? Also, I think because it's a static method just take note that the assert statement can potentially cause bugs if the method is used for other things since the string might not always be validated?
9 (commented on others PR)
And also I think note that isValidSchoolType
is actually less stringent than the validation regex in Year.java
due to casing (so 'sEC 3' would be valid under isValidSchoolType
but not under Year.java
's validation regex). I don't think it affects anything here but if more changes are made this might potentially be relevant?
10 (commented on others PR)
I think can consider adapting these tests and moving over to the YearTest.java
instead of deleting if the parsing of SchoolType is moved to Year.java
? Because right now YearTest
does not have much tests as the constructor assigns only the given schoolType
and level
to attributes but if the parsing is moved over there I think can potentially add more tests there.
11 (commented on others PR)
Hmm just a comment though: I found the name PrefixDependentParser
a bit hard to decipher at first. Do you think something like WithPrefixCommandParser
would be better if we were to make changes in the future?
12 (commented on others PR)
Hi! I would be making changes to my section of the user guide separately so there's no need to update this part for now. Also, for line 281 the "(case sensitive)" portion, I think it can be confusing so I am thinking it would be better on another line
13 (commented on own PR)
Right thanks! I've just updated it!
14 (commented on own PR)
Thanks for the feedback, I've changed the testing method in ReeveParserTest
! I've also refactored the way find command is implemented.
15 (commented on own PR)
Thanks for mentioning this, the branch was created before the updates were pushed but I've now merged the changes from master! I've also updated the user guide to clarify the behaviour of this.
16 (commented on own PR)
I think I added it in during testing but okay i think i'll remove it, thanks!
17 (commented on own PR)
I changed to public because I created a method getFindStudentDescriptorDetails
in a testingutil StudentUtil
that required access to the keywords to create the command. Would it be better to use getters instead?
18 (commented on own PR)
Yep something similar currently "sec 3" would match "sec 1-4", "p 3" and "s 3" but not "p3" or "s3" as it matches by whole words so "p3" is not "sec" or "3" hence it won't match. Same for "s3"!
19 (commented on own PR)
Reminder to self: Change line 69 reference to filtered list also
20 (commented on own PR)
I think notes
being the command word was meant to refer to the notes feature so notes add
meant like going to the notes feature and adding a note. I've changed notes
to notebook
if that better clarifies the command?
21 (commented on own PR)
Thanks for pointing out the code duplication! I've checked the ParserUtil
docs and it says "Contains utility methods used for parsing strings in the various Parser classes." so I was just thinking that this would expand the scope of a class already with a lot of methods. If it is better, I've moved it to Parser
as a default implementation instead!
22 (commented on own PR)
Okay thanks for pointing it out! I've just changed the note keyword to note
!
23 (commented on own PR)
(To be addressed later pending creation of new utility classes)
24 (commented on own PR)
Okay thanks for pointing the potential misreading in line 204! For line 206 I don't get what you mean by "e.g Yishun
will match Yishun Sec
but not Yishun Secondary
." as Yishun
currently will match Yishun Secondary
.
25 (commented on own PR)
Also, would "the entire given keyword
" brings up the possibility of confusion as this can be interpreted to mean that the entire keyword string must be found in one chunk.
26 (commented on own PR)
Right! Nice catch!
27 (commented on own PR)
Oops I left it out by accident. I meant more elaboration for how the year is parsed and interpreted by Reeve. Hmm I feel saying "for name search", "for school search" etc feels like there is only one criteria they can use instead of multiple as in our app. If it's better, I've just changed it to "for the name criteria" etc!
28 (commented on own PR)
Hi! I might be wrong but actually I don't see any info-box (edited: *for the year section) in the add command and I copied this format from the add command
29 (commented on own PR)
Also, I copied the year format section because I thought that was what we discussed in the group?
30 (commented on own PR)
Maybe you can clarify what you mean by OR search? Because my understanding is that "matches any full keyword specified" makes the logic quite clear already (and also that is an OR search in that it can match any keyword) without going too deeply into the technicalities
31 (commented on own PR)
Hi, okay I have bolded any full keyword
if it makes it less confusing. I don't get what you mean by do something for school search but I have bolded all keywords
in the same spirit!
32 (other comment)
Changing structure of student class so not being implemented anymore.
33 (other comment)
I think need update the CommandTestUtil file to this: https://github.com/AY2021S1-CS2103T-W15-2/tp/blob/master/src/test/java/seedu/address/logic/commands/CommandTestUtil.java
34 (other comment)
Yes I forgot to thank you for pointing that out! I've just uploaded them!
@joshualiangxy
(12 comments)1 (commented on others PR)
Should just be ParserUtil
2 (commented on others PR)
Add aliases here
3 (commented on others PR)
And here
4 (commented on others PR)
the with/
prefix is still case sensitive
5 (commented on others PR)
Maybe we should use command deletealias
and deletea
?
6 (commented on others PR)
Added the feature to delete journal entries from the application.
7 (commented on others PR)
I think this change is not needed
8 (commented on others PR)
I think adding these tips for editc
would be nice as well.
9 (commented on others PR)
Typo: Model#updateAlias(Map>String, ValidCommand> map)
updates the model with a Map
10 (commented on others PR)
Maybe we should add a tip here that default aliases cannot be removed?
11 (commented on others PR)
I think you can omit the first part of the sentence here.
Assuming you want to add Type st
as an alias for switch
, talias switch st
into the command box and press enter.
12 (commented on others PR)
Same thing here, there should be no ifs here, since this example will definitely be successful.
So maybe change it to:
This adds st
as a valid shortcut for the command switch
13 (commented on own PR)
This part checks for if you are trying to add a new person with the same name and phone or same name and email, so the UID can be different here.
14 (other comment)
The command in question: view in/c index/ANY_VALID_INDEX
15 (other comment)
Change list
command in UG
16 (other comment)
Remove bold and add space in UG
17 (other comment)
Remove date in UG
18 (other comment)
Duplicate issue
19 (other comment)
Duplicate issue
20 (other comment)
Update UG (tags should not have spaces)
21 (other comment)
Update UG for edit command (Name should not be compulsory field)
22 (other comment)
List JFoenix in website
23 (other comment)
Duplicate issue
24 (other comment)
Check unique person should check name
25 (other comment)
Change quickstart screenshots
26 (other comment)
Duplicate issue
27 (other comment)
Update UG
28 (other comment)
Duplicate issue
29 (other comment)
Duplicate issue
30 (other comment)
Add ...
in UG for with/
tag
31 (other comment)
Duplicate issue
32 (other comment)
Duplicate issue
33 (other comment)
Update UG with expected behaviour if multiple of the same tag is used
34 (other comment)
unhandled localdatetime parse exception?
35 (other comment)
Duplicate issue
36 (other comment)
Use YYYY-MM-DD HH:MM
instead
37 (other comment)
Viewing 1st entry & contact on launch
38 (other comment)
Duplicate issue
39 (other comment)
Duplicate issue
40 (other comment)
update find command in UG
41 (other comment)
Duplicate issue
42 (other comment)
Should be fixed
43 (other comment)
Duplicate issue
44 (other comment)
Maybe need a better checker
45 (other comment)
Update UG that it starts with sample contacts and entries
46 (other comment)
^(\+65)?(6|8|9)\d{7}$
47 (other comment)
Update UG as well that phone numbers we take in is Singaporean numbers
@AudreyFelicio
(12 comments)1 (commented on others PR)
Should you add a space between ####
and Use
so that the format would be consistent with the other files?
2 (commented on others PR)
Is all the location
a placeholder for now?
3 (commented on others PR)
Why is all person
changed to stock
?
4 (commented on others PR)
Based on the CS2103T website, the UI mockup should be put on docs/images/Ui.png
instead of docs/images/Warenager.png
.
5 (commented on others PR)
I agree with Ashley here.
6 (commented on others PR)
Yes, I think it would be good to include deleting multiple stock at once.
7 (commented on others PR)
I think the indentation is too large, should only be 8 spaces.
8 (commented on others PR)
Maybe consider removing this first so the code will be cleaner. Can always refer to this later by viewing GitHub commit history
9 (commented on others PR)
Should be UpdateStockDescriptor
10 (commented on others PR)
I think sn/>serial number>...
is already correct.
11 (commented on others PR)
I think the CSV
on userInput.CSV
should be lowercased as in this context it is a file extension. Same issue with other CSV
below.
12 (commented on others PR)
I think the JSON
on stockbook.json
should be lowercased as in this context it is a file extension. Same issue with other JSON
below.
13 (commented on own PR)
You're right Ashley, it does not make sense for a quantity to be negative. Thanks for spotting this problem, I will fix this immediately.
14 (commented on own PR)
Yes. Thanks for mentioning!
15 (other comment)
update sn/fairprice1 iq/1000 sn/fairprice2 seems to be incrementing both stock by 1000. Is this the expected behavior?
Yes, since now we allow to update multiple stocks at once.
16 (other comment)
Some merge conflicts still need to be resolved. @LimZeWeiDennis
17 (other comment)
Some merge conflict arises due to merging other PRs. @amylzting
18 (other comment)
Done implementing both ascending and descending order
19 (other comment)
Not accepted as a bug. The sorting list indeed shows the correct ascending order of name field. Notice that 100
is lexicographically smaller than 2
and hence 100
is correctly listed before 2
.
20 (other comment)
This is a very good catch! Thanks for reporting, bug has been fixed.
21 (other comment)
Not accepted as a bug. In the screenshot, the stock with serial number 102
does not exist. Hence, the error message is correct and meaningful.
22 (other comment)
This is a very good catch! Thanks for reporting the bug. The bug has been fixed in the tagged PR.
23 (other comment)
This is a good catch! Thanks for reporting. The bug has been fixed in the tagged PR.
24 (other comment)
A good point about the handling consistency of invalid commands. Accepted as a bug. The fix is in the linked PR. Thanks for reporting!
25 (other comment)
A good suggestion. Indeed it is better for the suggestion to suggest a valid command format instead of repeating the invalid one. Accepted as a bug. The fix is in the linked PR. Thanks for reporting!
26 (other comment)
A great catch! Indeed this is a bug. The fix is in the linked PR. Thanks for reporting!
27 (other comment)
We think this is not a bug as updating nothing is regarded as a valid behavior.
@cupofjoee
(12 comments)1 (commented on others PR)
Could you help check whether the Index class would be useful in this case instead of int? The flashcard class is implemented using Index. TLDR: the Index class adds flexibility of zeroBasedIndex and oneBasedIndex. I'm just not sure whether it's actually useful, need second eye. Thanks!! 👍
2 (commented on others PR)
The equality here should include both indexes and not only 1
3 (commented on others PR)
Question slipped here. Just need to replace it accordingly.
4 (commented on others PR)
Do the temporary details disrupt the Command tests? If not, I suggest to keep it until Petrick done with the Flashcard UI.
5 (commented on others PR)
What is the purpose of the assertEquals
here? They do not use the command
in the parameter. When would the 2 assertEquals
return False in this case?
6 (commented on others PR)
I didn't know this 😂
7 (commented on others PR)
Is there supposed to be withFlashcardSetName("Physics")
here?
8 (commented on others PR)
Minor stuff, we should avoid Magic String as much as possible. There is VALID_FLSET_NAME_ECONOMICS
in the FlashcardBankCommandTestUtil
9 (commented on others PR)
What issue?
10 (commented on others PR)
Our sample flashcards so high quality! 👍👍
11 (commented on others PR)
Ah I see, yup I think just a short 1-line comment is enough
12 (commented on others PR)
Clarification of the current mechanics:
Once quiz started, user can still go through the quiz switching between quiz and flashcard tabs, but the commands allowed will only be quiz commands?
13 (other comment)
Changed regex from alnum
to Graph
.
14 (other comment)
Changed the error message feedbacks in most schedule and flashcards commands.
15 (other comment)
Removed the icon
16 (other comment)
Add an exception handling.
17 (other comment)
Fixed UG for the flashcards, but have not removed the Exit and Help commands. If I remember correctly, @ducbinh2611 has 1 issue about the exit
and help
commands in the UG. Could you help close this issue when you have settled the Exit and Help commands? Thanks!
18 (other comment)
Changed the regex from alnum
to graph
19 (other comment)
Fixed
@underthehai
(11 comments)1 (commented on others PR)
i think depends on the type if we refer duplicate as having the same name. Activity and accommodation may have duplicated names? But for person maybe not.
Or duplicate meaning all other fields (cost, tag) the same, then I think we should check for duplicates!
2 (commented on others PR)
okies, i can add on!
3 (commented on others PR)
Is it supposed to be MM instead of 3 'M's?
4 (commented on others PR)
ohh its abbreviated form!
5 (commented on others PR)
I think it is throwing an exception because the edit command ensures that at least one field is edited but the command and builder is building the exact same fields so there wasn't any editing done
6 (commented on others PR)
Is it because maybe more than 1 travel plans can have the same first name?
7 (commented on others PR)
find friend instead of person?
8 (commented on others PR)
I think can change to Friends instead of Persons
9 (commented on others PR)
duplicate friends?
10 (commented on others PR)
I think passport should end with a character
11 (commented on others PR)
Should we change this portion to list of friends instead?
12 (commented on own PR)
yeap, I will change it to show
13 (commented on own PR)
I was thinking that since we can view the travel plans at the top directory, we can also modify the start and end date there too. Or is it better to restrict the editing to within travel plan directory?
14 (commented on own PR)
yes it is supposed to be numbers, i will change it
15 (commented on own PR)
I tried to follow the order given in the UI
16 (commented on own PR)
I am intending to specify it to "displayed activity list"!
17 (commented on own PR)
yes, I will change it. thankss
18 (commented on own PR)
okay, fixed!
19 (commented on own PR)
yup, travelplan too. I updated them
20 (commented on own PR)
okok
21 (other comment)
LGTM
@SONGYI98
(11 comments)1 (commented on others PR)
Should change back to "person". Same for Line 9.
2 (commented on others PR)
Will "ReadOnlyFoodInventory" be better?
3 (commented on others PR)
Will "FoodInventory" be better?
4 (commented on others PR)
Will "JsonSerializableFoodInventory" be better?
5 (commented on others PR)
AddressBook references have not been removed.
6 (commented on others PR)
A very small nitpick but "g" will be a better unit. Also, perhaps consider removing the "20g" tag in line 33?
7 (commented on others PR)
Using "updatedQuantity" will make it consistent with the naming of the other variables.
8 (commented on others PR)
Is using the singular verb "donut" be better? What if the same user add another food item of 1 donut?
9 (commented on others PR)
Same as previous with regards to using "g" as a unit.
10 (commented on others PR)
Should there be a "Use case ends." at the end of MSS? Same for line 767.
11 (commented on others PR)
Need to switch to the context of Food.
12 (commented on own PR)
Fixed. Thanks.
13 (commented on own PR)
Fixed. Thanks.
14 (commented on own PR)
Noted. Thanks.
15 (commented on own PR)
Corrected.
16 (commented on own PR)
Corrected.
17 (commented on own PR)
Added hyperlinks. Thanks.
18 (commented on own PR)
Edited. Thanks.
19 (commented on own PR)
I edited the message to include the valid date part.
The two date formatters used check for different types of formatting errors and also invalid date as well. Hence, the formatters can't differentiate between an invalid date or a date with incorrect formatting.
20 (commented on own PR)
Fixed. Thanks.
@khor-jingqian
(11 comments)1 (commented on others PR)
I am not sure if this is considered wildcard import?
2 (commented on others PR)
Still reads ExerciseAddCommand from the previous commit
3 (commented on others PR)
I think this should be BMI? so uppercase rather than lowercase
4 (commented on others PR)
This should be e/Pull Ups if im not wrong
5 (commented on others PR)
Is there a need for such a class? Seems to comprise of simple getters and setter.
6 (commented on others PR)
Similar to my comments above, seems to be unnecessary class to build a Weight object this way.
7 (commented on others PR)
Any other possible test cases? Seems like you are only considering null as an input. Maybe think about the equivalence partitions
8 (commented on others PR)
Similar comments as above. Consider more test cases. A good idea would be to run the tests with coverage in intellij to see possible lines that you missed out in AddWeightCommand and AddHeightCommand. Week 8 topics has a video on how to run with coverage if you are unsure.
9 (commented on others PR)
Rather than put something that will never be input by the user, maybe consider a value that is slightly more possible? Like a negative number or 0 which is invalid, but more likely than Nan.
10 (commented on others PR)
Same as comments above. Improve testing by considering more values that BMI could take.
11 (commented on others PR)
Are you sure this is how Bmi works in fitNUS? I suggest relooking at our codebase and familiarising yourself with how we create and calculate BMI. Feel free to reply the group if you're still facing issues understand our code.
12 (other comment)
LGTM
13 (other comment)
Sorry, let me approve Licheng's PR and handle the merge conflicts first.
14 (other comment)
Sorry, let me fix this and I will reupload the PR.
15 (other comment)
Can you help us to put our names at which part we did for 2101 class later then recommit? then ill merge it in
16 (other comment)
Remove BmiCommand as well because it is outdated
17 (other comment)
I will assign myself this issue, refer to PR #199
18 (other comment)
I have done up the tests for these commands in PR #199 , and we have phased out BmiCommand as well. Let me know if there are any issues with my code there! I will be closing this PR.
@TheSpaceCuber
(11 comments)1 (commented on others PR)
Is CliSyntax necessary?
2 (commented on others PR)
Can just import EditPersonDescriptor instead?
3 (commented on others PR)
er not sure use what name...com.eva?
4 (commented on others PR)
com.eva.logic would be better?
5 (commented on others PR)
I had some runtime error while trying to typecast, not sure if this'll work.
6 (commented on others PR)
But yeah probably waiting for the staff list i guess.
7 (commented on others PR)
Should we include pre-interview? I think processing means after the interview but no update yet right?
8 (commented on others PR)
Hi, should this be removed?
9 (commented on others PR)
Perhaps you can give a boolean name to the false & true for better readability?
10 (commented on others PR)
is this addl instead?
11 (commented on others PR)
dell
12 (commented on own PR)
yup ok
13 (commented on own PR)
ok thanks
14 (commented on own PR)
Oh right thanks...i will update it to handle job description + catch errors later on.
15 (other comment)
tutorial only, pls don't merge
16 (other comment)
LGTM
17 (other comment)
LGTM
18 (other comment)
filename needs to be github username?
19 (other comment)
LGTM
20 (other comment)
wait idk why isaactin.md is under delete
21 (other comment)
LGTM!
22 (other comment)
LGTM with some small namings.
23 (other comment)
LGTM
24 (other comment)
LGTM. Any unforeseen bugs will have to be resolved after commands are added.
25 (other comment)
LGTM
26 (other comment)
Okay I merge first! Thank Ben for comments.
27 (other comment)
LGTM
28 (other comment)
lgtm
29 (other comment)
LGTM
30 (other comment)
LGTM
31 (other comment)
LGTM
32 (other comment)
LGTM
33 (other comment)
LGTM
34 (other comment)
Fixed by Isaac
35 (other comment)
fixed UG
36 (other comment)
fixed UG
37 (other comment)
fixed UG
38 (other comment)
LGTM
39 (other comment)
LGTM
40 (other comment)
LGTM
41 (other comment)
fixed
42 (other comment)
LGTM
@galvinleow
(11 comments)1 (commented on others PR)
Cannot handle white space?
2 (commented on others PR)
I think Hans made a generic list?
3 (commented on others PR)
FindAppointmentCommand
4 (commented on others PR)
Can just make this 2 into 1 line?
5 (commented on others PR)
Although optional to cast ArrayList type, might be good to leave it in?
6 (commented on others PR)
Not sure if protected will be better
7 (commented on others PR)
I feel that double should remain as a primitive type? If Double means it can accept NULL
8 (commented on others PR)
Should use Integer.parseInt(trimmedIndex)), because if someone creates a parseInt(trimmedIndex) method, then this line might break the code.
9 (commented on others PR)
I think do not use Math.round since your display in 1 or 2 Dp
10 (commented on others PR)
month and year
11 (commented on others PR)
Your copy and paste high level
12 (commented on own PR)
I changed to listmodule
13 (commented on own PR)
I think this one just leave it, easier to understand for the user in my view
14 (commented on own PR)
I will do this in the last milestone, issue created
15 (commented on own PR)
What you mean? If clear than should be empty?
16 (commented on own PR)
okay
17 (commented on own PR)
Will change this but likely this will not be in used because appointment use case not done
18 (commented on own PR)
Done
19 (other comment)
Total Revamp of the UG due to change of scope
20 (other comment)
Total revamp of UG, will create an issue when the time is right.
21 (other comment)
The wrong branch hence closing this PR without Merge
22 (other comment)
This PR is closed without merging as the feature has been completed and integrated into another PR
23 (other comment)
Error message wrong, UG fixed
24 (other comment)
Cap at x value and add this info in UG
25 (other comment)
Closed NA
26 (other comment)
Repeated
27 (other comment)
Add to UG
28 (other comment)
Might be side effect from clearsvc
29 (other comment)
Done for Revenue
30 (other comment)
Done for Expense
31 (other comment)
4.2.7 and 4.2.4
@Nijnxw
(11 comments)1 (commented on others PR)
What is this assertion for? Is it you forgotten to remove it after doing the tutorial last week?
2 (commented on others PR)
Not sure if HashMap>Group, Lesson>
would be an unmodifiable view of the lesson map. Maybe you could look into FXCollection ObservableMap? I'm not very familiar with it, but it seems to be similar to ObservableList.
Similar comment for Student and StudentInfo Managers.
3 (commented on others PR)
I realised my test case naming convention is wrong for this file!! I will create a PR regarding this. It is suppose to have the underscores to differentiate (following the textbook naming convention)
4 (commented on others PR)
Instead of "contact details" from AB3, perhaps it would be better to be "tutorial groups and lessons"?
5 (commented on others PR)
Missed out changing "AddressBook" to "Serenity" for the developer guide sentence
6 (commented on others PR)
Instead of hardcoding the white space, perhaps you can reference PREAMBLE_WHITESPACE
in CommandTestUtil
class?
Similar comment for the other test cases in this file 😃
7 (commented on others PR)
Instead of manually creating the student, perhaps you can useStudentBuilder
to build the default student to show that a default student passes the test successful?
Same idea for the rest of the test files 😃
8 (commented on others PR)
Similar to my previous comment on manually creating students, perhaps you could use StudentBuilder
to build a default student, and use .withName()
method to create the "wrong" student name.
Rationale: the default student gives a positive test case, so the reason for negative test case is due to the "wrong" student name. Clearer and better to understand!
Same idea for the rest of the test files 😃
9 (commented on others PR)
If I'm not wrong, the range that score can take in is 0-5
?
Maybe you could include other invalid scores such as negative integers, non-integers and integers larger than 5 to cover all the partitions?
10 (commented on others PR)
Suggestion:
Realised you defined validSubScore
multiple times.
Perhaps you want to create a VALID_SUB_SCORE
constant in the TypicalStudentInfo
class for use in this and other files? Easier to reference and change if we change the range of valid scores 😃
Similar tip for your other test files variables!!
11 (commented on others PR)
I think MESSAGE_INVALID_PERSON_DISPLAYED_INDEX
is AB3 reference? Maybe change the name of the constant to match our case of invalid student index?
12 (commented on own PR)
Keeping them so that we will not forget to implement them in future.
13 (commented on own PR)
Realised it is already accounted for in the previous clause, will remove it!!
For the 2 if
blocks below, the other attributes of questionToEdit
and editedQuestion
could be different and not be caught by the if (questionToEdit.equals(editedQuestion))
block. The 2 checks are mainly to ensure that the editedQuestion
group and lesson names are valid, assuming that they were edited.
14 (commented on own PR)
Will edit it, thanks for pointing out 😃
15 (commented on own PR)
Good suggestion! Ill add a new field for GroupName
as well to be consistent 😃
@porkeypine
(11 comments)1 (commented on others PR)
Good point, we'll do that in the next PR!
2 (commented on others PR)
Agreed!
3 (commented on others PR)
Agreed
4 (commented on others PR)
Appointment class already has a String description, is that good enough?
5 (commented on others PR)
Sorry, can you explain what is the TAB_ID used for in the Command class actually? Is it only relevant in the CommandResult class?
6 (commented on others PR)
TAB_ID needs to be declared as a public static final
constant above right?
7 (commented on others PR)
Agreed! I think it will be addpatient
based on our user guide.
8 (commented on others PR)
I think so, because we will have various ListAppointmentsCommands, like listing all appointment of a specific patient!
9 (commented on others PR)
Actually, I think it might be good to use the shorter versions? More user-friendly! We can update the UG to reflect this if everyone agrees
10 (commented on others PR)
I think we can remove this line since Address field has been removed!
11 (commented on others PR)
Should we remove the PREFIX_ADDRESS
since we are no longer using Address?
12 (other comment)
Fixed in PR 'Add DeleteAppointmentCommand'
13 (other comment)
Merged this command with FindAppointmentByKeyword
14 (other comment)
Changed to finding all appointments containing the keyword in the description OR tags
15 (other comment)
This bug happens whenever the appointment stretches past the current day (i.e. 2359) into the next day. Needs UI fix
16 (other comment)
Cannot reproduce error -- did someone fix it already?
17 (other comment)
Can't be reproduced 😦
18 (other comment)
Can't reproduce 😦
19 (other comment)
Same as issue #229
20 (other comment)
Same as issue #230
21 (other comment)
Same as #229
22 (other comment)
Cannot reproduce error 😦
23 (other comment)
Same as #257
24 (other comment)
Decided not to do it
@siddarth2824
(11 comments)1 (commented on others PR)
It says here that you are only allowing the user to add 2 decimal places. But when I typed in an amount with more than 2 decimal places, the input was still allowed. The picture shows the image where the user input of more than 2 decimal places was allowed.
2 (commented on others PR)
Since the user was allowed to input an amount of more than 2 decimal places. When I restarted the application the application opened up with no data on the previously stored transactions. An exception was thrown and then an empty FinanceTracker was started. The image below shows the exception being thrown when I opened the application again:
3 (commented on others PR)
Just a small minor thing. I do not think there should be a new line between the comments and its java doc.
4 (commented on others PR)
/**
* JSON-friendly version of {@link MonthlyBudget}.
*/
5 (commented on others PR)
/**
* Constructs a {@code JsonMonthlyBudget} with the given expense limit details.
*/
6 (commented on others PR)
/**
* Converts a given {@code MonthlyBudget} into this class for Jackson use.
*/
7 (commented on others PR)
/**
* Converts this Jackson-friendly adapted monthly budget object into the model's {@code MonthlyBudget} object.
*
* @throws IllegalValueException if there were any data constraints violated in the adapted transaction.
8 (commented on others PR)
assertParseSuccess(parser, PREAMBLE_WHITESPACE + AMOUNT_DESC_INTERNSHIP + " ",
You can use PREAMBLE_WHITESPACE
instead of " ".
9 (commented on others PR)
assertParseFailure(parser, PREAMBLE_NON_EMPTY + AMOUNT_DESC_INTERNSHIP,
You can use PREAMBLE_NON_EMPTY
which can be found in CommandTestUtil
10 (commented on others PR)
assertParseSuccess(parser, PREAMBLE_WHITESPACE + AMOUNT_DESC_INTERNSHIP + " ",
You can use PREAMBLE_WHITESPACE
in CommandTestUtil
.
11 (commented on others PR)
assertParseFailure(parser, PREAMBLE_NON_EMPTY + AMOUNT_DESC_INTERNSHIP,
You can use PREAMBLE_NON_EMPTY
instead of "hello"
.
12 (commented on own PR)
The reason for this is because I have only added the AddFrequentIncomeCommand
hence I did not write the other methods within FrequentIncomeList
yet. Therefore I did not write the tests for the other methods.
13 (other comment)
PR has been picked up by the grading script.
14 (other comment)
Resolves #145.
15 (other comment)
Resolves #146.
16 (other comment)
This issue will not be worked on as it is not an essential feature for our product.
17 (other comment)
Wrote tests for FinanceTrackerParser
for commands related to BookmarkTransactions
such as:
AddBookmarkIncome
AddBookmarkExpense
DeleteBookmark
EditBookmark
ConvertBookmark
@sagarsureka
(11 comments)1 (commented on others PR)
Should this be invalid description field?
2 (commented on others PR)
Not a big issue but do you think we should change names to descriptions in the comment?
3 (commented on others PR)
Maybe the occurrences of name in comments should be replaced with description?
4 (commented on others PR)
Maybe we can replace Name in method name with Description, here and in other occurrences?
5 (commented on others PR)
Maybe here we can give a more brief idea? "Sorts the list of food items by description. In case of ties, it uses the expiry data and priority to break the ties.
6 (commented on others PR)
Maybe we should avoid using "lexicographically"? Many users might not be familiar with this word. Would "in alphabetical order" better?
7 (commented on others PR)
Typo, need to remove one "by"
8 (commented on others PR)
Typo. "have the same description"
9 (commented on others PR)
I feel this point is a bit confusing. Will this be better "If two items have the same description content but difference in the case, the one with upper case will be lower than the one with the lower case"?
10 (commented on others PR)
Something similar for sortpriority and sortexpiry can also be consider.
11 (commented on others PR)
Should we use this link instead - https://ay2021s1-cs2103t-f13-4.github.io/tp/DeveloperGuide.html?
12 (commented on own PR)
Thanks!
13 (commented on own PR)
Thanks!
14 (commented on own PR)
Thanks!
15 (other comment)
Created this PR by mistake.
16 (other comment)
Thank you for your comments. I have made the relevant changes to the code.
17 (other comment)
LGTM
@Vielheim
(10 comments)1 (commented on others PR)
Maybe you would like to use "toUpper" here? Less bugs
2 (commented on others PR)
Perhaps you can consider not using "active" here? Probably can use some gibberish like "asdjnewfpqwifnqiweyfbqwekfbrw"?
3 (commented on others PR)
Would be good to OOP this.
4 (commented on others PR)
Updated
5 (commented on others PR)
addressBook --> PIVOT
6 (commented on others PR)
Same as above
7 (commented on others PR)
"Addressbook spotted"
8 (commented on others PR)
"addressBook Spotted"
9 (commented on others PR)
maybe need check for null here
10 (commented on others PR)
personIndex not null also?
11 (commented on own PR)
Just added
12 (other comment)
To be updated for README: (Put under Issues as well)
UI mockup
Links for respective pages
Update the link of the GitHub Actions build status badge (Build Status) so that it reflects the build status of your team repo.
13 (other comment)
Do not merge
14 (other comment)
Do not merge
15 (other comment)
Do not merge
16 (other comment)
Do not merge
17 (other comment)
Do not merge
18 (other comment)
19 (other comment)
Updated
20 (other comment)
Sorry I pressed Merge Commit by accident >>
21 (other comment)
Repeated Issue
22 (other comment)
PR-ed by master. Changed to other PR
23 (other comment)
Updated GUI to reflect the different sections and pages.
Updated UG to reflect the different sections and pages as well
24 (other comment)
requirement: minimum 3 digits.
No restrictions to remainder because different country numbers result in different lengths.
@Jillzyt
(10 comments)1 (commented on others PR)
Don't think need to compare comments and reps, since it is not an identifier field.
2 (commented on others PR)
Don't think the log should have tags hence we don't need to test getTags()
.
3 (commented on others PR)
Don't think Phone and email should be in the log unit test still.
4 (commented on others PR)
Same as the previous few comments.
5 (commented on others PR)
Remember to change the method name to match Logs.
6 (commented on others PR)
Remember to change the method name to match Logs.
7 (commented on others PR)
Remember to change the method name to match Logs. This is repeated for the other tests in this file
8 (commented on others PR)
Refactor to VALID_EXERCISE_JUMPING... for clarity?
9 (commented on others PR)
There's a typo here.
10 (commented on others PR)
Larger than the list size or smaller than 0?
11 (commented on own PR)
Noted. Updated my code.
12 (commented on own PR)
Noted. Updated the code.
13 (commented on own PR)
Updated in code.
14 (commented on own PR)
Updated the method name.
15 (commented on own PR)
Updated
16 (commented on own PR)
Updated
17 (commented on own PR)
Updated
18 (commented on own PR)
Resolved.
19 (other comment)
LGTM (with the exceptions of checks).
20 (other comment)
Passed checkstyleMain, checkstyleTest.
21 (other comment)
LGTM.
22 (other comment)
Current changes LGTM.
23 (other comment)
Decided to add more tests.
24 (other comment)
100% test coverage for models.
CheckstyleMain and checkstyleTest passed.
Two todos added to solve the issue of the same DateTime checks for logs in Sampleutil.java.
25 (other comment)
Currently, the autocomplete checks if the first three letters are similar and suggest the commands' format.
How I implemented autocomplete:
Add getSuggestionList() in LogicManager so that I can retrieve the list of command suggestions from the commands. (UI will only have access to logic)
Add CommandBox's commandTextField setListenerForAutoComplete() method set listener to detect changes in text field and sends input to showAutoCompleteResult().
Add showAutoCompleteResult() in ResultDisplay so that we show results to the user.
26 (other comment)
27 (other comment)
Wrong week.
28 (other comment)
Potential reference for UG
29 (other comment)
30 (other comment)
Discussed comments to be compulsory
31 (other comment)
Close #164
32 (other comment)
The message "at least one of the optional fields must be provided" must be changed if we decided to change to rep compulsory. (In user guide & in application)
33 (other comment)
Changed it to "Invalid Log index. Please enter an index found in the logs below."
34 (other comment)
@moyj01
(10 comments)1 (commented on others PR)
Hi ZY, maybe you could use "Filters for specific flashcards" instead of Filters the specified flashcard". I think this would be clearer to the readers.
2 (commented on others PR)
Maybe you can consider using "Reviews" instead of "Review" so that our UG has a standardised format.
3 (commented on others PR)
The review and success frequencies of a flashcard are only affected by quiz mode.
4 (commented on others PR)
You may consider creating an Icon class to store the commonly used Unicode characters
5 (commented on others PR)
Perhaps, you should abstract these calculations to methods
6 (commented on others PR)
these features or this feature
7 (commented on others PR)
same as above
8 (commented on others PR)
This allows the user.
9 (commented on others PR)
first add needs to be placed in
10 (commented on others PR)
Not sure if NOTE, RATING ,TAG etc needs to be in
11 (commented on own PR)
@sgn00 will implement this in the UI
12 (commented on own PR)
Will standardise to present tense. Thank you for pointing it out.
13 (commented on own PR)
Thanks for pointing it out. Will do 👍
14 (commented on own PR)
Removed accordingly.
15 (commented on own PR)
My bad. Removed.
16 (commented on own PR)
Removed
17 (commented on own PR)
Same as the issue before. Rectified
18 (commented on own PR)
Corrected the language
19 (commented on own PR)
Added a space
20 (commented on own PR)
Standardised all to present tense less saving the data.
21 (commented on own PR)
Ammended
22 (commented on own PR)
Amended
23 (other comment)
Update UI to split into 2 panels - 1 for list, 1 for view feature
24 (other comment)
LGTM
25 (other comment)
Add this constraint in the UG for users to take note
26 (other comment)
Inherited from AB3. Intended functionality.
27 (other comment)
Need to update UG accordingly
28 (other comment)
LGTM
@hogantan
(10 comments)1 (commented on others PR)
Should Year allow more than just digits due to distinctions such as "Primary 2" and "Secondary 2" ?
2 (commented on others PR)
Maybe there could be a more intuitive command word such as olpd (overdue last paid date) or maybe just lpd or od or overduepayment. I was thinking maybe something along the lines of payment date since the user is more familiar with the term as they input it as payment date (d/) so maybe something with date would make it easier for the user?
3 (commented on others PR)
I think you might have to change this to overdue as well!
4 (commented on others PR)
Address book could be changed to Reeve here
5 (commented on others PR)
If we are finding class time with respect to dayofweek, then would that mean that the user input of a specific date is redundant? If we just convert the specific user input date in dayofweek, we could just ask user to input 1,2,3,4,5,6,7 (Integer day of week).
6 (commented on others PR)
Oh that is true also. It is easier for a user to remembers the current date rather than the specific day! If we assume this, then I think the current implementation is fine.
7 (commented on others PR)
Could this be studentToDeleteDetail instead?
8 (commented on others PR)
This should be DeleteAdditionalDetailCommand for the second person!
9 (commented on others PR)
I think altDetail is not needed here!
10 (commented on others PR)
Should we add questions into academics as well? Because the GUI currently displays questions as an academic type.
11 (commented on own PR)
Right! Thanks for pointing it out! I have made the necessary changes.
12 (commented on own PR)
Right! Thanks for pointing it out! I have made the necessary changes.
13 (commented on own PR)
Right! Thanks for pointing it out! I have made the necessary changes.
14 (commented on own PR)
Right! Thanks for pointing it out! I have made the necessary changes.
15 (commented on own PR)
I kind of just followed what was already in place. I also felt that the brackets just makes additional details easier to organize visually for now as multiple additional details could look very messy and hard to separate (for easy viewing) without the brackets.
16 (commented on own PR)
Oops. My bad. Thanks for pointing that out!
17 (commented on own PR)
Yea I will be adding the admin fields when doing up the updated test cases.
18 (commented on own PR)
Oh I see, I will look into what this other module is. As of now, the space was added just to space out the different additional details when it is being displayed in the console (when a student has been successfully added).
19 (commented on own PR)
Oh yea my bad. Not sure what led me to add those extra ---
. Thanks for pointing it out! I have reverted accordingly.
20 (other comment)
Unable to replicate issue on my end.
21 (other comment)
A unique student is identified by NAME, PHONE, SCHOOL and YEAR. Since the above two students have the same fields except for school (one is" Commonwealth Secondary School" while the other is "12/12/2020"),they are identified as different students.
22 (other comment)
Added the relevant tests for exam and score. My bad for missing them out. Thanks for the reminder!
23 (other comment)
The activity diagrams might be too complex, perhaps we should split some up using the rake symbol. It seems that this guy here made a rake symbol that you can define in
style.puml
Do you mean the sequence diagrams or the activity diagrams?
24 (other comment)
Could you number your figures before I merge?
Do you think the numbering convention of following the table contents could get quite messy? (e.g. Figure 6.8.1.1a )
Should we follow the traditional style instead? (Figure 1, Figure 2, etc.)
@lettuceman4
(10 comments)1 (commented on others PR)
Remember to change to new CommonCents() later 😊 doesnt rlly matter now HAHAH
2 (commented on others PR)
I think should include an empty line here (the Addressook they have)
3 (commented on others PR)
Uh is there a new line here ah?
4 (commented on others PR)
why don't u delete the old commands ah
5 (commented on others PR)
I think can remove all the seedu. stuff in this class
6 (commented on others PR)
I think can remove this empty line
7 (commented on others PR)
A lot of empty lines leh
8 (commented on others PR)
Is this supposed to be "tracker"
9 (commented on others PR)
I think can remove the empty lines here
10 (commented on others PR)
You mean "Justification"?
11 (commented on own PR)
Yup!
12 (commented on own PR)
Yup removed in a newer commit!
13 (other comment)
Only need 1 person to do this, but please finish asap after Zi Yang is done with the LogicManager
@wireseo
(10 comments)1 (commented on others PR)
was this the problem? I'm still confused as to why I had the error in the first place XD
2 (commented on others PR)
Nice tagging feature! Love it!
3 (commented on others PR)
Thank you for cleaning up dead code!
4 (commented on others PR)
Nice, thank you! This was what caused the error, huh.
5 (commented on others PR)
Nice Builder for testing purposes!
6 (commented on others PR)
Nice addition to the UG; makes things a lot clearer!
7 (commented on others PR)
Good quality code! Nice 😃
8 (commented on others PR)
Nice catch!
9 (commented on others PR)
Thank you for all the fixes to markdown!
10 (commented on others PR)
Interesting decision -- may I ask why?
11 (commented on own PR)
Good idea!
12 (commented on own PR)
Ah, it still extends Consultation! I just moved it to a separate package since it was getting a bit crowded in there. 😃
13 (commented on own PR)
Done! Thanks for the input, I appreciate it!
14 (commented on own PR)
Good catch! Updated.
15 (commented on own PR)
Hmm, I already have another method for that. Seems like I actually don't need this method at all! Took a bit of time but I deleted all of its uses. Thanks for reminding me!
16 (commented on own PR)
Okay, just a sec!
17 (commented on own PR)
Just pushed a new commit, hopefully it should work now!
18 (other comment)
LGTM!
19 (other comment)
LGTM! Yes, this is amazing! A core feature that we really needed. 😃
20 (other comment)
LGTM!
21 (other comment)
LGTM!
22 (other comment)
LGTM!
23 (other comment)
LGTM!
24 (other comment)
LGTM! Thanks 😃
25 (other comment)
LGTM!
26 (other comment)
LGTM!
27 (other comment)
LGTM!
28 (other comment)
LGTM! Yeah nice diagrams!
29 (other comment)
The checkstyle errors are nonsensical, so I will go ahead and merge this. If there are any problems with the code (especially checkstyle), please let me know ASAP.
30 (other comment)
Also, continuation of nonsensical checkstyle errors. Can someone check if their local machines also have this problem?
31 (other comment)
LGTM! Thanks for fixing the import error.
32 (other comment)
LGTM! Thanks for the extra test cases!
33 (other comment)
Nice test cases! LGTM
34 (other comment)
LGTM! THANK YOU FOR THE GUI FIX was bugging me for a while haha
35 (other comment)
Nice work! And sorry for the consultation tab -- I'll try to make it work asap :0
36 (other comment)
LGTM! Again, thank you so much for sorting out the GUI bug. 😃
37 (other comment)
Thank you so much for this! LGTM 😃
38 (other comment)
LGTM!
@Joven-Heng
(9 comments)1 (commented on others PR)
Just curious, for the withoutNote, couldnt we just not build it without this function>
2 (commented on others PR)
I think just java 11 will work, we shouldnt set it higher since this is supposed to work on Java 11 only
3 (commented on others PR)
What do you mean by tags?
4 (commented on others PR)
Is the hash affected by the order? Since isArchive should be the last one.
5 (commented on others PR)
I think if it means clientsource, then clientsource should be non null.
Also, priority should be non null but i should be the one writing that XD
6 (commented on others PR)
tag is here too
7 (commented on others PR)
Not sure is this ... what is written on the AB3? If so then we will leave it >> Otherwise we should mention that we can double click it.
8 (commented on others PR)
small change, instead of saying help page, say UG
9 (commented on others PR)
Same thing. The double clicking thing. If AB3 told us to launch using -jar then yeah sure
10 (commented on own PR)
Ok fixed those, have a look
11 (commented on own PR)
Interesting, changing this does not affect checkstyle
12 (commented on own PR)
Also not detected.
13 (commented on own PR)
Changing this will lead to a checkstyle error tho.
This is why I went to change the indentation
14 (commented on own PR)
uhm this string matters? But ok changed.
15 (commented on own PR)
Hmm but it works now why change it >>
16 (commented on own PR)
Ah my bad, initially this had some use as it was a parser but after changing it, it now doesnt.
17 (commented on own PR)
Yes, there is, white border is slightly darker
18 (commented on own PR)
wa shag forgot my bad.
19 (commented on own PR)
Oh my bad
20 (commented on own PR)
But this is not a command, thats why i didnt update it.
21 (commented on own PR)
i think ill also include client list AND archive list
22 (commented on own PR)
oh true my bad
23 (commented on own PR)
yes ok then I think we should wait on the one javier has done before I include this, in the meantime, ill delete this
24 (commented on own PR)
oh true
25 (commented on own PR)
ah yes
26 (other comment)
Ah, my bad just saw this >>, I guess it make sense that it does not ping me
I literally entered in different sessions, Im not sure is it cuz I did not scroll the sidebar and find the different sessions. (Now to think of it maybe I didnt). Overall I think it is fine, just check if its scrollable on your end:)
27 (other comment)
Wrong branch name. Closing.
28 (other comment)
Wrong branch name. Closing
29 (other comment)
LGTM, do note that we would have to include those deleted commands inside here when we are done.
30 (other comment)
I can probably make more tests, but I really would want the note to be an optional field first.
31 (other comment)
Updated to change command to o/
32 (other comment)
Update based on WeiJie suggestions.
Further changed Addressbook Name.
33 (other comment)
LGTM
34 (other comment)
Accidental merge
35 (other comment)
I would feel theres a certain level of danger to this because there isnt tests written for these yet, but I assume its just the first iteration of it so yeah LGTM.
36 (other comment)
Done in #120 closing.
37 (other comment)
done in #120. closing
38 (other comment)
LGTM
39 (other comment)
LGTM
40 (other comment)
LGTM
Model Class Diagram
Storage Class Diagram
41 (other comment)
There are also some small changes with regards to the use cases etc, you can review them i guess.
@kormingsoon
(9 comments)1 (commented on others PR)
nice spacing
2 (commented on others PR)
is something supposed to be inside the table cells here?
3 (commented on others PR)
@munharsha @Christopher-LM the @code person here just becareful about documentation part
4 (commented on others PR)
thanks for fixing the name
5 (commented on others PR)
Would recommend adding the
for parameters, for better visuals
6 (commented on others PR)
Bidder and seller can be on top actually
7 (commented on others PR)
I think should push the table summary to the top so its easier for reference at any point in time. (not as instinctive to scroll all the way down, since the users might not know its there at all)
8 (commented on others PR)
We can have a pictorial representation of the UI, such as how people take screen shot and demarcate which part of the UI is for what purpose
9 (commented on others PR)
Looks slightly off with the > followed by a bullet, maybe can remove the bullet/dash.
10 (commented on own PR)
Wah high praise from Dianne
11 (other comment)
Resolved conflicts in a separate branch. See other PR for finalised version.
12 (other comment)
https://nus-cs2103-ay2021s1.github.io/website/schedule/week10/project.html
@akgrenSoar
(9 comments)1 (commented on others PR)
Need to rename the image from joeytoh.JPG to joeytoh.png
2 (commented on others PR)
**Use case: Edit tag**
Formatting
3 (commented on others PR)
Would be nice to configure your IDE imports
https://se-education.org/guides/tutorials/intellijCodeStyle.html
4 (commented on others PR)
This issue is meant to remove the bad code commandText.equals("list")
.
Suggestion is to implement commandResult.isPersonList()
or its equivalent alternatives.
5 (commented on others PR)
This is not required. The issue of tag list not auto-refreshing will resolve itself after the change in Model
6 (commented on others PR)
public static final String VALIDATION_REGEX = "^[A-Za-z0-9][\\w]{3,}[A-Za-z0-9]$";
For aesthetic. No real impact.
7 (commented on others PR)
The intention was for Tag to be immutable. (modifying fields is not allowed)
I'm not sure how EditTagDescriptor
works though, so i'll leave it to your discretion.
8 (commented on others PR)
/**
* Remove the target task and returns an edited {@code List<TagTask>}.
*/
private static List<TagTask> createEditedTaskList(Tag tagToEdit, Index taskIndex) throws CommandException {
I think you meant to remove the task from list. Also, createEditedTaskList
isn't very intuitive
9 (commented on others PR)
Not sure how this code is used, but maybe you can omit this method since it only has a few lines?
10 (commented on own PR)
It is supposed to be tagfind
. Pushed a commit to change all commands to follow lowercase
11 (commented on own PR)
If im not wrong, the loop isn't needed
12 (commented on own PR)
Bug: run out of characters after 26 tasks
13 (other comment)
Closes #6
Everyone's changes are here. Should be good to go.
14 (other comment)
Closes #7 , Closes #9
15 (other comment)
Better to postpone this to next iteration.
Changing the model will require changes in Logic, Storage, and massive changes in JUnit Tests
16 (other comment)
Not an epic, but requires massive code change
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
LGTM.
Minor nitpicks:
Perhaps lowercase might be better than camelcase for command name (i.e. taglist
instead of tagList
)
Test coverage can be improved for
java/seedu/address/logic/parser/ProjactParser.java
java/seedu/address/logic/commands/CommandResult.java
20 (other comment)
the codecov report automatically updates itself. It is showing the codecov for the latest commit already
21 (other comment)
This is a prerequisite for issue #49
@ethan-l-m-e
(9 comments)1 (commented on others PR)
typo 'an' --> 'a'
2 (commented on others PR)
idk but are we supposed to avoid using asterisk?
3 (commented on others PR)
Maybe can link straight to just tp/releases for the latest release instead of specifically /tag/v1.3
4 (commented on others PR)
Did u mean to leave it as is?
5 (commented on others PR)
Missing Javadoc here
6 (commented on others PR)
I think its supposed to be DailyCommand object?
7 (commented on others PR)
Idk, might need to requireAllNonNull()?
8 (commented on others PR)
duplicate modulesToModelType(), now there are double calls?
Keep the one at the top.
9 (commented on others PR)
Not sure if u got EOF here. In TodoCard and your fxml files as well.
10 (commented on own PR)
Idk why it doesn't show its been updated
@AlexCQY
(9 comments)1 (commented on others PR)
Might want to remove the email part as our student model doesnt have email.
2 (commented on others PR)
Might want to remove the "e/amongus@isgood.com" part and also the "email address"
3 (commented on others PR)
nice
4 (commented on others PR)
nice
5 (commented on others PR)
might want to add a period here to standardize
6 (commented on others PR)
should this be "...not allowed in paymentDate"?
7 (commented on others PR)
Just to clarify for now we cant edit the additional details?
8 (commented on others PR)
okay thanks
9 (commented on others PR)
Does "....data as shown in the class diagram below' sound better?
10 (commented on own PR)
okay I have resolved this. The original AB3 uses this method as a weaker notion of equality between students. Because if we check all field && then it will become the equals method. But since we defined student to have this 4 compulsory fields, we can update it to check these fields. But I think we should not include the checks for admin fields when it comes in.
11 (commented on own PR)
okay done thanks
12 (commented on own PR)
Agreed. I have made the changes
13 (commented on own PR)
Okay thanks!
14 (commented on own PR)
Hmmm what I thought was that input a date is more flexible and convenient. For instance user might want to look up a his/her schedule on a particular date, our app would translate that date internally to the day of week so that the user wouldnt need to check up the calendar. I was thinking of an extension along this lines too, where user could input a string indicating the day or week. What do you think?
15 (commented on own PR)
Okay thanks!
16 (commented on own PR)
THANKS! I removed it already.
17 (commented on own PR)
Yea thanks alot!
18 (commented on own PR)
oh yea thanks
19 (commented on own PR)
hmmm.. then should Student
and its field's relationship also be association?
20 (commented on own PR)
updated it
21 (other comment)
Good point. This would make searching and filtering the year
data easier. Based on this, I guess we may have to exhaust all possible levels of student that a tutor may have? My concern is that IP, IB, MOE mainstream tracks have different naming in their levels. Furthermore, there could be other level naming, for eg a tutor teaching music or arts may have different levels naming for their students.
22 (other comment)
Oh ya our target was pri/sec/jc nice.
23 (other comment)
resolved schedule part
Different formats:
- Schedule commands use full words as their prefixes
- Some Note commands do not need prefixes
Coverage:
It's been dropping consistently with every PR, it's fallen from 79% to 75% and the next few PRs will continue to decrease it by 1-2%
We need to freeze all new code soon and get our code coverage up to par, especially since these are all features untested in the previous run. We will also need to start going full time into the DG as well.
@davidcaiqifan
(9 comments)1 (commented on others PR)
Spelling error here
2 (commented on others PR)
I like the proper naming of boolean value here
3 (commented on others PR)
Good handling of possible parse errors here
4 (commented on others PR)
Perhaps the "Name" mentioned in the message constraints could be changed to Contact Name again. This might help increase readability by further differentiating from Module Name present in the Module List component.
5 (commented on others PR)
I like the defensive programming error checks here.
6 (commented on others PR)
I like the improvement to readability made by using Module names instead of Names to differentiate from other types of names.
7 (commented on others PR)
Perhaps this test could be removed if not in use
8 (commented on others PR)
Perhaps this test could be removed since its contents are commented out
9 (commented on others PR)
Perhaps these comments could be removed since the code here is obselete
10 (commented on own PR)
Thanks for the feedback Joshua, but this was actually the original implementation for AB3.
11 (commented on own PR)
It was unnecessary. Thanks for pointing that out!
12 (commented on own PR)
Alright noted thanks.
13 (commented on own PR)
Alright thanks for the reminder.
14 (commented on own PR)
Noted, thanks Michael!
15 (commented on own PR)
Yes I was coming around to doing that but forgot. Thanks for the reminder.
16 (commented on own PR)
Thanks, noted!
17 (commented on own PR)
It is to make sure that it calculates based on data for all modules even if only a filtered list is being displayed
18 (other comment)
Closed due to some mistakes.
19 (other comment)
LGTM
@Trav1sT
(9 comments)1 (commented on others PR)
Agreed. Roger this.
2 (commented on others PR)
Concise!
3 (commented on others PR)
I'm just confused. What's the advantage of using var
in general? Like in this case, wouldn't specifying the type make it clearer?
4 (commented on others PR)
Beautiful! p.s. just 'reviewing'
5 (commented on others PR)
Oo Thanks. This is more helpful than my doctor who only told me not to use it if it hurts but never say how.
6 (commented on others PR)
Niceeee
7 (commented on others PR)
Looks good!
8 (commented on others PR)
Should be fine
9 (commented on others PR)
Nice format!
10 (commented on own PR)
Uwu I just realised this after adding the tests.
11 (commented on own PR)
Agreed, working on it!
12 (commented on own PR)
Oh yes should be words[0]
13 (commented on own PR)
Deleting this old and deproved version.
14 (commented on own PR)
I commented it out cuz LogicManager and UiManager both ain't in chopchop yet. So the red line kind of annoying.
15 (commented on own PR)
Ah YES thankss you solved the mystery. I was like I need a getter for name then I made one then after I made it I asked myself why did I make this. Now I know why
16 (commented on own PR)
Ermm cuz deleting is an extra step but ok I'll cut.
17 (commented on own PR)
I had the same question. It was more OMG MEGA. I already shift-tabbed it. I go check my editor settings again.
18 (commented on own PR)
Excellent catch
19 (commented on own PR)
I think I will just make 'on' take precedence over 'before' and 'after'. So if allNonNull then only on is considered.
I will think about other better ways.
20 (commented on own PR)
sherlock
21 (commented on own PR)
Wait I don't understand if it's just an instance of StatsRecipeMostCookedCommand
and it got no attributes to compare. Then it means comparing this with any other StatsRecipeMostCookedCommand
will result in true? This is prob a stupid question but yea Im just pikachu
22 (other comment)
Hmmm, I think it's alright now.
23 (other comment)
Im sorry our recipes very cui. Quick view of the command breakdown sounds great.
24 (other comment)
Looks good!
25 (other comment)
UI to be implemented. Command executions currently pass output to both boxes (will fix this). Testings to be done.
Should be ready to merge.
26 (other comment)
Looks good!
27 (other comment)
Yeap. Thanks for the clean up.
@jayarengam
(8 comments)1 (commented on others PR)
Consider replacing address with NusnetId
2 (commented on others PR)
rename field
3 (commented on others PR)
rename field
4 (commented on others PR)
Please update testcases
5 (commented on others PR)
Please consider changing name to NusnetIdTest
6 (commented on others PR)
Consider renaming field
7 (commented on others PR)
Consider renaming class to NusnetId (coding standard)
8 (commented on others PR)
Please consider removing this line
9 (other comment)
Breakdown of work:
@sc-arecrow:
As a TA, I can store the details of my students, so I can have quick access to them.
As a TA, I can view the details of a student, so I can have quick access to him/her.
@jayarengam:
As a TA, I can view the details of students, so I can have quick access to them.
As a TA, I can delete the details of students in my class, so I can still have quick access to them.
10 (other comment)
KIV for later when more additions are made to website.
11 (other comment)
Missing: user guide
12 (other comment)
Resolved by #58.
13 (other comment)
Tests will be added later.
14 (other comment)
No longer required
15 (other comment)
Having sessions with the same name is intended behaviour, however having two sessions with the same SessionName may result in the wrong Session being modified if a command that modifies StudentRecords is called when the currentSession is this shared SessionName (see #157)
16 (other comment)
Closing this issue as it is replaced by #157
17 (other comment)
Resolved by #158
18 (other comment)
Resolved by #158
19 (other comment)
Not sure how to replicate this bug.
20 (other comment)
Proposed solution to #155 has been changed to preventing user from creating two sessions with the same name, instead of the above solution. Hence this issue will be closed
@ernestlim8
(8 comments)1 (commented on others PR)
Should this be deleting a specific item in the current order instead?
2 (commented on others PR)
Can consider adding an extension where the quantity of item is negative
3 (commented on others PR)
should this be add commands instead?
4 (commented on others PR)
Should the second sentence be phrased as "There are at least two items in the order" for better readability?
5 (commented on others PR)
Perhaps this OrderItem can be renamed to orderItem for better readibility?
6 (commented on others PR)
Should the menu be valid, since there should be only one invalid input.
7 (commented on others PR)
should this be renamed to getMenus()?
8 (commented on others PR)
Should this be renamed to readMenuManager_invalidMenuManager_throwsException?
@tnsyn
(8 comments)1 (commented on others PR)
Not sure whether anything is affected by this, but maybe change to numbers for the Pay?
2 (commented on others PR)
Can change 'list' command to 'worker-list'
3 (commented on others PR)
Can change 'delete 5' to 'worker-delete 5'
4 (commented on others PR)
Can change 'add n/David' to 'worker-add n/David'
5 (commented on others PR)
Small comment but I think we don't have to throw this, since AssignmentNotFoundException is a runtime exception? Also a bit inconsistent with other methods like deleteWorker/deleteShift which do not throw WorkerNotFoundException/ShiftNotFoundException respectively
6 (commented on others PR)
Same small issue!
7 (commented on others PR)
Possible duplication?
8 (commented on others PR)
Would it be more meaningful to put this assertion in the constructor instead? Just a suggestion, not sure if it's good practice
9 (commented on own PR)
Mm I just thought that it made sense for all workers to have a role so I included it as a compulsory field, but we can take it out also I guess? So if a worker doesn't have any roles specified, then we can assign them to any role in a shift
If we're going to be implementing the Pay calculation feature then we should make Pay compulsory
10 (commented on own PR)
Ah ok agreed for role! Will make the change
11 (commented on own PR)
Made the change to convert FULL to AM and PM unavailabilities
12 (commented on own PR)
Thanks, will make the change!
13 (commented on own PR)
Good catch, will delete!
14 (commented on own PR)
Good point, will make the change!
15 (commented on own PR)
Yes, thanks for reminding me! Will add the checks for this
16 (commented on own PR)
I've made this into a method called getRoles() inside the Shift class!
17 (commented on own PR)
Looks better, will change!
18 (commented on own PR)
Good catch!
19 (commented on own PR)
Yes, agreed! Will make the change
20 (commented on own PR)
I was supposed to delete it for UNAVAILABILITY
as well but I missed it out; will fix it! Because our days are now enum values so we can't have numbers like 0 inside
21 (commented on own PR)
All right, made the format change for some of the other commands as well!
22 (other comment)
Covered by #109
23 (other comment)
Leaving this as it is in case some people's names do contain numbers/users want to label workers with similar names as "Alex 1" and "Alex 2" etc
24 (other comment)
Closed, in the event 2 workers have the same home number etc.
25 (other comment)
Make so/ wo/ optional
26 (other comment)
Duplicate of #169
27 (other comment)
To be implemented beyond 1.4 ...
28 (other comment)
Change error message to reflect the user's wrong input (e.g. "You keyed in "1 j/0 as a pay, which is not a number with a maximum of 2 dp")
29 (other comment)
Fix the grammar mistake in the description ("for McDonald’s Shift Managers to managing shift scheduling")
@GilbertTan19
(8 comments)1 (commented on others PR)
Great abstraction!
2 (commented on others PR)
Yeah, I think can return answer instead of String.
3 (commented on others PR)
Great assertion!
4 (commented on others PR)
Great abstraction!
5 (commented on others PR)
Great use of logging!
6 (commented on others PR)
Nice defensiveness of code!
7 (commented on others PR)
Great Absraction!
8 (commented on others PR)
I thought there is only one difficult to accept?
9 (commented on own PR)
Thankyou, I have edited the PR!
10 (commented on own PR)
Yup, changed alr!
11 (commented on own PR)
Done
12 (commented on own PR)
donee
13 (other comment)
I'll do it in another branch, cause I try to solve the conflict locally but cannot push to my repo.
@FH-30
(8 comments)1 (commented on others PR)
Great job following the coding standards!
2 (commented on others PR)
Great that you have extensively tested the added functionalities!
3 (commented on others PR)
Might need to rename person to flashcard
4 (commented on others PR)
Same here.
5 (commented on others PR)
Same here.
6 (commented on others PR)
Same here.
7 (commented on others PR)
Great job reducing the number of lines!
8 (commented on others PR)
There are still instances of person and addressbook here and there, might need to rename them.
9 (commented on own PR)
Fixed it!
10 (commented on own PR)
Fixed it!
11 (commented on own PR)
No problem!
12 (other comment)
Code quality closely follows the coding standard, good job! Testing is well done, tested many cases for each of the functionalities added. LGTM!
13 (other comment)
Thanks for helping with this, much appreciated!
14 (other comment)
Everything looks good except that I think the arguments for the
parse
method in the sequence diagrams should have""
.
i.e. it should be
parseCommand("add q/question ans/ Answer")
instead of justparseCommand(add q/question ans/ Answer)
From the diagrams in addressbook's documentation and the test command documentation, they don't seem to be using the ""
. I'm not so sure whether it would be best to follow their practices though.
15 (other comment)
The diagram looks good, however I think that the AddOpenEndedQuestionCommand should have a cross indicating that it is no longer referenced after the execute() method is called on it.
16 (other comment)
Already gave the bug reporter a clarification in seantaysl/ped#5.
17 (other comment)
Already gave the bug reporter a clarification in seantaysl/ped#6.
@ijavierja
(7 comments)1 (commented on others PR)
No website inserted yet
2 (commented on others PR)
Is there any reason for the space infront?
3 (commented on others PR)
I think this needs to be changed. oweMoney doesnt sound like a client source description
4 (commented on others PR)
Should the error message be changed as it is phrased strangely?
5 (commented on others PR)
Is there a difference between ColorPicker.WHITE_BORDER and Color.WHITE?
6 (commented on others PR)
Doesnt look like Command is used here. Why import it?
7 (commented on others PR)
I think its a little strange to put a predicate in the person folder. Perhaps we can package it in model with where it is used at or put the whole class into the Model class.
8 (commented on own PR)
Ok sure changed to I4I
9 (commented on own PR)
I think we should change this along the way for v1.2. Since we are not sure as of yet if we want to remove the fields or add some fields
10 (commented on own PR)
Sounds good will edit
11 (commented on own PR)
Ok sounds good too. Can change it.
12 (commented on own PR)
Right. Thanks for pointing it out
13 (commented on own PR)
Yes. Will change this.
14 (commented on own PR)
Changed this. thanks for pointing it out
15 (commented on own PR)
settled
16 (commented on own PR)
hmm... you're right sounds better
17 (commented on own PR)
Yea sure. We'll keep to the same consistency as the earlier comment
18 (commented on own PR)
Thanks for pointing out!
19 (commented on own PR)
Sure. Then we need to make this consistent throughout the DG too!
20 (commented on own PR)
Opps a mistake on my part. It's been rectified
21 (commented on own PR)
because if it returns true, then the other method wont be called.
22 (commented on own PR)
a is the command while p is policy though
23 (commented on own PR)
I'm not sure why this is necessary
24 (commented on own PR)
Oh yes. You are right
25 (commented on own PR)
Can this sounds better. Thanks!
26 (commented on own PR)
It's different. but the similar part is where a method from Model is called. So instead of addPolicy method called, clearPolicy method is called
27 (commented on own PR)
I researched it. But i think this has not been implemented. Let me roll this out with the next PR
28 (commented on own PR)
What do you mean?
29 (other comment)
Necessary updates needed to close issue.
#11
#13
#15
30 (other comment)
Summary Table not yet done
31 (other comment)
Resolves #37
@maxxyh
(7 comments)1 (commented on others PR)
I think the message could be more detailed: "The expense book does not contain the category %s. Please create it using the addCat command first."
2 (commented on others PR)
I see where the issue is with this. Thank you Leben.
3 (commented on others PR)
Can we increase the top-up amount to at least $200 to prevent -ve default data?
4 (commented on others PR)
Will this work even after the tag has been reset in line 56?
5 (commented on others PR)
However, can we look into using CategoryNotFoundException
for consistency?
6 (commented on others PR)
Don't really understand the need for the second part:
(commandResult.isShowHelp() && !budgetDisplay.isVisible())
7 (commented on others PR)
GENIUS HAHAHA
8 (commented on own PR)
yup done!
9 (other comment)
README still needs to be updated with mockup and writeups.
10 (other comment)
LGTM! Developer Guide is updated with User Stories as discussed.
11 (other comment)
Could we also add the table for Command summary?
12 (other comment)
Closed after week 9 tutorial.
13 (other comment)
Closed after week 9 tutorial.
14 (other comment)
Closed after week 9 tutorial.
15 (other comment)
Closed after week 9 tutorial.
16 (other comment)
Issue has been resolved after refactoring work
17 (other comment)
Issue is resolved after refactoring from AB3 to Bamboo.
18 (other comment)
Issue is resolved after refactoring from AB3 to Bamboo.
19 (other comment)
User is able to remap command keywords e.g. instead of add >expense>
, map to spent >expense>
instead.
20 (other comment)
LGTM
21 (other comment)
Also added a default budget of $500
22 (other comment)
Doesn't seem to fix #108? Need to add a new exception for edit if no changes are requested.
23 (other comment)
Does this solve #127 ? Was #127 a result of the sample data?
24 (other comment)
#128 doesn't seem to be solved either - seems more like a UI problem - that the command should remain the command box?
25 (other comment)
Will need to fix this part as well too. Instead of return new CommandResult(String.format(MESSAGE_DEFAULT, expense))
it should be return new CommandResult(String.format(MESSAGE_DEFAULT, >STORE AND GET THE ORIGINAL CATEGORY HERE>))
26 (other comment)
The error message in the addCommand will need to be edited as well.
27 (other comment)
#138 doesn't seem to be addressed by the code changes
28 (other comment)
Also, error message in EditCommand needs to be updated. This could mean setting a default message for CategoryNotFoundException.
This also means that this CategoryNotFoundException should be used in other situations such as AddCommand
29 (other comment)
Limit commands to only letters
30 (other comment)
Note case sensitivity
31 (other comment)
Use regex
32 (other comment)
Limit number of characters for both Description and Tags and Remark
33 (other comment)
@maxxyh to update UG that no unicode is allowed
34 (other comment)
Maybe change to usage
?
35 (other comment)
Solution: don't display bar when do find command @hakiem526
36 (other comment)
Added spacing, thank you Theodore!!
37 (other comment)
Great catch, fixed!
@lucastai98
(7 comments)1 (commented on others PR)
is this proper grammar?
2 (commented on others PR)
is this proper grammar?
3 (commented on others PR)
wait really its supposed to be delete1 not delete 1?
4 (commented on others PR)
wait got one more here, accidentally delete the space?
5 (commented on others PR)
same issue as prev pr?
6 (commented on others PR)
same
7 (commented on others PR)
in action implies user is halfway using the app, the figure shows what the user shld see when the user first opens the app
8 (commented on own PR)
because deadline is not a compulsory parameter of Task, and will cause error if the deadline is set when instantiating
9 (commented on own PR)
fixed thanks!
10 (commented on own PR)
anything in point form does not have full stops, everything else has full stops
11 (commented on own PR)
Yes, names refer to both task name and assignee name. Words as you can have more than 1 keyword
12 (commented on own PR)
Words as you can have more than one keyword
13 (other comment)
has bugs, will try to fix again
14 (other comment)
fixed
15 (other comment)
repeated issue, has been fixed
16 (other comment)
repeated issue, has been fixed
17 (other comment)
duplicate issue, fixed
18 (other comment)
fix done
19 (other comment)
done
20 (other comment)
fixed
21 (other comment)
fixed
22 (other comment)
fixed
23 (other comment)
fixed
24 (other comment)
remove done status so bug cannot be reproduced (probably fixed)
25 (other comment)
no more done status, duplicate tasks also cannot be added anymore
26 (other comment)
fixed
27 (other comment)
done status removed, so not an issue anymore
28 (other comment)
fixed
29 (other comment)
fixed
30 (other comment)
FIXED
31 (other comment)
it is not a valid email
32 (other comment)
fixed
33 (other comment)
is a feature, not a bug.
Name can be duplicated, only git username should be unique
34 (other comment)
This is the format of deadline. We will state it clearly in our UG to indicate only one space in between.
35 (other comment)
fixed
36 (other comment)
edit git username should be case sensitive
37 (other comment)
Solution: dont let user update project name
38 (other comment)
Note: update UG and DG to reflect this
39 (other comment)
listprojects command is given in the UG
@kwannoel
(7 comments)1 (commented on others PR)
VALID_TELEGRAM, VALID_MATRIC_NUMBER, VALID_ADDRESS, invalidTags);
2 (commented on others PR)
I defined the class as Telegram
and follow this naming convention as well when naming the telegram
field for Person
.
What other different stuff are named telegram
?
3 (commented on others PR)
Search and replace: _MATRICNUMBER
-> _MATRIC_NUMBER
4 (commented on others PR)
Adds a student to the address book.
5 (commented on others PR)
We should only throw ParseException
in this function.
CommandException
is used for errors which occur during execurtion of a command.
ParserException
Represents a parse error encountered by a parser.
In this case, the error occurs during the parsing stage when the users passes in -1
.
6 (commented on others PR)
There is a redundancy here,
we called Integer.parseInt
twice,
once in StringUtil.isInteger
and once in this line.
This is because the parser is structured in a "validate first, then parse".
Would suggest a parse dont validate
approach instead: https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
7 (commented on others PR)
This is more of a FYI, up to you if you want to pull the change in 😃
8 (commented on own PR)
For input I think we can leave it as that, without the prefix @
.
I have updated the toString
instance to reflect the handle.
9 (commented on own PR)
nah I want to keep the throw
within each function to be explicit the functions throw exceptions.
Otherwise it won't be apparent where the exception occurs, as you can see below:
public static Attendance parseAttendance(String input) throws ParseException {
requireNonNull(input);
try {
return Attendance.fromDateString(input);
} catch (IllegalArgumentException e) {
parseException(input, Attendance.MESSAGE_CONSTRAINTS);
}
}
10 (other comment)
Include Badge in README
11 (other comment)
Update README with new project screenshot
12 (other comment)
Not needed after referencing UG https://ay2021s1-cs2103t-f11-1.github.io/tp/UserGuide.html#adding-a-student-add
13 (other comment)
Update docs for tags as well:
\t
-> \tg
14 (other comment)
Closed by #52
15 (other comment)
Sub PRs closed.
16 (other comment)
I think we may have to leave it as Ui.png
also instead of Ui-change.png
otherwise the bot can't scrape 😂
17 (other comment)
CI has some flags for trailing whitespace
18 (other comment)
Amazing thanks!
19 (other comment)
Done via #71
20 (other comment)
Do we still want this? If not let's close it
21 (other comment)
Resolve merge conflicts
22 (other comment)
Not an issue
23 (other comment)
extra parameters should just be ignored
24 (other comment)
user guide just needs to be updated to remove the address parameter
25 (other comment)
Fixed, a/
the address field is no longer in our user guide. That was what caused this issue.
26 (other comment)
Actually I guess we could improve our UX better by making inputs of the form: >EXPR>/
invalid?
e.g. a/
.
A pretty easy hack is to just add a/
as a command, so it gets parsed, then we throw an invalid command error inside the call to it.
27 (other comment)
Duplicate of #153
28 (other comment)
Included in #153 , closing this.
29 (other comment)
Included in #153
30 (other comment)
Only accept singapore numbers, i.e. 8 digit numbers
31 (other comment)
Hey I've tried to run it locally but it starts with an empty address book.
EDIT: probably due to JSON format change. Works fine after I removed the addressbook.JSON file in data
.
32 (other comment)
In terms of usage, what functionality should I test? (Commands to run etc...)
You can just include the addtiional commands as a user guide entry and ill reference from there.
Also would be great if you can rebase this on latest master
.
Thanks for your efforts!
33 (other comment)
whitespace changes, otherwise LGTM as shown above, after keying in a duplicate name.
34 (other comment)
After you fix it, go ahead and rebase it into master
35 (other comment)
36 (other comment)
Not a bug, see RFC 822
37 (other comment)
Closing this, there's no meaningful way we can restrict phone numbers,
NUS has international students as well which have numbers which do not conform to 8 digit specifications
@kevnw
(7 comments)1 (commented on others PR)
Can you give a proper example? The example here does not seem to use the recurring feature.
2 (commented on others PR)
Remove sysout commands.
3 (commented on others PR)
Good Job!
4 (commented on others PR)
Maybe can consider abstracting the logic at another place.
5 (commented on others PR)
Well done with the testing!
6 (commented on others PR)
I see you have covered most of the possible test case. Well done!
7 (commented on others PR)
Well done with the use of stubs!
8 (other comment)
Fixed by #198
9 (other comment)
Closed by #208
@luciatirta
(7 comments)1 (commented on others PR)
perhaps you want to consider adding multiplicity for the attributes of a person object to make it consistent with the rest of the diagram
2 (commented on others PR)
same comment as above
3 (commented on others PR)
perhaps consider smaller storage space required since our jar file is only 13MB
4 (commented on others PR)
In the case of "delete x", it does not matter whether x is larger than the list size. Perhaps change the "delete x" to "delete contact x" or remove the phrase in bracket.
5 (commented on others PR)
Since command is part of the logic component, perhaps change the color to LOGIC_COLOR
6 (commented on others PR)
Since parser is part of the logic component, perhaps change the color to LOGIC_COLOR
7 (commented on others PR)
I feel like the phrase "easily search for the associated contacts with a task" is too technical and not user-oriented. Perhaps can change to something like "easily find a person I am working with in a project"
@maguireong
(7 comments)1 (commented on others PR)
Maybe can update along the way?
2 (commented on others PR)
Might have missed this change out, should it be DeleteSessionCommand here?
3 (commented on others PR)
Just to check, so this sessionIndex here only contains the updatedSessionIndex? Because in the EditScheduleDescriptor, there's both sessionIndex and updatedSessionIndex, so it may a bit confusing if sessionIndex is referring to updatedSessionIndex here, especially if Bennett is going to implement the other portion
4 (commented on others PR)
Just wondering why these few added methods here return null
5 (commented on others PR)
not sure if a different prefix should be used instead because there are a number of commands with prefix p/ already, just with starting different command word
6 (commented on others PR)
true, but that's why initially I added in session index as well, we always have all 3 parameters so it won't be too confusing to see if its session index or updated session index, but of course we need to update both values which might take up extra work
7 (commented on others PR)
yeap and period is sview as well, hmm maybe pd/ like payment done? but its solely just to differentiate with the other prefixes so that it won't be too confusing
8 (commented on own PR)
ohh yeahhh okay i'll change that, other than that, anything else?
9 (commented on own PR)
yea too many files, but I tested with the test cases and ran the main, all seems well but 1 part says NonExistentFile.json file not found, not sure if it was there before I did all this, but I doubt so
10 (commented on own PR)
for this, there are some errors when I change it to clients, not really sure how to solve them, it somehow fails 2 test cases but it passes the checkstyle test on Github, regarding the other checkstyles, I'll amend them accordingly thanks!
11 (commented on own PR)
there will be 5 test case errors because the json files are all Clients instead of clients if I'm not wrong
12 (commented on own PR)
what do you mean by the actual data file?
I've already made the changes to both of the mentioned files, but I still have 2 tests that failed, 1 of which is this screenshot, but I can't seem to find anywhere with Clients already
13 (commented on own PR)
hmm yeap I thought so too, I've already edited those json files but the 2 errors in the screenshot above is still present though
14 (commented on own PR)
okay sure but it will fail the checks here
15 (commented on own PR)
hmm but for now, we are still largely following AB3 so it should still be there?
16 (commented on own PR)
okay sure I'll change that
17 (commented on own PR)
hmm, the other time when I asked for a workaround in the group, it was regarding this issue but I think changing it to String works to actually! Anyway in the tests, I've added the conversions to LocalDateTime and int respectively, so it works as well.
18 (commented on own PR)
I think both ways work but when I was doing it the other time, I didn't think much into it so I just put in the respective params into the method.
19 (commented on own PR)
Hmm I would think if you want to add schedule, then you show client and session but since we're editing, we show list of schedule?
20 (commented on own PR)
oo okay sure i'll make that change, didn't know that it signifies that
21 (commented on own PR)
Yeap its been encapsulated in line 65 to 69
22 (commented on own PR)
I would think that its good clearer to have the values here too, esp when I'm debugging the tests and its also required in createEditedSchedule method
23 (commented on own PR)
yep sure I can remove that too, it was there for clarity sake when I was doing this
24 (commented on own PR)
For now, it shows Invalid Command Format, I get what you mean, maybe after you implement those features that you can try them out? cuz now all 3 indexes are required before your features are being implemented
25 (commented on own PR)
But I think for editclientdescriptor, the index is to filter our the client, but for my case, both client and session index are required to filter out the schedule just like how your deleteSchedule is like, it filters out the relevant schedule before it can be deleted
26 (commented on own PR)
will the updated change work
27 (commented on own PR)
Okay i'll change that, makes sense
28 (commented on own PR)
oo so should I just linked it there or actually is this question redundant?
29 (commented on own PR)
it was in a code format, the guy suggested this instead and I think this will be more readable?
30 (other comment)
There's a huge chunk commented out in
EditSessionCommandTest.java
Are we going to need it? If not, perhaps it is better to remove it first and create a new Issue for this.
Other changes look sensible to me
That's for future tests because it requires the find session function for it to work, that's why I commented it out for now
31 (other comment)
What's the typo here? I don't see it
32 (other comment)
I think either "all clients should be All Clients"
or "Listing is not the correct word"
but everything ends with the -ing, so I changed "all clients should be All Clients" instead
@kc-98
(7 comments)1 (commented on others PR)
Can our team discuss and standardize the restriction of our arguments?
2 (commented on others PR)
Will this case ever be reached? If not, perhaps adding an assertion can be more defensive!
3 (commented on others PR)
Using BigInteger may slow the program down!
4 (commented on others PR)
Good use of abstraction specifically for Find commands!
5 (commented on others PR)
Perhaps can add in images and diagrams in the future?
6 (commented on others PR)
There is a typo here.
7 (commented on others PR)
Should be returnsStock() here in method header
8 (commented on own PR)
Noted!
9 (commented on own PR)
I think I read that for javadocs next line should be 4 spaces, let me confirm again.
10 (commented on own PR)
Noted!
11 (commented on own PR)
User inputted the number already hence past tense.
12 (commented on own PR)
I think we can standardize past tense for things that are already done.
13 (commented on own PR)
Fixed!
14 (commented on own PR)
Fixed!
15 (commented on own PR)
I think its better to tell user that ... refers to zero or more sn/ fields. They might think ... should mean anything else at one glance.
16 (other comment)
Prefix: the entire company name
Content: accumulative stock for the respective company
17 (other comment)
Do review the merge conflicts @LimZeWeiDennis under docs/DeveloperGuide.md!
18 (other comment)
Same issue as PR #150
@jeminsieow
(6 comments)1 (commented on others PR)
Remember to change the method name to match Logs. This is repeated for the other tests in this file
2 (commented on others PR)
Remember to change variable names from Persons to Logs
3 (commented on others PR)
Shouldn't the withLog() method take in a Log object as an argument instead of 2 strings?
4 (commented on others PR)
Remember to change readAddressBook to readLogBook. This is repeated throughout the file
5 (commented on others PR)
Reminder to change variable names to match Logbook. This is repeated throughout the file
6 (commented on others PR)
Remember to refactor saveAddressBook to saveLogBook
7 (commented on own PR)
In the original person class, equals() method compares both identity and data fields. Removed identifier fields for isSameLog() method
8 (commented on own PR)
Yeap for sure, thanks for checking!
9 (other comment)
LGTM
10 (other comment)
I don't think this has been completed yet
11 (other comment)
LGTM
12 (other comment)
Remember to pull and fix the merge conflicts
13 (other comment)
There are some merge conflicts to be resolved here.
14 (other comment)
LGTM
15 (other comment)
16 (other comment)
17 (other comment)
Make it clear in user docs that the find command will take in the 2nd word (or both words? idk see the code)
18 (other comment)
block out 0 reps (show error msg saying cannot have 0 reps)
19 (other comment)
Make it clear in the docs that comments are compulsory (if have time can make it optional) (to discuss later)
20 (other comment)
21 (other comment)
Also applies when editex e/[empty]
@jzwoo
(6 comments)1 (commented on others PR)
Should we change the variable to VALID_INSTRUCTORS too?
2 (commented on others PR)
"keywords" might be better since we can have multiple keywords 😁
3 (commented on others PR)
Hmm for this part is it better to say "Assigns the contact/instructor at the specified index to the module code"? 🤔
4 (commented on others PR)
May I also just check if there is a check for the preamble? So something like "find sjdjahdsj n/ john" would not work.
5 (commented on others PR)
Sorry can I just check if there is a check for multiple prefixes 😄
6 (commented on others PR)
Should we extract this out as a method? To follow the SLAP principle
7 (commented on own PR)
Alright, I've changed it in the next commit.
8 (commented on own PR)
Yeah sounds like a good idea, will do so
@mhdsyfq
(6 comments)1 (commented on others PR)
maybe can include that the add command prevents duplicate modules from being created? actually right.... as of now our application allows duplicates if they are not completely equal, should we address that?
2 (commented on others PR)
very minor nit: perhaps "Edit the details of a module...." would be better? 😅
oh! and also, i thought we were changing edit to edit {module code} instead of edit {index}? 😕
3 (commented on others PR)
i think might not be necessary to mention the save part cause if im not wrong the exit command doesn't do a final save before exiting 😄
4 (commented on others PR)
noice noted!
5 (commented on others PR)
HAHAHAHA true true true...... then either we stick with this or we must include the 'auto-save' in the other features ah
6 (commented on others PR)
Perhaps can improve this by using equalsIgnoreCase? cause as of now if i type in find foundation
, all the modules with 'Foundation' as tags won't be listed 😢
tag.tagName.equalsIgnoreCase(name)));
7 (commented on own PR)
thanks for spotting it bro 👍🏽 resolved! all checks passed now!
8 (commented on own PR)
Hmmm, what do you think about "...in GradPad for the module to be successfully displayed."? 🤔
9 (commented on own PR)
done!
10 (commented on own PR)
HAHAHAHA bro i just followed the given, not sure if correct syntax 😂 maybe i should just put the same line as the one above instead of putting "Similar to previous." 🤣
11 (commented on own PR)
oh ya its supposed to be help modules LOL cause its under "### Open Help Page". i'll fix it!
12 (commented on own PR)
not yet but im planning to implement it!
13 (commented on own PR)
is disconfirmation a word HAHAHA this is a good suggestion (i changed the variable name to isCancel though)! makes the code look neater too 👍🏽
14 (commented on own PR)
HAHAHAHA i thought like with javadocs would be nicer LOL i'll remove!
15 (commented on own PR)
ok will address this! thanks bro
16 (commented on own PR)
done!
17 (commented on own PR)
noted!
18 (commented on own PR)
done!
19 (commented on own PR)
HAHAHA oh if the requests are $$$ then we can remove them!
I think I did it this way for the purpose of the message to be displayed to the user...
e.g. if the user types in edit cs2222 c/cs2101
, GradPad will check first if the module exists before even checking if the module is in GradPad's list.
so if:
Module doesnt exist in nusmods -> "Module does not exist"
Module exists, but not in GradPad -> "Module has not been added yet"
i hope i managed to explain it clearly, but ya i think we can remove if it really affects performance etc.
Should i?
20 (commented on own PR)
ok will include!
21 (commented on own PR)
done!
22 (commented on own PR)
Ah yes bro i actually did think about this!! If you see the EditCommandParser class you can see 2 messages that i didn't use hahahaha nice catch though👍🏽
Anyway i think i will open up a new issue to clean up all the messages in general
23 (commented on own PR)
yes! idk eh but to me it doesnt make sense if we allow edit via module code, but then we can only edit the modules in the filtered list. I was thinking users can just edit any module from anywhere, what dyou think?
24 (commented on own PR)
oh no i didn't see this, will change!
25 (commented on own PR)
aight bro will add in!
26 (commented on own PR)
ahhh okok i just thought it might be a little repetitive but ok i'll put it back hehe
27 (commented on own PR)
done!
28 (commented on own PR)
okok i'll work on it!
29 (commented on own PR)
ah man..... ok i'll tweak!
30 (commented on own PR)
is the assertEquals equivalent to testing the equals() method of the class?
31 (commented on own PR)
wah i honestly didnt realise this HAHA ok i'll use those instead so no repeating json files
32 (commented on own PR)
good point! will make the amendments right away 😸
33 (other comment)
hi
34 (other comment)
Good job bro - love the clean code 💯
Anyway I realise it was quite dumb of me to implement
ModularCredits
by storing a string value inside LOL cos now we need to retrieve that string and then parse it into int again when we use it. Do y'all think we should refactor this some time moving forward?
HAHA nah man its fine, but ya while i was doing jn i was actually wondering why the value of the ModularCredits
was of type string 😅 however, if there's not much other things that require us to use it then i don't think it's necessary to refactor cause it might be troublesome, so it pretty much depends!
35 (other comment)
LGTM bro! good job 😄
36 (other comment)
LRGTM! super well done 👍🏽 👍🏽
37 (other comment)
LGTM
38 (other comment)
Looks guuud; just tiny nits abt the javadocs!
And on a side note, should we write tests for
ForceDeleteCommandParser
? Since it's mostly a duplicate ofDeleteCommandParser
, perhaps we don't need to, so just asking!
yes we definitely do i totally forgot about that LOL cause if not coverage 0% xDDD
@nguyendqminh
(6 comments)1 (commented on others PR)
Should be "of the module [...]"
2 (commented on others PR)
Should be "of the module [...]"
3 (commented on others PR)
Remove the comment
4 (commented on others PR)
Maybe use Module.TYPE
instead of "M" for better maintainability?
5 (commented on others PR)
This is indeed correct; however I believe it's better to have a separate function to handle this instead of importing from the irrelevant Address class.
6 (commented on others PR)
Same as above.
7 (commented on own PR)
I am not sure; we will update this section constantly, but the line might be unnecessary. I'll remove it for now.
8 (commented on own PR)
Update: fixed.
9 (commented on own PR)
Do you feel "There is no module that matches the given module code" is better?
10 (commented on own PR)
Noted with thanks!
11 (commented on own PR)
Yeah, this is for clarity (and just in case we want to have different keywords for them later on).
12 (commented on own PR)
Agreed, I was halfway through implementing when I realized the "time" parameter should've been named "date" 😃 I will change "time" to "date" later.
13 (commented on own PR)
Fixed
14 (commented on own PR)
Mm, I think the original name should be mentioned before its abbreviation, but maybe it's just me.
15 (commented on own PR)
Thanks for the review! Currently, the app doesn't accept strings with '/' as valid parameters, hence it is impossible to type in links. Should we add support for links in the future? I'm still leaving some of the test cases as "E-learning" as placeholder.
16 (other comment)
Noted with thanks. I will finish it by tomorrow (Sat) 6pm.
17 (other comment)
Dear Minh
Currently there is one 1 use case, can you add more use case for our app? I think for v1.2 we have already proposed quite a number of features
Also, can you check again to see if there is any obvious user storie missing?
Thank you
Noted, I am working on it now. Will get this done by tomorrow (Tuesday) 6pm.
@pengxiangg
(6 comments)1 (commented on others PR)
minor typo
2 (commented on others PR)
Minor changes to remove AB3 needed
3 (commented on others PR)
Minor changes needed to remove AB3 trace
4 (commented on others PR)
Minor changes
5 (commented on others PR)
Should it be assert isInDeck instead? Since the user needs to be in a deck before going into review mode (like the isInDeck still remains true if the reviewMode is true
6 (commented on others PR)
Actually the correct format for in-document links are (#main-mode-features) and (#faq) which was probably why the links did not work.
@jmleong666
(6 comments)1 (commented on others PR)
Should we be consistent with whether to add full stops at the end of the description statement? I think the UG will look cleaner that way.
2 (commented on others PR)
Should we be consistent with whether to put a full stop after each step in the use cases? I think the DG will look cleaner that way.
3 (commented on others PR)
Should we format the datetime so that it is consistent with the Meeting toString()
datetime format?
4 (commented on others PR)
Will modify the id
setting implementation under my contact-archive
branch!
5 (commented on others PR)
Does buyerId
reflect the lexicographical order of the buyer name?
6 (commented on others PR)
The sale edit command doesn't seem to update sales amounts properly. When I change the buyer of the a certain sale, the sales amounts of the affected contacts aren't updated. Is this the intended behaviour?
7 (commented on own PR)
Yeah I'll do a quick fix.
8 (commented on own PR)
I think the counter resets since a new AddressBook
instance is initialised every time the app starts, so if we do a static variable we might have to store it into the storage file.
9 (commented on own PR)
Whoops missed out on commented unused imports. Will remove them asap!
10 (commented on own PR)
Might have accidentally removed it when merging. Will fix it asap!
11 (commented on own PR)
Will go for archive add.
12 (commented on own PR)
Might need some time to think about how to do this. Maybe put this under 1.3b? Need to work on other features.
13 (commented on own PR)
Yeah did too much Ctrl+C Ctrl+V. Will fix the naming asap.
14 (commented on own PR)
Whoops my bad. Will update on another feature branch.
15 (commented on own PR)
Will add them in this PR!
16 (commented on own PR)
Yeah should've considered that earlier.
17 (commented on own PR)
I'll try to fix it asap!
18 (commented on own PR)
Styling issues should be fixed now. Let me know if there's still anything missing for the styling!
@PrestonTYR
(6 comments)1 (commented on others PR)
Shouldn't weight be included in this check?
2 (commented on others PR)
Shouldn't comment be at the end just like all the other fields?
3 (commented on others PR)
Did you forget to add the test cases? 😄
4 (commented on others PR)
Should the NoteCommandParser constructor be taking a preset patient as a field?
5 (commented on others PR)
Not very important, but wouldn't be better if 2 models are only equal if they have the same context as well?
6 (commented on others PR)
Would it be better if model had a set...() method that called context.set...() instead? It works either way though 😄
7 (commented on own PR)
yep added 😄 I missed it the first time
8 (commented on own PR)
Can u elaborate a little? Because I don't what you're talking about
9 (commented on own PR)
Theres a test for invalid index in an unfiltered list that checks for that already 😄
10 (commented on own PR)
Do you mean to use this.username.equals(username)? Because I feel that would be more confusing instead.
11 (other comment)
Decided not to implement this feature
12 (other comment)
Decided not to implement this feature
13 (other comment)
Decided not to implement this feature
14 (other comment)
same as #180
15 (other comment)
closed with pr #218
@solkim-83
(6 comments)1 (commented on others PR)
Perhaps the warning message could be changed to incorporate Calendar too? (Not sure if it's necessary but just a thought)
Will it be starting with both empty AddressBook and empty Calendar when DataConversionException is thrown?
2 (commented on others PR)
I believe this is a typo unless you mean 2 empty lines
3 (commented on others PR)
Should add 21st, 22nd, 23rd and 31st as the cases too
4 (commented on others PR)
is there a particular reason why the max number of persons to be displayed is 6? seems quite a random number but no objection with it.
5 (commented on others PR)
I do not think this change is confusing as 'This' clearly refers to the command of finding a contact.
We need to bear in mind that this UG is also graded by a professor who is not from SOC, and hence may be more particular in terms of grammar and sentence expression.
6 (commented on others PR)
I agree that it is a formatting error, and looks neater and more consistent with space before the colon.
7 (commented on own PR)
Have removed the third implementation for now as I've already implemented the feature with the tag in another branch. Will take note in future.
8 (commented on own PR)
Have removed the third implementation for now as I've already implemented the feature with the tag in another branch. Will take note in future.
9 (commented on own PR)
Have removed the third implementation for now as I've already implemented the feature with the tag in another branch. Will take note in future.
10 (commented on own PR)
Added accordingly.
11 (commented on own PR)
The number of participants are counted based on the number of tags because you can add the participants by adding a tag with the participants name.
What do you think of the above?
12 (commented on own PR)
Yes the tags are compared string-wise only when the number of tags (i.e. number of participants) for all events listed are equal. Then the events will be sorted according to the lexicographical order of the participant names.
If not the sorting order based on the participant number would be:
if the events have different participant number, sort according to ascending order.
if a group of events in the list have same participant number, sort based on their description (since they have same number of participants)
if all events in the list have same participant number, sort based on the participant name for each event.
Does this make sense to you? I don't quite get your confusion here. Would appreciate if you could elaborate more. Do let me know if you need further clarifications. Thanks.
13 (commented on own PR)
Okay, will make some changes on the comparison criteria.
As for your first question, there wasn't much things discussed as a group regarding the tag feature for the events. So Andy and I assumed that names of participants are more or less the main information that the tags will store. Hence I thought comparing the number of tags and the content of tags is acceptable. Would there be a better way to do this?
14 (commented on own PR)
Thanks for pointing it out. Have made the edit.
15 (commented on own PR)
Okay, have edited accordingly. Thanks.
16 (commented on own PR)
I agree that multiple is inclusive of zero but I felt that the sentence structure is rather awkward and weird so is sentence expression?
17 (commented on own PR)
I did not edit the second sentence, as the only edit I made with it was to move it to the next line.
18 (commented on own PR)
I feel that it is more of a grammatical error, hence the sentence connotation will definitely be the same still.
19 (commented on own PR)
I don't think it is necessary as the add command description states the details of the DATE_TIME as well as description, just like the contact side.
20 (commented on own PR)
Why do isValidTime and parse need to be changed?
21 (commented on own PR)
Thanks for the suggestion. Have included the example below.
22 (other comment)
Closed the PR due to the lack of association infrastructure between Persons and Events.
23 (other comment)
Have updated the .png images hence merging them.
24 (other comment)
Also added an assertion statement for AddEventCommandParser in the same PR. Will be more mindful about the PR and will separate the implementations into different PR for clarify and organisation. Thanks.
25 (other comment)
Invalid issue
@khinkhinn
(6 comments)1 (commented on others PR)
sorry can i check why this was added!!
2 (commented on others PR)
sorry isit??? i dont think so..? do correct me if im wrong..!!
3 (commented on others PR)
should this be Sorted Tag List Accessors?
4 (commented on others PR)
maybe can just call .tagName directly?
5 (commented on others PR)
sorry just curious where is this class used?
6 (commented on others PR)
sorry i think this returns a Tag!
private static Tag () ....
7 (commented on own PR)
yep done thanks!!!
8 (commented on own PR)
yes thanks
9 (commented on own PR)
yep i removed it thanks!!
10 (commented on own PR)
yep done!
11 (other comment)
Failed CI checks
12 (other comment)
Code still fails CI check
13 (other comment)
LGTM
14 (other comment)
looks good to merge!
15 (other comment)
lgtm
16 (other comment)
lgtm
17 (other comment)
sry dont merge yet i need to add tests
@HynRidge
(6 comments)1 (commented on others PR)
is the word 'conform' a typo or it is the intended meaning?
2 (commented on others PR)
should the tag be plural?
3 (commented on others PR)
I think requireNonNull(addressType) and requireNonNull(addressString) can be combined into requireNonNull(adddressType, addressString);
4 (commented on others PR)
Can the Warning be in the information source thingy? (sorry i don't know what is the component called, but it was something like a box of)
5 (commented on others PR)
I am not sure about this, but is it neccessary to list the commands, that could be redone? Since redo only exist when undo is executed right?
6 (commented on others PR)
Okay then
7 (commented on own PR)
should I remove the whole extension?
8 (commented on own PR)
Okay, I have restore to original, sorry for the different input. I merge code to master and there were conflicts.
9 (commented on own PR)
Yep.. resolved
10 (commented on own PR)
not sure
11 (commented on own PR)
Fix!
12 (commented on own PR)
It's okay I think just keep it first..
13 (commented on own PR)
Amend the comments
14 (commented on own PR)
Yes it is .. will remove it
15 (commented on own PR)
yes..amend it!
16 (commented on own PR)
yes
17 (commented on own PR)
Amend
18 (commented on own PR)
Okay noted
19 (commented on own PR)
I am having an issue with the test and I commented out to make it pass
20 (commented on own PR)
okay amend!
21 (commented on own PR)
Okay fixed!
22 (commented on own PR)
Yep, refactor!
23 (commented on own PR)
Do you think it is okay to drop?
24 (commented on own PR)
I think we should just keep the consistency of checking regex, but for description we just allow "" since it is an optional field for the user?
25 (commented on own PR)
what do you mean by empty line??
26 (commented on own PR)
Okay empty line deleted
27 (commented on own PR)
Okay amend it!
28 (commented on own PR)
Fix this!!
29 (commented on own PR)
Yep amend this too!!
30 (commented on own PR)
Owh yes will add that in
31 (commented on own PR)
Added label command
32 (commented on own PR)
oh right
33 (commented on own PR)
Yes I just want to test the behaviour of the setTag.. there's no intention to create new AddressBook
34 (commented on own PR)
Sure!
35 (commented on own PR)
Yes
36 (commented on own PR)
Yes
37 (commented on own PR)
yes
38 (commented on own PR)
Okay will fix
39 (commented on own PR)
For this one I follow from the previous use cases. Should I amend for all of them?
40 (other comment)
done
41 (other comment)
Done updating AboutUs.. Will push the file together with other parts
42 (other comment)
Done! Updated DG NFR
43 (other comment)
Sorry wrong upload
44 (other comment)
@luo-git I have made the changes. Could you kindly check again? Sorry for the overhead confussion!
45 (other comment)
LGTM!
46 (other comment)
DONE!
47 (other comment)
DONE!
48 (other comment)
DONE!
49 (other comment)
DONE!
50 (other comment)
Looks good to me, but I am not familiar with testing, so I'm not 100% sure about it.
Okay we wait for tomorrow then
51 (other comment)
DONE BY @anthony6401 . I will close this issue now
52 (other comment)
LGTM. Could be improved by writing a few unit test cases for CurrentPath.
I write the test cases on a seperate PR maybe?
53 (other comment)
Everyone one has contributed to DG!
@Persdre
(6 comments)1 (commented on others PR)
I agree 😃
2 (commented on others PR)
From the delete example given in the DG, should this line be "updating the sales of a drink...?"
3 (commented on others PR)
should there be a blank line between the expected result and the test case?
4 (commented on others PR)
If you use enter
here, does it mean it is a command? as in our user guide, content in `` is considered as a command entering by users
5 (commented on others PR)
This part I think should keep c-add? as somebody said it is the wrong command as can't work
6 (commented on others PR)
agree 👍
7 (commented on own PR)
Thank you for reminding me!
8 (commented on own PR)
Yes, I was not sure about the format so I didn't update it.
9 (commented on own PR)
Thank you! I already updated it!
10 (commented on own PR)
Yes, thank you!
11 (commented on own PR)
Thanks! Changing now:)
12 (commented on own PR)
en, yes, I agree. I understand but maybe users' can't. I will give a concrete example in the bracket. Thanks~
13 (commented on own PR)
hh ok I copied the format from original UG. I will delete alternative one here.
14 (commented on own PR)
thanks
15 (commented on own PR)
ok! now
16 (commented on own PR)
thanks! change it now
17 (commented on own PR)
thanks! I am changing it.
18 (other comment)
for #3
19 (other comment)
#4
20 (other comment)
LGTM
21 (other comment)
sad 😦
22 (other comment)
now the command is not as equal as the original
23 (other comment)
already changed now
24 (other comment)
already solved
25 (other comment)
some unupdated master contents
26 (other comment)
reopen it to master branch
27 (other comment)
Actually, it is the design consistent with the ab3. You type in the keywords and it will return all drinks match some keywords. So the result is BSBBT and BSBM. Nothing matches ABCD.
28 (other comment)
#172 #187 #191 #195 #196 #197 #200
29 (other comment)
Thank you for your advice! It has been solved 😃
30 (other comment)
Thanks! Tag itself should not be so long. So I add 50 character's restrictions to it.
@nopenotj
(5 comments)1 (commented on others PR)
should this be a method in PersonList? like .get(name)
2 (commented on others PR)
good example 👍
3 (commented on others PR)
*bad
why would you want to clear my labels
4 (commented on others PR)
naming can be more specific like showTimeline
5 (commented on others PR)
think we can look into renaming this to timelineCommand in 1.4 similar to help command!!
6 (other comment)
Add to notes that name can be alphanumeric
7 (other comment)
Already stated in ug time and date is compulsory
8 (other comment)
State in UG that name refers to full name
9 (other comment)
Stated in Userguide lol
10 (other comment)
Will not support
11 (other comment)
Implement MAX number
12 (other comment)
Add note for user guide to use autocomplete / copy command for names / emails who overflow
13 (other comment)
Module need to support no members / 1 member
14 (other comment)
Need mention in UG that all module names are case-sensitive
15 (other comment)
Command is wrong. It is stated in the error message.
16 (other comment)
We did competitive study (Apple, Android contact books), and all support duplicate email and phone number, so we will not support this validation as we hope to give the users more flexibility
17 (other comment)
State case-sensitive
18 (other comment)
Don't allow resize or make background that colour
19 (other comment)
we need to investigate further
20 (other comment)
State clearly in UG we don't support this
21 (other comment)
Add validation for date time
22 (other comment)
state in ug
23 (other comment)
won't do
24 (other comment)
Also we have new functionality which helps users with this fzf-completion
@shermz-lim
(5 comments)1 (commented on others PR)
Some of the comments are not correct throughout the code
2 (commented on others PR)
This is for us to get available rooms based on which Rooms we currently have that are booked. But the booking class only contains the room ids and not the Room object so the input may be a list of integer IDs instead? Depends on how we implement the rest so I think can leave it for now!
3 (commented on others PR)
I think this interface is supposed to only return a list of bookings. Can try looking at ReadOnlyAddressBook and find its usages to see how it's used and we can just follow! If I am not wrong it's used with storage. Other than this, LGTM!
4 (commented on others PR)
will doing !model.hasRoom(editedBooking.getRoomId()) be better?
5 (commented on others PR)
Hm I think this is not needed
@dcchan98
(5 comments)1 (commented on others PR)
this should still be person, not changed to food ( issue occured when using assisted refactoring to change all person to food)
2 (commented on others PR)
Same as above
3 (commented on others PR)
same thing as above
4 (commented on others PR)
small issues but we should change to "contain +ive numbers"
5 (commented on others PR)
HAHA can i have a serving of alice pauline?
6 (commented on own PR)
Alright!
7 (commented on own PR)
Alright!
8 (commented on own PR)
Alright!
9 (commented on own PR)
Alright mate
10 (commented on own PR)
ok!
11 (other comment)
I think this would create potential bugs. For example, assume there are food items with the same name, fat, carbs, protein, date but different tags in the fridge. Then you filter a tag name and delete the filter result. It might delete the wrong food item because
List#remove(E e)
only removes the first occurrence of e.
To prevent this, I think you might need to update the
Food#equals
method
Hmm ok I get what you mean. As for changing the food definition, I think we should discuss on Saturday instead(Because if lets say someone eats 2 McSpicies, they may be the same food even if tagged for lunch/dinner). As for now, I will do a quick fix by always removing from index zero from the arraylist ( to prevent any sort of traversal errors) if the "wrong" food item is to be deleted. ( ie when FoodTwin1 is mistaken for FoodTwin2 and FoodTwin1 is deleted, the next FoodTwin1 would delete the next food Twin2).
12 (other comment)
LGTM
@khenghun
(5 comments)1 (commented on others PR)
Does not match constructor, should be
new Recipe(0, ingredients, 2, "", new ProductQuantity("1"), "Recipe 1", false)
instead
2 (commented on others PR)
Maybe update this or remove TODO?
3 (commented on others PR)
can extend Quantity class if you want
4 (commented on others PR)
Perhaps show a message to tell the user if no such item is found?
5 (commented on others PR)
this should work fine since the filters are reset at the start of every command
6 (commented on own PR)
oops forgot to remove this
7 (commented on own PR)
the recipecard constructor is also used for listr, would rather let the card handle this than the inventorylistpanel
8 (commented on own PR)
Printable recipe currently used only once in its lifetime, toggle option given for ease of future extensibility.
9 (other comment)
Bug fixed
10 (other comment)
Maybe rename as viewDetailedItem or viewDetails (similar to the command name) so that it is easier for the reader to follow.
11 (other comment)
LGTM
12 (other comment)
resolves #131
13 (other comment)
LGTM
14 (other comment)
resolves #114
15 (other comment)
LGTM
16 (other comment)
LGTM
@bangyiwu
(5 comments)1 (commented on others PR)
typo here, being able*
2 (commented on others PR)
I don't really think contactTagIntegrationManager should handle the addressBook.removePerson aspect as well. It feels to me that you should separate it into two commands. Address book still handles removing of the person. But you can remove the tag first before address book removes the person. Correct me if I am wrong. The rest of this PR looks great though!
3 (commented on others PR)
I get your point, we will just do this then, I will approve it as it is. Thanks for the clarification.
4 (commented on others PR)
Can people use a mix of these symbols? for example 2020.11/12 23-00? if they can maybe show an actual example, I think it will be even clearer than it is now
5 (commented on others PR)
Is there an exception being thrown for st/ values of more than 1 or less than 0?
6 (commented on own PR)
Thanks for the suggestion, I have changed the magic literals to static final strings
7 (commented on own PR)
will delete this PR now and push again after permaSort is merged
8 (commented on own PR)
even if it doesn't maintain order preservation, this comparator will always compare the first tag in the set which is also the first tag shown on the contacts display. So it does fulfill what it needs to do?
9 (commented on own PR)
okay noted, will change it to comparing email so users can find all people with similar emails easily. For example, sorting by alphabetical order to find everyone who has the nus prefix email quickly
10 (commented on own PR)
Yup, please refer to the permaSortCommand PR to see the changes made
11 (commented on own PR)
okay will do
12 (commented on own PR)
thanks for catching this!
13 (commented on own PR)
changed to deletebytag
14 (commented on own PR)
resolved
15 (commented on own PR)
resolved
16 (commented on own PR)
removed
17 (commented on own PR)
updated
18 (other comment)
I will fix the cli fails before reopening
19 (other comment)
Challenges faced: so far only able to sort the address book permanently, if anyone has an idea on how we can sort the address book temporarily, let me know
20 (other comment)
As of now, we are keeping the delete function from the adapted project. Will reopen if changes are required in the future
21 (other comment)
As of now, we are keeping the list function from the adapted project. Will reopen if changes are required in the future
@jianhandev
(5 comments)1 (commented on others PR)
can be moved to a separate util class e.g. TypicalAppointments class
2 (commented on others PR)
can do likewise for description, datetime, status, tags
3 (commented on others PR)
we will need an AppointmentBuilder class too
4 (commented on others PR)
LocalDateTime will have to be updated to use custom DateTime class. Refer to the latest commit.
5 (commented on others PR)
I think this should be ParserException! Since the code is located in the parser package. CommandException is thrown when error occurs in the command classes.
6 (other comment)
Update of README is complete.
7 (other comment)
False PR, no changes found.
8 (other comment)
I have changed the title in this file.
9 (other comment)
I've updated the jar, can you test it out on the latest jar released?
10 (other comment)
This is because the font color of the drop down text is white.
How to fix this:
11 (other comment)
We need to delete all appointments associated with a patient when a patient is deleted.
12 (other comment)
Zero is not a positive integer.
13 (other comment)
The appointments tab serves to show a list of all appointments. However, they need not be sorted. For a sorted view of the appointments, use the 'day' command.
14 (other comment)
However, the suggestion to sort the appointment list by date can be considered as there is no harm doing so.
15 (other comment)
Rationale for behaviour:
If the list of patients is very long, after adding a patient a user needs to look through the long list for that added patient to confirm that it is being added
Displaying the added patient alone is clear to the user that the patient is added correctly.
If the user wish to view the full list again, he/she can enter command 'listpatients' after adding the patient
I think we should mention this behaviour clearly in our UG instead.
16 (other comment)
An upcoming 'UndoCommand' feature
17 (other comment)
To be addressed by UG.
18 (other comment)
To be addressed by UG.
19 (other comment)
We should prevent users from adding appointments with datetime past the current datetime.
20 (other comment)
Is this a good approach?
21 (other comment)
Sometimes a receptionist may forget to add an appointment, and he/she may need to add appointments past the current date.
@plosslaw
(4 comments)1 (commented on others PR)
To be consistent with other commands such as worker-add
+ "[" + PREFIX_WORKER + "WORKER_INDEX (must be a positive integer)]...\n"
2 (commented on others PR)
try {
model.deleteAssignment(assignmentInModel);
} catch (AssignmentNotFoundException ex) {
throw new CommandException(MESSAGE_NO_ASSIGNMENT_FOUND);
}
3 (commented on others PR)
+ "[" + PREFIX_WORKER + "WORKER_INDEX (must be a positive integer)]...\n"
4 (commented on others PR)
+ "[" + PREFIX_WORKER + "WORKER_INDEX (must be a positive integer)]...\n"
5 (commented on own PR)
Thanks
6 (commented on own PR)
Thanks
7 (commented on own PR)
I think we'll still go with 0 removing the role
8 (commented on own PR)
Agreed, I have updated User Guide
9 (commented on own PR)
I removed this check in favor of just using regex only, the empty string is already rejected by the regex as seen in the RoleRequirementTest
10 (commented on own PR)
@WangZijun97 Yup, I have added the test cases and the regex does reject whitespace cases
11 (commented on own PR)
I have removed the >space> from the error messages, good catch
12 (commented on own PR)
Okay, I'll put calculateWorkerPay()
in model for now. Putting calculateWorkerPay()
in the command class is also fine.
13 (other comment)
Currently, the shift-add and shift-edit commands do not support role requirements that uses spaces (e.g. Fry Cook) #44
14 (other comment)
Okay, I'll work on the test cases for commands related to Shift class
15 (other comment)
It's working fine on my end, the poster hasn't replied yet
16 (other comment)
Throw duplicate roles detected error
17 (other comment)
Max 50 of each role
18 (other comment)
Throws parser exception: Unexpected argument for command ">command name>": >argument passed>
when argument is passed
19 (other comment)
Maybe we can immediately show in the results box that there is an error with the json data file when the McScheduler starts and that the McScheduler will start with empty data
@sc-arecrow
(4 comments)1 (commented on others PR)
looks like a typo, should be macOS
2 (commented on others PR)
This image cannot be used, should be replaced with an image of the person or a placeholder image.
3 (commented on others PR)
small typo
4 (commented on others PR)
What is the plan for this in the future?
5 (commented on own PR)
Changes made, thanks
6 (other comment)
I will get on this issue as soon as I can!
7 (other comment)
Since the session list keeps a list of student records, NOT students, and said student record list is meant to be independent of student list, hence this is in fact intended working behaviour.
8 (other comment)
Closing this for now
9 (other comment)
Already fixed by #166
10 (other comment)
Closed by #213
@sigmund-c
(4 comments)1 (commented on others PR)
Correct me if I'm wrong, but I don't think we're writing the classes as objects (with all lowercase letters)?
Step 1. The user executes `assign s/1 w/1 r/Cashier` to assign the 1st worker the role of a cashier in the 1st shift in
the McScheduler. The `assign` command creates an `Assignment` object, storing the 1st `Shift`, 1st `Worker` and cashier
`Role` objects. The command then checks if there already exists an `Assignment` with the same `Shift` and `Worker` in
the model, as well as the `Unavailability` of the `Worker` to be assigned. If the `Assignment` is unique and the
`Worker` is available, the `Assignment` is added to the list of `Assignments` in the `Model`.
![AssignSequenceDiagram](images/AssignSequenceDiagram.png)
<div markdown="span" class="alert alert-info">:information_source: **Note:** The lifeline for `AssignCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
</div>
Step 2. The user realises the previous command was a mistake and executes `unassign s/1 w/1` to unassign the 1st worker
from the 1st shift in the McScheduler. The `unassign` command creates a dummy `Assignment` object, storing the 1st
`Shift` and 1st `Worker` objects. The command then uses the dummy `Assignment` as an identifier to identify the
`Assignment` to be deleted from the list of `Assignments` in the `Model`.
2 (commented on others PR)
You can also use Worker#isFitForRole() and Worker#isUnavailable() to check for role and leave availabilities
3 (commented on others PR)
Can use CommandTestUtil.NOT_FOUND_ROLE_DESC to be consistent but probably not necessary
4 (commented on others PR)
usually the standardCommand is put first, but doesn't really change much
5 (commented on own PR)
Good catch! I'll fix that as it's used for the initial sample data.
6 (commented on own PR)
Doing it that way will still add the previous assignments before the error assignment to the model. Then the feedback will be a command error rather than a command success, yet it still adds some new assignments. Though if there's a solution to this, do let me know!
7 (commented on own PR)
I think if it returns an error, you shouldnt accept any part of the command to keep it consistent with other commands. Its also to makes sure the user knows that they're doing something wrong, and not accidentally add unwanted assignments.
8 (commented on own PR)
alright, fixed!
9 (other comment)
Duplicate of #21
10 (other comment)
repeat of #71 (i have short term memory)
11 (other comment)
*add to UG also!
12 (other comment)
change the Role error message to the already existing assignment
change message to "This worker is already assigned to.."
13 (other comment)
add to all other parameters too (phone numbers, names, etc)
14 (other comment)
roleRequirement is not updated after worker-delete, update after calling worker-delete
15 (other comment)
duplicate of #132
@richardcom
(4 comments)1 (commented on others PR)
LGTM!
2 (commented on others PR)
LGTM!
3 (commented on others PR)
LGTM!
4 (commented on others PR)
LGTM!
5 (other comment)
Fix #278
6 (other comment)
Fix #186
7 (other comment)
Fix #204 #194
@jetnew
(4 comments)1 (commented on others PR)
Thanks for catching this!
2 (commented on others PR)
Will it be good to consider testing for equality of ListStudentsCommand
s?
3 (commented on others PR)
I believe this is a typo for "throws" instead of "thrwos"?
4 (commented on others PR)
Likewise, a typo for "throws"?
5 (commented on own PR)
Fixed.
6 (commented on own PR)
I think that unallocatedCount can be 0.
7 (commented on own PR)
The interface is for future-proofing if we ever want to have a list of piecharts.
8 (commented on own PR)
Added logging for setting chart data
9 (commented on own PR)
Added assertion for unallocatedCount >= 0
.
10 (commented on own PR)
Changed maded
11 (commented on own PR)
Fixed.
12 (other comment)
As discussed with @mkeoliya, DeallocateCommand
should use the si/
prefix because in a future version, we will add support for allocating a room by student ID, which will then require a prefix. For commands that use only 1 argument, we will add support for usage of prefix to improve self-explanation.
Changes made:
DeallocateCommand
now takes in the student index using the si/
prefix.
13 (other comment)
User-test basic GUI and Storage functionality. The purpose of these screenshots is to show basic user testing prior to requesting review.
GUI - Before Deallocate
GUI - After Deallocate
Storage - Before Deallocate
Storage - After Deallocate
14 (other comment)
User-test basic GUI and Storage functionality. The purpose of these screenshots is to show basic user testing prior to requesting review.
GUI - Before Reallocate
GUI - After Reallocate
Storage - Before Reallocate
Storage - After Reallocate
15 (other comment)
Fixed UI bug where Student and Panel list does not update upon Allocate or Deallocate command, by updating panels using updatePanels()
.
16 (other comment)
Agreed.
17 (other comment)
Hi Mayank, I deleted a student then tried to restore but for some reason am not able to perform restore. Is there something I might have missed?
18 (other comment)
Sorry, where's the puml file?
The .puml file has already previously been edited correctly, just that a new .png was not created from the .puml, therefore the .png update.
19 (other comment)
Thank you for this pull request. The tutorial command is highly beneficial and evidently value-adds to the user experience significantly. I can see how generations of admin users may appreciate this feature and the countless time it saves from the walkthrough, guidance and tutorial of the myth. The entire process was a pleasure to test and use, and I give you my thanks. It works on Windows flawlessly and deserves a full page in the documentation to showcase and highlight its benefits. I believe that years beyond the development of ResiReg, developers, users and maintainers will look back at this sole pull request and thank you for the great efforts and contributions you have made to the development team. Thank you.
Edit: LGTM!
@iamgenechua
(4 comments)1 (commented on others PR)
Good workaround
2 (commented on others PR)
Great effort to change to booking id!
3 (commented on others PR)
Great use of Optionals!
4 (commented on others PR)
Great work with the sorting
5 (commented on own PR)
as what @shermz-lim mentioned earlier during our meeting, he suggested that there shouldn't be a checking of length for the room id. if the user keys in roomId of length of 5, for example, the user will just be greeted with a 'room does not exist'
6 (other comment)
not relevant to the scope of the project any more
7 (other comment)
NA
@duckmoon99
(4 comments)1 (commented on others PR)
Rename to clearOrder for brevity.
2 (commented on others PR)
Might want to wrap this logic into a Model#resetOrder() instead.
3 (commented on others PR)
If called by itself, the assumption that the head of orderHistory is equal to order is no longer true.
4 (commented on others PR)
Should be "a" instead of "an"
5 (other comment)
Fixed AboutUs username.
@tigerting98
(4 comments)1 (commented on others PR)
I think this should be lowercase cos it's not a class level constant, its a instance variable.
2 (commented on others PR)
Can consider adding an instance variable for ID number, based on some static variable that tracks the total number of Order
objects (i.e. totalOrders++
in the constructor for Order
)
3 (commented on others PR)
Furthermore, can consider adding an instance variable to track what Client
this Order
is linked to.
4 (commented on others PR)
Perhaps you can add this created Order
to a global List>Order>
so that Orders
can be listed independently from Client
5 (other comment)
This documentation bug has been fixed already! Thanks for pointing it out
6 (other comment)
Already fixed! Thanks for pointing it out
7 (other comment)
We decided not to allow for searching by time as it is rather unlikely that the user would memorize the exact expected delivery time of an order as opposed to the date or description of an order. It would narrow down the search range too much.
@Jaylenlee
(4 comments)1 (commented on others PR)
Minor difference. (Needed for v1.2.1) not inside header format in other places
2 (commented on others PR)
Do we leave out checking Tags completely?
3 (commented on others PR)
Add whitespace after fullstop?
4 (commented on others PR)
Value restriction should be 0 to 10e9 since amount cannot be negative
5 (other comment)
LGTM
6 (other comment)
LGTM
7 (other comment)
LGTM
8 (other comment)
LGTM
9 (other comment)
LGTM
10 (other comment)
LGTM
11 (other comment)
LGTM
@constancensq
(4 comments)1 (commented on others PR)
Should this be description instead? And maybe it should allowed to be blank according to the isValidDescription method?
2 (commented on others PR)
Maybe can change to assert instead
3 (commented on others PR)
Should be "do not modify Pivot" instead?
4 (commented on others PR)
Should be "Status is invalid"
@KohHanMing
(4 comments)1 (commented on others PR)
Minor spelling error "true"
2 (commented on others PR)
Just a thought, shouldn't the validVisit be created based on the hard coded locationId INDEX_THIRD and personId INDEX_FOURTH? Right now valid visit still references the filtered list. If there's an error in the translation of ids between filtered list and the original lists, the test would still pass as both the AddVisitCommand and validVisit would have made the same error.
3 (commented on others PR)
I see, no issue then!
4 (commented on others PR)
Consider putting this under ModelPredicate as well?
5 (commented on own PR)
Edited, thanks for the catch!
6 (commented on own PR)
Done!
7 (commented on own PR)
Done!
8 (commented on own PR)
Done!
9 (commented on own PR)
Removed
10 (commented on own PR)
Removed
11 (commented on own PR)
Removed
12 (commented on own PR)
Done, added copyright notes
13 (commented on own PR)
Added the criteria for being associated (originally affected). Hope it makes things clearer!
14 (commented on own PR)
Also included criteria and explanation that it is an intermediate method.
15 (commented on own PR)
Thanks for the catch!
16 (commented on own PR)
Done!
17 (commented on own PR)
Renamed!
18 (commented on own PR)
Renamed!
19 (commented on own PR)
Renamed! Hope they all are clearer now.
@limkoonkiat
(4 comments)1 (commented on others PR)
I think there is already another edit?
2 (commented on others PR)
I will merge first
3 (commented on others PR)
Should be with "a" instead of "an"
4 (commented on others PR)
How about "The start time must come before the end time"?
5 (commented on own PR)
oh yes
6 (other comment)
For sample data
7 (other comment)
Duplicate of #110
8 (other comment)
Add in the user guide that name (and maybe other fields) is case sensitive
9 (other comment)
Duplicate of #255
10 (other comment)
Duplicate of #255
11 (other comment)
State in ug that it will take the 2nd specified name (and other fields)
12 (other comment)
Technically start time can be after end time if it is overnight (need specify in ug)
13 (other comment)
We will take it that address can be any value, including $$
14 (other comment)
edit-itinerary-attraction needs to check for timing clash first
15 (other comment)
edit-itinerary-attraction needs to check for timing clash first
16 (other comment)
Might try to implement but might not be essential
17 (other comment)
Might extend to edit attraction too
18 (other comment)
Can change behavior to still load attractions even with invalid itinerary list
19 (other comment)
Who has so much money?
20 (other comment)
Add definitions for index and number too
21 (other comment)
Related to #268
22 (other comment)
Additional images removed in #330
@li-s
(4 comments)1 (commented on others PR)
Does add command parser need prefix_old_tag_name? Isn't the command tag f/filepath t/tagname?
2 (commented on others PR)
Shouldnt personInList be tagInList instead?
3 (commented on others PR)
What is all these lines?
4 (commented on others PR)
Does this exception ever gets thrown? Would the openTags() method have already handled the tag not opened exception?
5 (commented on own PR)
i think tags list sound quite wierd
6 (commented on own PR)
Ok
7 (commented on own PR)
Ok
8 (commented on own PR)
dafaq i didnt touch that line
9 (commented on own PR)
I'm pretty sure some troller gonna ask, might as well put it in, since this only shows when you type help redo right.
10 (other comment)
LGTM!
11 (other comment)
LGTM!
12 (other comment)
Fixed in #39
13 (other comment)
Did not use branch
14 (other comment)
I dont think command should be an address, nvm me and luoyi change it
15 (other comment)
LGTM,
16 (other comment)
LGTM
17 (other comment)
LGTM!
18 (other comment)
OpenCommand should take in "Pepe Julian Onziema" and show "why are you gay meme", while opening https://www.youtube.com/watch?v=knn4iDKAO4s
19 (other comment)
Done
20 (other comment)
Done
21 (other comment)
22 (other comment)
Duplicate
23 (other comment)
Didn't read FAQ
24 (other comment)
Didn't read UG
@EthanTheGoondu
(4 comments)1 (commented on others PR)
I think you meant to exclude one of the spaces, if not you will get a double space after the COMMAND_WORD.
2 (commented on others PR)
You can put the " " with the "week/2" as one String.
3 (commented on others PR)
You can put the " " with the "week/2" as one String.
4 (commented on others PR)
I think you meant to exclude one of the spaces, if not you will get a double space after the COMMAND_WORD.
5 (other comment)
Commits should be in present tense e.g. "Fix styling errors" instead of "Fixed styling errors"
6 (other comment)
Dummy comment
7 (other comment)
Use present tense for commits. E.g. Write "Add Task..." instead of "Added Task..."
8 (other comment)
Looks good to me, do add todo comments if you have any extra work you need done in future iterations regarding these classes.
9 (other comment)
Looks good to me, do add todo comments if you have any extra work you need done in future iterations regarding these classes. Also try to standardise capitalisation for comments (Small unimportant detail but for OCD sake).
10 (other comment)
LGTM, everything seems to be in order.
11 (other comment)
LGTM, no issues that I can find.
12 (other comment)
Testcases yet to have been settled, otherwise the code looks okay!
13 (other comment)
LGTM!
14 (other comment)
LGTM!
15 (other comment)
LGTM!
16 (other comment)
LGTM!
17 (other comment)
LGTM!
18 (other comment)
LGTM, I should be able to solve the issues with String conversion to ModuleId!
19 (other comment)
LGTM!
20 (other comment)
LGTM! Nice to see the abolishment of the boolean chains!
21 (other comment)
LGTM!
22 (other comment)
LGTM!
23 (other comment)
LGTM!
24 (other comment)
LGTM!
25 (other comment)
LGTM! Nice to see the increase in coverage!
26 (other comment)
LGTM!
@tanwayne890
(4 comments)1 (commented on others PR)
Did you accidentally edit modelManager?
2 (commented on others PR)
Maybe can use this for optional description @yuming7144
3 (commented on others PR)
What is this line? I saw it duplicated for a few times
4 (commented on others PR)
Can I double confirm this with our team that using upper case alphabet for second word of the command? 🤔
Someone change my list command to use uppercase alphabet for second word and not using all lower case alphabet.
5 (other comment)
Should you refer to our google docs for the target user and value propositions that we have discussed about? 🤔
6 (other comment)
LGTM!
7 (other comment)
LGTM
8 (other comment)
I didn't add the Ui file individually, instead I try to use the Ui file upload by you after merging the update Readme pr
9 (other comment)
ok done
10 (other comment)
Close this issue? 🤔
11 (other comment)
the conflict is just something I have added to the DG. Not a big deal 😃
12 (other comment)
Do you create the expenseClassDiagram?
13 (other comment)
I think this is solved. Can help double check
14 (other comment)
oh my bad not yet solve. I can take this issue
@jazerler
(4 comments)1 (commented on others PR)
Is this missing out the UID of otherPerson for comparing if both Persons are the same?
2 (commented on others PR)
Any reason for this change from parallel streams?
3 (commented on others PR)
This method seems to be duplicated across the other parsers. Can we move it somewhere else and import it in for the others?
4 (commented on others PR)
May want to move the predicates elsewhere to SLAP harder. This method is quite long at about 90 lines, so shortening the predicate declaration would make it a lot more readable. Maybe a method that constructs a Predicate>Person>
with the given keyword?
5 (commented on own PR)
This is a new method that replaces the old new Title(parseName(name).get())
, since the ParseException from that throws the message constraints from Name rather than Title.
6 (commented on own PR)
The UUID here just uses the one from Alice Pauline in the typical persons addressbook.
It's just a placeholder that doesn't actually get used anywhere.
7 (commented on own PR)
This is the same UUID as used in ParserUtil's parseContacts. Again, it's just a placeholder that's used to make sure the equals method doesn't just break.
8 (commented on own PR)
Added.
9 (other comment)
Should be ready for merging now. There's still some tests that haven't been updated for AddJournalEntryCommand and its parser, but I'll leave that for another PR.
10 (other comment)
https://github.com/jfoenixadmin/JFoenix/issues/728
This is a known bug in JavaFX, and is caused by changing the window scaling from 100% in Windows.
11 (other comment)
This issue is closed by PR #214 with the updating of contacts being reflected in journal entries.
@JoeyToh
(4 comments)1 (commented on others PR)
Why will there be an error message after the tag is created (Line 326-328)? Maybe you can write it this way(?):
MSS
User requests to add a tag.
Projact adds a tag.
Use case ends.
Extensions
2a. The tag already exists.
2a1. Projact shows an error message.
Use case ends.
Is this clearer haha and also must we show in the use case that there are 2 ways to add a tag (like in user guide) or a general one (seen above) is ok?
2 (commented on others PR)
"Address list" sounds a bit funny to me haha maybe contact list or phone book? Or keep it as address book? (but I'm not sure if this will fail the thingy when the script detects it).
I think we need to write in present tense: "The user can assign...."
3 (commented on others PR)
Maybe we can just remove the link to the jar file for now, in case the script detects the link to AB3
4 (commented on others PR)
Same comment as the introduction part. Perhaps address book/contact list/phonebook instead of address list? (Similarly for all other appearances of the word "address list")
5 (commented on own PR)
ok I removed the assertion!
6 (commented on own PR)
Oops sorry my bad, deleted one of them.
7 (other comment)
Failing CI because I've implemented the feature with Tag instead of TagName so when the changing of TagName to Tag is done, I will re-push.
8 (other comment)
Error message is accurate, tester is not using the correct command format in the first place.
@IlyaRin
(4 comments)1 (commented on others PR)
The integration between the deck and the UI may take a longer time than we expect, buffer time between thursday and friday may not be enough. Possibly in version 1.3
2 (commented on others PR)
I think the 'to put it simply' can be removed. Maybe something like " It is a proven quizzing system that increases the user's rate of learning by using spaced repetition. Flashcards are sorted based on the user's ability to answer them.
3 (commented on others PR)
Looks good!
4 (commented on others PR)
Might be better to keep the original if statements. Clearer to read through the code with multiple if statements rather than a long if statement
5 (commented on own PR)
The indentation doesn't change, seems to be that way. In other classes like Entry.java as well
6 (commented on own PR)
Yep changed. Ty 😃
7 (other comment)
List command can be deleted as well
Clear command needs to be updated as well (should it clear decks or clear entries?)
- Fix the edit command such that it displays the edit command (for now, it only edits the deck's entry but doesn't show it)
Looks good to me. Will add edit command, clear command as issues. List command probably is still needed only for entries since users are able to filter
8 (other comment)
Hmm idt its find command filter. I checked the repo at the time when find command works, the code is still the same.
If you add a deck and entries and try to filter, it works. But after closing the program and reopening, it doesnt
9 (other comment)
Issue with filtered list not updating in Deck.java when Deck.setEntries(...) is called in storage.
Resolved
10 (other comment)
Alright nice work!
11 (other comment)
About the test for the command object, you can try refering to the tests for the other commands. They check if the command result given by the command being executed matches with the expected command result
12 (other comment)
Nice lgtm
13 (other comment)
This is the code to merge the quiz with the UI.
Changes:
Created this class called CurrentView.java in model. This switches the view of the program between 4 views (start, entry, quiz and statistics). For example when select command is called, the view will change from start view to entry view. Similarly with the play command. When the view changes, the tabs in the GUI will change accordingly.
Added a start page that is visible to the user when they enter the program (Some styling still needs to be done here)
Added a quiz page, which contains the current question, the total number of questions, the number of answered questions and the number of questions left. This page will update until the quiz has ended. (ALOT of styling still needed)
Addition: Displaying the list of answered questions at the side
Addition: Adding a progress bar
Addition: Score page to be displayed to the user after the quiz before returning to entry tab.
14 (other comment)
Adjust UI in such a way that more rows are created for decks of entries with long names
15 (other comment)
Please fix your own checkstyle. Thank you
16 (other comment)
6.5 is not an issue, all images have this to show to show the user the command to type in
17 (other comment)
Issues 5, 8, 11, 12 & 13 fixed
Added more issues to the list
@Rishi5154
(4 comments)1 (commented on others PR)
A minor thing, but perhaps the handle has to start with @ right?
2 (commented on others PR)
Minor naming convention - Shouldn't this be tags since tagged
is a collection. Other than that everything looks fine so far 👌
3 (commented on others PR)
Want to consider renaming the method name, to sound more like an actionable verb i.e returnsWrongInput
? Just to match the current code quality standards at https://se-education.org/guides/conventions/java/basic.html#naming
4 (commented on others PR)
Should this be throw new ParseException?
Not that its a problem, usually thought we throw exceptions.
5 (commented on own PR)
I think telegram is clear enough. Telegram
represents the class, while telegram
is clear enough to understand as handle.
6 (commented on own PR)
Noted
7 (commented on own PR)
Don't have any more other than the ones in JsonAdaptedPersonTest
8 (other comment)
In terms of usage, what functionality should I test? (Commands to run etc...)
You can just include the addtiional commands as a user guide entry and ill reference from there.
Also would be great if you can rebase this on latest
master
.
Thanks for your efforts!
In terms of usage, what functionality should I test? (Commands to run etc...)
You can just include the addtiional commands as a user guide entry and ill reference from there.
Also would be great if you can rebase this on latest
master
.
Thanks for your efforts!
As of yet, we can run the add-consult
command. Tests have been written to ensure it works. Nonetheless, I faced some issues creating a command to display all the consultations i.e show-consult
command; had some issues getting the UI side to display it (faced NullPointerException at the fillInnerParts
method at MainWindow.java
). So I'll probably need someone who knows JavaFX better than me to work on it.
@minzzelo
(4 comments)1 (commented on others PR)
I thought setFlashcard was already there in the first place? Or you implement one
2 (commented on others PR)
Class Flashcard
3 (commented on others PR)
I think this is supposed to fail, no?
4 (commented on others PR)
Perhaps you could add a hyperlink here to the Review implementation section? Just a suggestion
5 (commented on own PR)
The idea is that any note will be valid, just like the Remark class in tutorial, so that even if you want to clear a note from the Flashcard, you can do it using edit. Is it not supposed to be the case?
6 (other comment)
Also, remember to update the TOC with the effort section since I believe Kimberly will be adding one in #195
@theodoreleebrant
(3 comments)1 (commented on others PR)
Perhaps having triple backtick to conform to the other entries in the table
2 (commented on others PR)
Thanks!
3 (commented on others PR)
Probably would like to stick to javaFX 11.
4 (commented on own PR)
Done
5 (other comment)
@josuaaah please stick to the styleguide.
6 (other comment)
Wrong PR submitted
7 (other comment)
Updated according to coding standard and checkstyle. Updated testcases.
8 (other comment)
#18 and #19 done, will change to no milestone
9 (other comment)
This suggests that we need to open a new issue for codecov to ignore .md files
10 (other comment)
Cancelling PR, making PR from local branch
11 (other comment)
Thanks for reviewing.
12 (other comment)
Resolved with #118.
13 (other comment)
Will implement a limit to the maximum score.
14 (other comment)
Closed with #118
15 (other comment)
Duplicate of #116
16 (other comment)
(To maintainer): Take note of the mentioned issues, as they might contain additional information.
17 (other comment)
Duplicate of #117
18 (other comment)
Duplicate of #117
19 (other comment)
Duplicate of #131
20 (other comment)
Duplicate of #116
21 (other comment)
A session is a class session, e.g. Tutorial 1. It has a date and time. It is neither a task nor a group of student.
22 (other comment)
Duplicate of #132
23 (other comment)
Will update documentation accordingly. Duplicate of #142. Reassigned to Documentation and Low severity. Please read the CS2103 guide for the levels, not just by gut feel.
24 (other comment)
Working as intended, this is a documentation bug as we have not put it in the documentation. Thank you for the bug report.
25 (other comment)
The student attended that session, hence he should still be inside. Working as intended.
26 (other comment)
Duplicate of #117
27 (other comment)
Closed, current code coverage at 73%
28 (other comment)
remove all tags from sample data file
29 (other comment)
Codecov at 79.54%, which rounds to 80%. Closing issue.
30 (other comment)
Changing to usage would be good 😃
@CodyChew
(3 comments)1 (commented on others PR)
Should use the atMainPage()/atCasePage() check here rather than checking the element
2 (commented on others PR)
Should be trimmedTitle here
3 (commented on others PR)
Is there a TYPE_DESC missing over here
4 (other comment)
Case with same title can no longer exist in the program
@Lysire
(3 comments)1 (commented on others PR)
I think it shouldn't be the case that the portion on throwing ParseException should be removed since we need the parser to throw an exception if parsing fails. For the invocation of ParseException, I think just testing using assertParseFailure
and assertParseSuccess
would be sufficient.
2 (commented on others PR)
Thanks for catching this mistake and remedying it!
3 (commented on others PR)
I don't think the purpose of the application is quite right as the application is supposed to be used to manage a residential college and not teach Software Engineering principles, which is the purpose of AB3. I think that there might have been an oversight regarding this.
4 (commented on own PR)
Resolved. I've replaced every instance of "residence regulation" with "ResiReg".
5 (commented on own PR)
Just a small edit, it was to group the initalization of the history related fields together.
6 (commented on own PR)
Resolved. Thanks for pointing this out. I've extracted the above code fragment into a method called getCommandResultString()
in CommandHistory
to adhere to SLAP. I've also added a test for this method.
7 (commented on own PR)
Resolved. Again, I've extracted the above code fragment into a private method called getExpectedResultString() to adhere to SLAP.
8 (commented on own PR)
Resolved.
9 (commented on own PR)
Thanks for pointing this out, but I don't think not defining the objects inside CommandTestUtils
will cause inconsistency, since such testing is done by classes under the Model package. That said, I've used the code fragment annotated with @BeforeEach
to remove duplicate initialization statements.
10 (commented on own PR)
In line with what has been mentioned above, I've placed the constants in a TypicalPositions
file.
11 (commented on own PR)
Thanks so much for the review! Yeah I'm planning to fill in line 62 in the near future (actually after we've reviewed team F09-1). Also, thanks for the suggestion regarding the link.
12 (other comment)
I think creating new commands will add unnecessary complexity to the system. It will take a lot of effort to set up even if we only provide for a small number of commands in the compound command. Even then, it will not provide much value since it will not take a lot of time to type a small number of commands, especially if aliasing is done well.
13 (other comment)
Closed by #125
14 (other comment)
I don't think the error message is incorrect, as the second floor number is parsed to be "12 t.CN" due to how the parsing is implemented. In this regard, the error message correctly states that "12 t.CN" is not a valid input.
15 (other comment)
Yeah, this can be closed. But no sweat, I'll close it.
16 (other comment)
@JingYenLoh requesting your review to ensure that my refactoring adheres to the principles listed above.
17 (other comment)
As a side note, I realize that the package definition for EditRoomCommandParser
was not quite right so I made sure to fix this, along with a few minor errors related to this erroneous package definition (e.g. import statements in CommandWordEnum
).
18 (other comment)
Update:
Add class diagram for undo/redo
Add activity diagram for undo
command
Remove mentions of Person
in UG and DG.
19 (other comment)
Update: To further resemble the output provided by the bash history command, I've made changes to the behaviour of the history
command to only add nonempty commands (that is simply pressing >kbd>enter>/kbd> will not be reflected in the history). I've updated the UG and DG to reflect these changes.
With regard to the UG and DG updates, I've added "state" in front of "history" for the undo/redo implementation section to clearly demarcate that the state history is recorded in the case of undo/redo.
20 (other comment)
Thanks for noticing this and updating the diagram to address this bug!
21 (other comment)
Yup, as with what Jing Yen said, my diagram is fine. Also thanks for this PR!
22 (other comment)
Updated my PPP based on suggestions given; also took the liberty to make some visual issues related to the use of markdown formatting instead of HTML tags in the UG which causes the formatting to not be as intended.
@Hazel1603
(3 comments)1 (commented on others PR)
Just want to double check, the checking of the length of the roomId is done in the execute which is not yet implemented right?
2 (commented on others PR)
I think merge wrongly...
3 (commented on others PR)
You are not Gene
4 (other comment)
PR Merged.
@geoboom
(3 comments)1 (commented on others PR)
Hmm indentation looks a bit off - not sure if it's just GitHub.
Did you CMD/CTRL+ALT+L
in Intellij Idea to autoformat?
2 (commented on others PR)
Could we just do this here?
return other == this // short circuit if same object
|| (other instanceof Deck // instanceof handles nulls
&& getDeckName().equals(((Deck) other).getDeckName())); // state check
3 (commented on others PR)
gotcha
4 (other comment)
lgtm
5 (other comment)
lgtm
6 (other comment)
Yo! Regarding this:
But when you use the old select command, ModelManager gets told to operate on the selected deck and stops operating on the stub deck
Remember when I said the UI is tied to the stub decks UniqueEntryList field? This means that even though you are updating the selected decks list, nothing changes in the UI because nothing changes in the stub's UniqueEntryList
Could you please provide steps to reproduce the issue? What I did are as follow:
I resolved the concurrent modification issue caused by replaceEntryList()
in ModelManager.java
by changing the method body to:
public void replaceEntryList() {
observedDeck.setEntries(getCurrentDeck().getEntries());
}
I don't think removing all entries in observedDeck.entries
is necessary since observedDeck.setEntries(...)
will directly replace the old entries
with new entries
. Java garbage collector will handle the rest.
Next, I launched the program and issued the following command:
add w/test_word t/test_translate
and expected to see no update to the UI. However, I saw my new entry appear beneath all the stub entries.
I re-launched the program and tested these commands:
select 1
add w/test_word t/test_translate
and saw my new entry appear beneath all the stub entries too.
EDIT: fix stupid indent kena copied over from idea
7 (other comment)
Steps to reproduce:
Perform the following in order:
New deck
Add entry <word -> translation>
Close the program
Reopen
Select deck
Find entry
Expected:
Actual:
Possible reasons:
8 (other comment)
Unfortunately I can't load the saved stuff in the json file so can't debug this atm >>
9 (other comment)
nvm I'm retarded I forgot to pull from upstream master
10 (other comment)
Btw for stuff like this:
### <a name="model-component"></a> 3.5 Model component
no need to write the html anchor tag (<a ...>...</a>
) just the markdown ###
will do.
11 (other comment)
Weird... CI not passing even after I resolved the issues with not catching PhaseInvalidException
. Will fix after I finish data analytics features and stuff.
12 (other comment)
Update validation:
Writeup
Picture (not sure if my component is too trivial for a picture but I'll check again after doing the stats part)
Update statistics/data analytics:
Writeup
Picture
13 (other comment)
App-based statistics:
Statistics and StatisticsManager classes for app-based statistics (average time spent online, login/logout events w/ timestamps)
Persist Statistics to file (v1.3.2)
As for deck/quiz based statistics I plan to add a few classes:
QuestionAttempt {
correctAnswer,
yourAnswer,
score
}
QuizAttempt {
duration,
takenAt,
questionAttempts[QuestionAttempt]
}
And for the Deck
class itself, I will enhance it by adding a List<QuizPerformance>
to which QuizPerformance
objects will be pushed after user submits quiz. This will be persisted to disk together with the Deck.
Overall statistics like averages can be computed when rendering takes place. I intend to do this by building a DeckComparator
class. If performance becomes an issue, we can also compute the statistics after every quiz submission via:
average = (average * (n-1) + newScore) / n;
Where n
is the number of quiz attempts.
That's all from me for now. Going to wrap this up by Friday night so I can spend Saturday writing documentation.
14 (other comment)
@geoboom will fix
15 (other comment)
@geoboom will fix. UG issue.
16 (other comment)
@geoboom will fix by making the dates appear in a more human readable format.
17 (other comment)
Resolved. When click statistics panel it will default to show statistics over all decks rather than the most recently selected deck. 😃
18 (other comment)
resolved 2. Chapter 6, 3, select a deck in chapter 5.2 jump links not working
19 (other comment)
oh fuck yes finally CI passes
@justweihong
(3 comments)1 (commented on others PR)
Perhaps can change this to a switch clause? Also instead of the firstChar maybe use Class.TYPE?
so like switch (TYPE):
case Task.TYPE:
case Lesson.TYPE:
...........
case Module.TYPE:
...........
case Contact.TYPE:
....
2 (commented on others PR)
Maybe can mention that the task is specified by index?
3 (commented on others PR)
Replace AddressBook with TrackIT@NUS?
4 (other comment)
Yes, I realised it too but I forgot to raise it up during yesterday's meeting! Will send Simon another PR.
5 (other comment)
Attached above is the updated methods required.
Main changes include methods to fit the indexing of lessons and tasks for the upcoming tab.
6 (other comment)
please review my #266 PR. If it's good then we can close this issue.
@nuovonatura
(3 comments)1 (commented on others PR)
Isn't this the format for address? Should it be adapted to title format?
2 (commented on others PR)
I think the filter method is no longer need since all UI related code will work on the unmodifiable observable list instead of the calendar object. Can delete.
3 (commented on others PR)
I think this should be separated from the add task method. Because this way, deadlines will be added calendar as well I think.
4 (other comment)
Thanks prof. We have changed it.
5 (other comment)
Please refer to and update on PR #132 for further development.
6 (other comment)
Code copied and merged into addSubclassForTask. Refer to #197
7 (other comment)
Not yet. You can do it if you want. If not I'll do tmr.
@YangYue128-helen
(3 comments)1 (commented on others PR)
Shall we consider the situation when a nurse wants to view the whole appointment list (without a date specified)?
2 (commented on others PR)
Beautiful assertion!
3 (commented on others PR)
A little grammar issue in documentation. Should be "an EditAppointmentDescriptor" instead of "a".
4 (commented on own PR)
Since I want it returns true when there is no overlapping. I think this name is somehow acceptable.
5 (commented on own PR)
noted
6 (commented on own PR)
I changed the startAtSameTime method already. Check whether it looks good to you now.
7 (commented on own PR)
I've checked with Jin Hao. The input of done command follows d/.. t/.. Later we can update the UG.
@jordanyoong
(3 comments)1 (commented on others PR)
Need the extra line space here
2 (commented on others PR)
data folder
3 (commented on others PR)
data folder
4 (commented on own PR)
Yup will add once they're implemented! Some are already inside but commented out
5 (commented on own PR)
Roger
6 (commented on own PR)
haha actl i put under notes, but the doc was under warning but ok i'll change it back
@seowalex
(3 comments)1 (commented on others PR)
Wouldn't this cause the logic and ui to not work?
2 (commented on others PR)
Why is there an empty class?
3 (commented on others PR)
The editType
field and accessor seems to be shared by all 3 class, maybe consider putting it in the base class?
4 (commented on own PR)
I think the fn
signature should be BiFunction>? super T, ? super U, Pair>? extends T1, ? extends U1>>
, but I could be wrong here.
5 (commented on own PR)
Why the different names?
6 (commented on own PR)
What's wrong with Arrays.stream(this.xs).skip(this.begin()).limit(this.size())
?
7 (commented on own PR)
Missing braces.
8 (commented on own PR)
Shouldn't you assert this at the start?
9 (commented on own PR)
I think this modifies the argument, which seems undesirable.
10 (commented on own PR)
Well it's possible, but at least in Ingredient
s, the expiry date might not exist, and I think String.format
makes it messier to create a string for that. Might be wrong though.
11 (commented on own PR)
Removed.
12 (commented on own PR)
Was lazy, will do.
13 (commented on own PR)
Just OCD don't mind me.
14 (other comment)
LGTM 👍
15 (other comment)
Other than that it looks ok, though there seems to be a bunch of repeated code which I suspect can be extracted, but we can leave that to 1.3.
16 (other comment)
Looks good! We may have to look into where we're using Optional
s and where we're not, because the usage seems inconsistent, which might be hard to reason about, but that can wait till 1.3.
17 (other comment)
We should probably have some sort of selection of the tabs to indicated which tab is selected, but otherwise good job!
18 (other comment)
too many changes i lazy see all
is there a reason why you dropped the constructor taking
Name
fromRecipe
andIngredient
?
might as well just remove it (it=
class Name
) right? unless you have other plans for it
Well like you said, it seems mildly infuriating to have to do new Name(name)
every time you want to create a new instance of anything that uses Name
. It's still useful to do regex validation though, unless we want to do it directly on the model itself.
19 (other comment)
Ready to merge!
20 (other comment)
Still missing tests, but functionality should all be there.
21 (other comment)
TIL ok will change.
22 (other comment)
Looks good, merging.
23 (other comment)
LGTM 👍
24 (other comment)
I'm current using a event listener in DisplayController
to switch views based on whether recipes are add/edited/deleted, so we probably shouldn't do this.
25 (other comment)
LGTM once rebased 👍
26 (other comment)
LGTM once rebased 👍
27 (other comment)
While I don't think we want to put a hard limit on quantities, we should probably make it so that overflows don't cause layout issues.
28 (other comment)
Related to #240.
29 (other comment)
Related to #241.
30 (other comment)
Will be fixed by #204.
31 (other comment)
See #243.
32 (other comment)
Duplicate of #212
33 (other comment)
Duplicate of #238
34 (other comment)
Duplicate of #242
35 (other comment)
Ah yes I forgot I'll merge this first draft first.
@chrisgzf
(3 comments)1 (commented on others PR)
I think this should be our group's TP repo instead of your fork
2 (commented on others PR)
HALLO POLIS?
3 (commented on others PR)
Very detailed tests! Great job! 😇
4 (commented on own PR)
Good point! Seems like that was from AB3, but I'll fix it either way.
5 (commented on own PR)
6 (other comment)
Closing because this is extremely involved and can make our codebase very confusing. The word "Person" is all over the place, with multiple classes all around. Not a worthy endeavor.
modified: docs/DeveloperGuide.md
modified: docs/tutorials/RemovingFields.md
modified: docs/tutorials/TracingCode.md
modified: src/main/java/seedu/address/commons/core/Messages.java
modified: src/main/java/seedu/address/logic/Logic.java
modified: src/main/java/seedu/address/logic/commands/FindCommand.java
modified: src/main/java/seedu/address/logic/commands/ListCommand.java
modified: src/main/java/seedu/address/model/ReadOnlyAddressBook.java
modified: src/main/java/seedu/address/model/person/Person.java
modified: src/main/java/seedu/address/model/person/UniquePersonList.java
modified: src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java
modified: src/main/java/seedu/address/storage/JsonSerializableAddressBook.java
modified: src/main/java/seedu/address/ui/PersonListPanel.java
modified: src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json
modified: src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json
modified: src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json
modified: src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json
modified: src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json
modified: src/test/java/seedu/address/logic/commands/AddCommandTest.java
modified: src/test/java/seedu/address/testutil/TypicalPersons.java
7 (other comment)
CI failing because I haven't fixed tests yet. Will fix later.
8 (other comment)
This supersedes #9, closing #9 and reassigning this to @sun-yitao
tldr: in #73, attendance data field is added to Person and saved with Person, when serialised into the json file. right now, you need to implement the attend
command (and possibly the unattend
command) on our app so that the Person is updated with new attendances
9 (other comment)
Closing as #71 supersedes this
10 (other comment)
This supersedes #7, closing #7 and reassigning this to @rnmy
tldr: in #73, attendance data field is added to Person and saved with Person, when serialised into the json file. right now, you need to implement the:
Something like:
| Name | 15/10 | 22/10|
| - | - | - |
| Chris | 🚫 | ✅ |
| Rach | ✅ | ✅ |
showatt
command which navigates to that tab (the UG showatt
command currently is for showing a specific date's attendance, maybe we can change that to simply navigating to the attendance page/tab instead, idk)
11 (other comment)
Superseded by #72
12 (other comment)
Skipping code review as this is urgent. Merging.
13 (other comment)
To test this out, merge this PR by assigning the label automerge
14 (other comment)
I've reassigned this to v1.4, I think we can just keep it open first. Merge nearer to end of v1.4
15 (other comment)
Fixed in #103
16 (other comment)
This is an edge case where a TA teaches multiple classes on the same day, and has >= 1 student who attends multiple classes taught by that TA. Not a use case that our app will support, unfortunately. Closing.
17 (other comment)
Fixed in https://github.com/AY2021S1-CS2103T-F11-1/tp/pull/152
@Licheng-Wu
(3 comments)1 (commented on others PR)
Need to set updateFilteredExerciseList to false here as well?
2 (commented on others PR)
Hi have to edit your Intellij settings to prevent star imports
3 (commented on others PR)
Documentation needs to be modified, currently is referring to Exercise
@wayne987
(3 comments)1 (commented on others PR)
i think the person here is not the same person as the one in the model
2 (commented on others PR)
will it be better if we overload the constructor instead?
3 (commented on others PR)
but other than that the rest looks good
4 (commented on own PR)
OHHHHH LOL i didnt realise HAHAHA okok!
5 (other comment)
I think cos the edit create a new day object without copying over the claroieManager field
6 (other comment)
no bug
7 (other comment)
ug bug forget to edit modify to change
8 (other comment)
i forgot update the ug command for edit calorie from modify to change
9 (other comment)
but some people can have the same name tho, and we have the id to uniquely identify someone
10 (other comment)
but they might not be intended to add it to the current date, maybe add command prefix for date can be optional
if date is not present add the current date instead
@zeranium97
(3 comments)1 (commented on others PR)
i think its the wrong one
2 (commented on others PR)
You cannot find quantity and max quantity
3 (commented on others PR)
Do you think we should mention in the pointers that time needs to be in minutes?
4 (commented on own PR)
My bad, Thanks for pointing it out hahah
5 (commented on own PR)
Makes sense, will update it
6 (commented on own PR)
is it you want to remove the underline? currently does not seem to have everything underlined
7 (commented on own PR)
good catch. my bad on this
8 (commented on own PR)
Alright, will make changes. Since edit error message is also in this format, i will make it likewise with the |
9 (commented on own PR)
hmmm, now to think of it,i think it should be omitted
10 (other comment)
LGTM
11 (other comment)
LGTM
12 (other comment)
@halcon-blanco my bad, I was doing it on a branch initially but accidentally merge to master when I wanted to transfer my work to be done on another computer. Will be more careful next time
13 (other comment)
@Wincenttjoi @halcon-blanco I have resolved the conflict, please check, not sure if I did it the right way
14 (other comment)
I can help @wengfaing with fixing the bugs, he can do the unit tests 👍
15 (other comment)
@Wincenttjoi Nope, those command stated in #105
no prefix in command
values other than numbers inside quantity field
16 (other comment)
@Wincenttjoi Alrights, thanks
17 (other comment)
Is there any other exceptions I might have missed out for this command?
18 (other comment)
Yup I have checked, all good
19 (other comment)
sounds good 👍
20 (other comment)
I will be adding it into this later tonight
21 (other comment)
Alrights, Thanks @Wincenttjoi
22 (other comment)
@xnoobftw my bad for overlooking the interfaces, I have edited the diagrams and added my find implementation
23 (other comment)
There's a couple of errors in the diagram! Check out the ss i tagged
Does inventoryModelManager has Item? Not sure about this, or is it referring to the
FilteredList>Item> filtered Items
?
Same goes for deliveryModelManager
Yes it is referring to the filteredlist>Items>
24 (other comment)
@Wincenttjoi my bad, was waiting a while seeing if the other had any comment, LGTM for real now 👍
25 (other comment)
Done, changes made
26 (other comment)
hows the uml diagram on ur side?
It looks like this on my side even after ur latest commit
The class diagram should be blue, looks fine on my side tho
27 (other comment)
LGTM 👍
@daongochieu2810
(3 comments)1 (commented on others PR)
Instead of passing many booleans, you can just pass in a string e.g if its to show recipes "show recipes" then do a switch statement to set the attribute to true, every other boolean will be default false
2 (commented on others PR)
line 57 -> 69
'''//imagePath = AddRecipeCommandParser.class.getResource("/images").getPath() + "/" + filename;
imagePath = DIRECTORY_NAME + filename;
//imagePath = getPathsFromResourceJAR("data") + "/" + filename;
File directory = new File(DIRECTORY_NAME);
if (! directory.exists()){
directory.mkdir();
// If you require it to make the entire directory path including parents,
// use directory.mkdirs(); here instead.
}
FileOutputStream fos = new FileOutputStream(imagePath);
URL jarLocation = this.getClass().getProtectionDomain().getCodeSource().getLocation();
URL data = new URL(jarLocation, "data/" + filename);
imagePath = data.toURI().getPath();
fos.write(response);
fos.close();
//File file = FileHelp.from("file:///" + imagePath, filename);
//imagePath = file.getPath();
imagePath = "file://" + imagePath;'''
3 (commented on others PR)
DIRECTORY_NAME
is "data/", you can declare it as static
@PhongTran98
(3 comments)1 (commented on others PR)
Should we fix the Glossary part now? Since this part defines different terms in the Guide and we don't know what in there yet.
2 (commented on others PR)
Alright I see.
3 (commented on others PR)
Small typo here.
4 (commented on own PR)
Yes, I have added a step-by-step example.
@dearvae
(3 comments)1 (commented on others PR)
i don't think you suppose to change this address here
2 (commented on others PR)
line 12, the prefix for type is "type:"
3 (commented on others PR)
I feel the original code is correct?
4 (commented on own PR)
okie will change
5 (commented on own PR)
noted
6 (commented on own PR)
oh i will update this
7 (commented on own PR)
if it is empty the parser will return a exception with error message, it won't be turned into a DoneCommand.
8 (commented on own PR)
but your concern make sense! i will add requireNonNull(targetIndexes);
9 (other comment)
LGTM
@theyifan
(3 comments)1 (commented on others PR)
here can change to hairstylex too
2 (commented on others PR)
the json can be changed to hairstylex.json
3 (commented on others PR)
here too!
4 (other comment)
LGTM.
5 (other comment)
LGTM.
6 (other comment)
LGTM!
7 (other comment)
LGTM!
8 (other comment)
LGTM!
9 (other comment)
LGTM!
10 (other comment)
LGTM!
11 (other comment)
LGTM!
12 (other comment)
LGTM!
13 (other comment)
LGTM!
14 (other comment)
LGTM!
15 (other comment)
LGTM!
16 (other comment)
LGTM!
@joshruien
(3 comments)1 (commented on others PR)
yes i agree with Jon, this way the user will not be confused.
2 (commented on others PR)
Extra println statement?
3 (commented on others PR)
This too
4 (commented on own PR)
I'm not very sure about this either, I just added a getter and setter for isQuiz and made it a private static boolean.
5 (commented on own PR)
nice catch!
6 (commented on own PR)
nice catch!
@ya0-yuan
(3 comments)1 (commented on others PR)
same for this class line 24
2 (commented on others PR)
same here in line 24
3 (commented on others PR)
i realised that the string will still overflow when it hits the maximum number of characters and when the scroll bar appears, can you help change the left and right padding to 5 instead?
4 (other comment)
LGTM
5 (other comment)
LGTM
6 (other comment)
LGTM
7 (other comment)
LGTM
8 (other comment)
LGTM
9 (other comment)
LGTM
10 (other comment)
LGTM
11 (other comment)
LGTM!
12 (other comment)
LGTM!
13 (other comment)
LGTM!
14 (other comment)
LGTM!
15 (other comment)
LGTM!
16 (other comment)
LGTM!
17 (other comment)
Fixes #176
18 (other comment)
LGTM
19 (other comment)
LGTM
20 (other comment)
LGTM
21 (other comment)
LGTM👍
22 (other comment)
LGTM
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
LGTM!
@divakarmal
(3 comments)1 (commented on others PR)
Good rigorous testing, cannot think of any missing cases
2 (commented on others PR)
This is just to create sample records for testing?
3 (commented on others PR)
Good testing!
4 (commented on own PR)
Changes here will need to be edited later when we adjust layout of patient profile page
5 (other comment)
Hard to implement by v1.4 without changing a lot of the implementation.
6 (other comment)
Add in UG : where exactly to find the file
7 (other comment)
Update UG accordingly
8 (other comment)
Same issue reported #186
9 (other comment)
Update UG
10 (other comment)
Same as #183
11 (other comment)
Same as #179
12 (other comment)
The current exact weight/height can be seen in personal details, the graphs serve as a purpose to see the trend, which can be seen clearly in the chart.
@petrickjerico
(3 comments)1 (commented on others PR)
Would be good if we can make all 5 emails in the same format, but that's very minor. Just a thought!
2 (commented on others PR)
You would make a good one, TBH!
3 (commented on others PR)
Noticed the O(n^2) time complexity here! Can optimize in future iterations, but OK otherwise since trivial.
4 (commented on own PR)
Got it, thanks!
@chloelee767
(2 comments)1 (commented on others PR)
Not sure if you're planning to fill this up later, but the link on line 62 (the "1") doesn't link to anything. I think you can consider making a link to your PED repo for this aspect.
Otherwise the rest of the PPP looks good!
2 (commented on others PR)
Minor nitpick, but the closing bracket at the end of this line is missing. I'll let you decide whether you'd rather fix this now or in the final version.
Otherwise, LGTM!
3 (commented on own PR)
Alright changed it, thanks for the catch
4 (commented on own PR)
Alright changed it, thanks for the catch
5 (commented on own PR)
Yup, changed it
6 (commented on own PR)
What can I say, IntelliJ suggested it 🤷♀
7 (commented on own PR)
Oh that's a good suggestion, will do!
8 (other comment)
Duplicate of #9
9 (other comment)
LGTM, but can you rebase on master before I merge?
Alright done!
10 (other comment)
LGTM!
11 (other comment)
Closed by #101
12 (other comment)
Oh that's a good suggestion, let me add that in!
13 (other comment)
I think this is referring to the same issue as #157.
14 (other comment)
There's also a lingering reference to addressbook on line 49, which I believe can be updated to point at our repo. I briefly looked at the diagrams and it seems right, but I'll leave the details to Jet and Kevin.
Thanks for the catch, misread that line.
@davidsqf
(2 comments)1 (commented on others PR)
LGTM
2 (commented on others PR)
thanks for deleting this redundant use case!
3 (other comment)
nicely solved the GUI size issue, well done!
4 (other comment)
This PR updates user stories and adds user cases for report problem and view problems.
5 (other comment)
This PR fixes a major bug:
When reporting a problem, if the problem is duplicate with existing problems, it is expected to be rejected. This PR fixed a bug that caused the duplicate problem undetected.
This PR also adds an exception and slightly improves defensiveness.
6 (other comment)
This PR adds rationale for rejecting duplicate problem and it also adds minor improvements on other parts
7 (other comment)
Thank you for pointing this out! We have added the corresponding content in UG.
8 (other comment)
Thanks for pointing it out! We will double-check the jar file name in v1.4!
9 (other comment)
This PR adds test code for AddProblemCommand and ViewProblemCommand.
@MorningLit
(2 comments)1 (commented on others PR)
Checking move to AddCommand.execute() ?
2 (commented on others PR)
Messages.class or ParserUtil.class?
3 (other comment)
LGTM! Great work Kendrew!
@vigneshbhuvan-nus
(2 comments)1 (commented on others PR)
I think maybe we could provide written examples of what kind of different decks users can have, to help them understand better
For e.g.
Spanish
Japanese
OR
Spanish Animals
Spanish Food
2 (commented on others PR)
Possibly can include
3 (other comment)
Task completed by me
4 (other comment)
Alright thanks, will finish up with the storage and StatisticsManager
5 (other comment)
Looks good. Can merge
@Nahoyhp
(2 comments)1 (commented on others PR)
Where is this used?
2 (commented on others PR)
Better to extract this and add it to storage
3 (commented on own PR)
Fixed.
4 (commented on own PR)
Fixed
5 (commented on own PR)
Fixed.
6 (other comment)
This is not my final copy yet. Just want to run the above tests to see where I need to help.
7 (other comment)
The TestDriver is created to ensure that I can read and write from the data.
The reason for the repeats is because it reads all the items in the storage, can't realize that items with same name and date are the same (cuz i am using stubs) and just add items at the end of the list.
The TestDriver also includes reading from past records and add the same set of Exercise at the end.
8 (other comment)
Update code related to display Exercise.
9 (other comment)
No bugs found.
I think good to merge.
10 (other comment)
Can't find any bugs.
Good to go.
11 (other comment)
Completed
12 (other comment)
No bugs found
13 (other comment)
Fixed #2
14 (other comment)
Feel you bro. The amount of checkstyle error.
15 (other comment)
No problem found.
16 (other comment)
Fixes #42
17 (other comment)
Make PR to v1.3 Branch. Closing.
18 (other comment)
No changes compared to #60. Merging.
19 (other comment)
Done in PR #62
20 (other comment)
Completed in #62
21 (other comment)
Fix #48
22 (other comment)
Slight change to the look of the app as well.
23 (other comment)
The cause of the problem is solved in #165.
Should be resolved.
24 (other comment)
Fixes in #165
25 (other comment)
Works fine on Window.
Suspect that it is Mac Problem.
26 (other comment)
Will Fix it tmr
27 (other comment)
Can't replicate on our end.
@tanzhuoyao-nus
(2 comments)1 (commented on others PR)
Is this if block left blank intentionally?
2 (commented on others PR)
Small grammar error here. Should be "it can consist of...".
3 (commented on own PR)
Got it! Will do. Thanks
4 (commented on own PR)
Got it!
5 (commented on own PR)
Got it!
6 (commented on own PR)
I have added additional details in
7 (commented on own PR)
No. I have removed it
8 (other comment)
You have a typos in your filenames:
FIlterSequenceDiagram.puml
FIlterSequenceDiagram.png
This caused your image to not be loaded.
Thanks for pointing it out! I have made the necessary changes.
9 (other comment)
Looks good to me!
@thutahw
(2 comments)1 (commented on others PR)
I think this should be appointment book
2 (commented on others PR)
If you pass in a String
, it should be invalid command format? But i think it's ok here.
3 (other comment)
Fixed
4 (other comment)
addappt command updated.
5 (other comment)
I think it's the error message. It should be "This appointment is already missed".
6 (other comment)
UG specified requirements for the name clearly.
7 (other comment)
Added in UG
8 (other comment)
Added in UG.
@raythx98
(2 comments)1 (commented on others PR)
Is this the intended outcome? I will create a PR to make the appropriate changes
2 (commented on others PR)
Could a clickable link be provided to improve user experience?
3 (other comment)
knn
4 (other comment)
I will go ahead with 1 and close this issue via PR
5 (other comment)
Jiayous amelia! You can do it! 👍
6 (other comment)
No worries @ameliatjy cheers mate!
7 (other comment)
Nicely done! Thank you for the good work!
8 (other comment)
I will add back the tests later when I start writing test cases
9 (other comment)
Suggest
Edit UG
maybe a change c/ (and maybe n/) to a subclass of name that allows apostrophe and other weird stuff?
10 (other comment)
clutch
11 (other comment)
Not a bug, only alphanumerical/spaces in job title. can be included in documentation
12 (other comment)
It was intended for tag names to be alphanumeric (1 word only), this is a documentation bug and will update
13 (other comment)
It's still quite messy but I will change it gradually over the week
14 (other comment)
Mind-blowing enhancement! LGTM
diam
15 (other comment)
Thank you for the hard work!
@BILLXYR
(2 comments)1 (commented on others PR)
shall we follow the same convention to be consistent? verb + action? like show-s?
2 (commented on others PR)
Remember to change the corresponding PREFIX_DATE
3 (commented on own PR)
it go back to the Main feature
4 (other comment)
thanks, bug has been Addressed
5 (other comment)
thanks, bug has been Addressed
6 (other comment)
thanks, bug has been Addressed
7 (other comment)
thanks, bug has been Addressed
8 (other comment)
Thanks, bugs has been addressed
9 (other comment)
Thanks, bugs has been addressed
10 (other comment)
Thanks, bugs has been addressed
11 (other comment)
thanks, bug has been addressed
12 (other comment)
thanks, Bug has been addressed
13 (other comment)
thanks, Bugs has been addressed
14 (other comment)
thanks, bugs has been addressed
15 (other comment)
thanks, bug has been addressed
16 (other comment)
thanks, Bug has been addressed
@jiaqi20
(2 comments)1 (commented on others PR)
Should we include a table of built in image paths, e.g. images/healthy1.jpg together with their respective descriptions, just in case users want to use our sample images?
2 (commented on others PR)
for the last Note, if input invalid url/valid url without internet, Wishful Shrinking will use default image instead.
3 (commented on own PR)
Yes it is haha to save into local but I realized it works without this code so I commented it out first
4 (commented on own PR)
okayy!
5 (commented on own PR)
yesyes hahaha thanks!
6 (commented on own PR)
okay!
7 (commented on own PR)
okay!
8 (commented on own PR)
ok removed!
@sun-yitao
(2 comments)1 (commented on others PR)
Maybe this could be named telegramHandle, a few different stuff being named telegram already
2 (commented on others PR)
Perhaps the line break after the '=' might not be needed
3 (other comment)
Working in current master
4 (other comment)
Will allow TA the flexibility to mark attendance ahead of time and use the unattend command to unmark if necessary
5 (other comment)
Fixed by #160
@LeeEnHao
(2 comments)1 (commented on others PR)
This could be a duplicated method of the getClientNotesAsList
2 (commented on others PR)
There's probably no need to tag tagName with the code formatter since its private anyways
3 (commented on own PR)
Change to a clearer def. Since TBM performs basic contact management/tracking, the use case should be able to handle the scenario when the user inadvertently tries to add a duplicate entry for someone he might already have an entry. (Could be due to previous professional deals, working relations... etc that he forgot.). Duplicate entries would cause the archives to get messy, and so I added the case where TBM prevents/User does not add the duplicate entry.
4 (commented on own PR)
The new business deal might involve some party which the user has encountered before and thus might have an entry in TBM, but forgot. So I wrote the uc in a vague way to put in the duplicate entry uc. @raysonkoh
5 (commented on own PR)
Oh lol ps
6 (commented on own PR)
Good suggestion! It slipped my mind
7 (commented on own PR)
Changed and fixed checkystle!
8 (commented on own PR)
Changed and fixed checkystle!
9 (commented on own PR)
Changed!
10 (commented on own PR)
Yea I using this method as the catch all during the GUI debugging. Actually good idea, I used logger logcenter instead.
11 (commented on own PR)
I have reduced the border radius of the to lessen the contrast between the command box and result display box.
12 (commented on own PR)
This is being called but my formatting is not obvious.
13 (commented on own PR)
Thats weird the preview does not show the change.
14 (commented on own PR)
I think for ModelClassDiagram, we might needa add arrows from addressbook to countrynotesmanager
It will make the diagram look pertty ugly
15 (commented on own PR)
nvm i found a good orientation
16 (commented on own PR)
Ignore this, not sure why Github flags this as an update even thought nothing changed.
17 (commented on own PR)
Oh nice, I keep thinking markdown has no italics.
18 (other comment)
Adding of the view box to the GUI will be done in separate branch in case GUI breaks.
19 (other comment)
Integrity of Country behaviour seems intact. I'll merge now?
20 (other comment)
LGTM, but I'm not sure why some lines of the UserGuide.md were changed?
I removed the line wraps except for those with lie break tags since almost all the other sections in the UG are not line wrapped.
21 (other comment)
Duplicate issue #179 ?
22 (other comment)
Please pull this down and test it locally. Especially on Ubuntu or macOs.
23 (other comment)
I can help you do this since it there's a possibility I may be bringing down the test suite from AB4 if I can resolve the Robot #335.
24 (other comment)
UI overall works as expected, just that the default message with div1 div2 can be seen at certain points of the program, such as when you run the app and type
list
.
Also, the view window doesn't update when you execute more commands, for example if I type
client view 1
thenclient note add ...
, orclient edit ...
, the view part doesn't reflect the changes.
I'll open a new issue for that as it could possibly be a non trivial implementation. Currently, the widget only updates on the being given a view command.
25 (other comment)
Ignore codecov.
26 (other comment)
client clear command fits the bill
@hhdqirui
(2 comments)1 (commented on others PR)
Shouldn't it be "locationId" instead of "location"?
2 (commented on others PR)
Following Siang Ern's comment, referencing the index rather than id is required for this command. Also, "personId" and "locationId" are hiden away from the user. Users by right should not know about the id.
3 (commented on own PR)
Fixed
4 (commented on own PR)
Fixed.
5 (commented on own PR)
More tests added.
6 (commented on own PR)
Test added.
7 (commented on own PR)
Done.
8 (commented on own PR)
Done.
9 (commented on own PR)
Fixed.
10 (commented on own PR)
Done.
11 (commented on own PR)
Fixed.
12 (commented on own PR)
Done. In fact, I think that all methods in ModelMethods class can be moved to InfoHandler class and I have shfited all and refactor the test accordingly.
13 (commented on own PR)
Done.
14 (commented on own PR)
Done.
15 (commented on own PR)
Done.
16 (commented on own PR)
Done.
17 (commented on own PR)
Done.
18 (commented on own PR)
Done.
19 (commented on own PR)
Done.
20 (commented on own PR)
To be consistent with the code for parsing Index from line 42 to 47, I think it is better to still put it in a try catch block to catch an ParseException and throw new ParseException with a new message.
21 (commented on own PR)
The getPredicate() method of FilteredList returns Predicate>? super T> and setPredicate() method of FilteredList accept Predicate>? super T> as argument. If just keep to Predicate>Person> I need to do type casting and need to suppress the warning. So I feel it is safer to change the signature than suppressing the warning.
22 (commented on own PR)
Fixed
23 (commented on own PR)
Fixed.
24 (commented on own PR)
Examples added.
25 (commented on own PR)
Fixed.
26 (commented on own PR)
Fixed.
27 (commented on own PR)
It is a mistake. Fixed.
28 (other comment)
Summary command table in UG is deleted. It can be added back with the correct commands in next iteration.
@ysr25
(2 comments)1 (commented on others PR)
If you don't use don't leave an empty line in between, Use case ends.
will be shown as being on the same line as 3. Bagel...
on the website
2 (commented on others PR)
Similarly, it'll end up as one long line here if you don't use the *
and >br>
.
3 (other comment)
I think you need to swap lines 3 and 4 in RemarkCommandTest.java. 😃
import static org.junit.jupiter.api.Assertions.assertTrue
is the one that has to before the "import static seedu" statements, while import org.junit.jupiter.api.Test
is behind.
@foongsq
(2 comments)1 (commented on others PR)
Perhaps the "Address book" in MESSAGE_SUCCESS should be changed to "Flash notes"?
2 (commented on others PR)
Perhaps the "Address Book" in MESSAGE_EXIT_ACKNOWLEDGEMENT could be changed to "Flash Notes"?
3 (commented on own PR)
Yes, you're right thanks!
@successs404
(2 comments)1 (commented on others PR)
Instead of execute_addScoreOutOfRange_failure(), maybe it should be named as execute_addScoreOutOfRange_throwsCommandException()
2 (commented on others PR)
Tiny naming convention error: throwsCommandException() instead of throwCommandException()
3 (commented on own PR)
this checks whether PREFIX_PATH and PREFIX_GRP are present
4 (commented on own PR)
its also derived from AB3. i added some comment there too
5 (commented on own PR)
i think it can haha
6 (commented on own PR)
yes. it's derived from AB3. i believe it is to support the Constructor method at line 21
7 (commented on own PR)
It is different from equals(). It only checks whether both groups of the same name have at least one other identity field that is the same.
8 (other comment)
LGTM
9 (other comment)
LGTM
@howtoosee
(2 comments)1 (commented on others PR)
different header level for extensions too.
2 (commented on others PR)
use different header level for MSS and Use case? use MD headers instead of bold i think.
3 (other comment)
Closed prematurely. Only Ui mockup added.
4 (other comment)
ReadMe done.
5 (other comment)
UG page updated
6 (other comment)
hi gel, please write more informative user stories!
7 (other comment)
DON'T MERGE THIS!
8 (other comment)
Completed: created JsonAdaptedInventoryRecord and JsonAdaptedFinanceRecord classes
9 (other comment)
Closed
10 (other comment)
Closed
11 (other comment)
Wrong branch....
12 (other comment)
Added:
InventoryStorage
JsonInventoryStorage
JsonSerializableInventory
Adapted:
Storage
StorageManager
Notes:
13 (other comment)
Adapted:
UserPrefs: with file paths to inventory and financeAcc json storage files
MainApp: with new initModelManager
ModelManager: new constructor for inventory and financeAcc
14 (other comment)
Adapted:
LogicManager: method call to save financeAcc and inventory
Model & ModelManager: getter methods for financeAcc and inventory
15 (other comment)
Split issue into saving and loading as separate features.
16 (other comment)
Move issue to v1.2
17 (other comment)
Refactored images directory and removed unused images
18 (other comment)
PR accepted and merged
19 (other comment)
Pull req closed.
20 (other comment)
Link milestoneeeee
21 (other comment)
Closed
22 (other comment)
Closed in favour of #169
23 (other comment)
UG updated.
24 (other comment)
@IronBiscuit Update UG
25 (other comment)
Cannot reproduce...
26 (other comment)
Command changed to switch
to switch between tabs. Todo: update UG
27 (other comment)
您好, 目前此软件只支持英文输入,我们不支持英文之外的语言(例如中文、俄文、等等)。为此感到抱歉、敬请谅解!
28 (other comment)
Update UG to specify the range of values.
29 (other comment)
Added documentation for clear
command
@BreadPeanutButter
(2 comments)1 (commented on others PR)
Hello! I think you missed a '*' at the end here.
2 (commented on others PR)
Good job changing this from a String to a class variable! Good coding practise, I like!
3 (other comment)
Experience has been fixed to 1dp. However, salary still does not display decimals as salary is typically not discussed with cents.
@rnmy
(2 comments)1 (commented on others PR)
INDEX shouldn't be optional right!
2 (commented on others PR)
Same as above
@Whleee
(1 comments)1 (commented on others PR)
Does this mean all the students in TypicalStudents have the same ID?
2 (commented on own PR)
I checked the google docs and it said 1 to 5? hmm can someone confirm
3 (commented on own PR)
sure I just put mine
4 (commented on own PR)
yup done
5 (commented on own PR)
yup done
6 (commented on own PR)
yup added, just the documentation never write, just edited it.
7 (commented on own PR)
cos AddressBook now needs to have a training field, just added it in so the test cases can run
8 (commented on own PR)
hmm I wanted to put AddStudentToTrainingCommand but that would be bit too verbose I think, if others are okay with it ill refactor
9 (commented on own PR)
woops okay
10 (commented on own PR)
oh I forgot to change it back, should be fixed now
11 (other comment)
Perhaps we can specify lexicographic order? "S" is placed before "p" because its ASCII value is smaller
@drake25122000
(1 comments)1 (commented on others PR)
The users are also able to find by tags n remarks right?
2 (commented on own PR)
Okay
3 (other comment)
LGTM!
@youyingfeng
(1 comments)1 (commented on others PR)
bruh star imports are illegal
@gan-jw
(1 comments)1 (commented on others PR)
should this be moved to quizbook instead?
2 (other comment)
oya oya
@ducbinh2611
(1 comments)1 (commented on others PR)
Nice use of stub 👍
2 (commented on own PR)
I will change it to something like this
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append("Title: ")
.append(getTitle() + "\n")
.append(getDescriptionString())
.append(getDateTimeString());
return builder.toString();
}
where getDescriptionString() is:
private StringBuilder getDescriptionString() {
StringBuilder emptyString = new StringBuilder("");
return description.map(desc ->
new StringBuilder("Description: ")
.append(desc.toString() + "\n")).orElse(emptyString);
}
and getDateTimeString() is:
private StringBuilder getDateTimeString() {
StringBuilder emptyString = new StringBuilder("");
return dateTime.map(time ->
new StringBuilder("Time: ")
.append(time.toString() + "\n")).orElse(emptyString);
}
3 (commented on own PR)
I was thinking that technically ""
is also a valid dateTime from the user input or reading from the storage file so it should not throw an exception :?
4 (commented on own PR)
Okay I changed the regex so that it either accepts valid descriptions or ""
The new regex is "^([^\\s].*)?$"
5 (commented on own PR)
Yup I forgot to switch to another branch for this
6 (other comment)
Partially done, move to 1.4 to support 2. and 3.
7 (other comment)
For now, if the command is valid and executed, the command will be auto-cleared.
For invalid command then perhaps it's better to keep the command there so that the user can read the error message and quick-fix their command instead of typing the whole command from the beginning.
@nottiffchan
(1 comments)1 (commented on others PR)
just for better code quality passing in just the observable list to show instead of the entire logic instance
2 (other comment)
Reviewed live by Weihong
3 (other comment)
When switching from a module tab back to upcoming tab, the upcoming tab will only show the tasks and lessons of that particular module and not all modules.
4 (other comment)
@UncleGrandpa925 what do you mean?
@Lingy12
(1 comments)1 (commented on others PR)
I updated the date formater to accept "yyyy-MM-dd HH:mm", could you just modify this in order to be consistent?
2 (commented on own PR)
I updated in my new commit
3 (other comment)
@zhXchD Please review this PR and see whether there is a need to change in Logic. To my observation, the bug only caused by the model part, so now should be fixed
4 (other comment)
Updated. If you think this it's ok to have an update for journal according to addressbook, then it should be able to work.
5 (other comment)
Model has been updated, please refer to the PR #97 which has supported search by title, if we need more search predicate, I can go and implement that.
6 (other comment)
Updated.
7 (other comment)
I have finished the functionality of add alias, but I am considering how to maintain a good design for the system and store the change into json file.
8 (other comment)
@joshualiangxy Can you help to check whether the storage part is consistent with the other part?
@Liu-2001
(1 comments)1 (commented on others PR)
should be exercises
2 (other comment)
Hi Prof Damith, the problem has been solved. The CI badge now works correctly.
3 (other comment)
Tested locally. All storage related tests passed.
For TestDriver.java, if I run it multiple times, the data will be stored repeatedly into testingForExercise.json. Is that the desired outcome or should you first clear the file and then store the exercise book? (not sure about this)
Otherwise LGTM.
4 (other comment)
Saw you commented out some tests, any reasons why?
Those tests are for AB3. The tests throw a lot of incompatible errors because I modified the original classes (AddCommand, AddCommandParser etc.) instead of creating new ones.
5 (other comment)
Tested locally. All tests passed.
Maybe can wait for the meeting to discuss the assertfailure exception class before merging your PR?
6 (other comment)
The code looks good to me.
7 (other comment)
LGTM.
8 (other comment)
Looks nice. Can approve it.
9 (other comment)
Tested locally. All commands work fine.
10 (other comment)
Well done!
@iamjamestan
(1 comments)1 (commented on others PR)
In the md syntax, we should use >div> tags to achieve similar callout instead. Refer to the callout in lines 31 - 47 to see how it was done under Features.
2 (commented on own PR)
Do you mean padding instead of margin?
@yu-ming-chen
(1 comments)1 (commented on others PR)
Do you want to make more typical budgets if not it defeats the purpose of making these budgets stub.
2 (commented on own PR)
Alright will update
@theyellowfellow
(1 comments)1 (commented on others PR)
numbering seems weird here!
@fanminj
(1 comments)1 (commented on others PR)
Perhaps you can import classes individually
2 (other comment)
example has been fixed
@YangJiyu98
(1 comments)1 (commented on others PR)
command is 'scores' or 'score'?
2 (other comment)
Add command to add German words and English
3 (other comment)
Yup, can be used after find command. Not redundant.
4 (other comment)
What is translation if "End quiz" ?
5 (other comment)
Random function from main list instead of current list (not like current list command)
6 (other comment)
Compulsory, default is medium
7 (other comment)
For difficultyTag
8 (other comment)
Rephrase developer guide to emphasize full German phrase must be entered.
9 (other comment)
duplicate of #205
10 (other comment)
Duplicate of #212
11 (other comment)
Duplicate of #208
12 (other comment)
Check for german phrase, case insensitive
13 (other comment)
duplicate of #199
14 (other comment)
duplicate of #199
15 (other comment)
duplicate of #211
16 (other comment)
duplicate of #205
17 (other comment)
duplicate of #199
18 (other comment)
duplicate of #199
19 (other comment)
Put in UG this behavior
20 (other comment)
duplicate of #199
21 (other comment)
duplicate of #203
22 (other comment)
Not applicable to german 1 and german 2
23 (other comment)
thumbs down
24 (other comment)
duplicate of #178
25 (other comment)
duplicate of #203
26 (other comment)
duplicate of #165
27 (other comment)
duplicate of #199
28 (other comment)
Reflect in UG
29 (other comment)
german 1 and german 2 does not consist of hyphens
@seantaysl
(1 comments)1 (commented on others PR)
Perhaps the spacing to start the line should be 4 white spaces instead?
2 (commented on own PR)
Thanks for spotting this. Have rectified it and the rest below.
3 (other comment)
Looks good
4 (other comment)
resolved
5 (other comment)
Updated before
6 (other comment)
Looks good!
7 (other comment)
LGTM
@YuunoKun
(1 comments)1 (commented on others PR)
Should this be in the form of team/githbub_username_in_lower_case.md? i.e. marcustw
2 (commented on own PR)
Not sure about this, the punctuation isn't consistent for other message strings too. I guess we can clean this up after integration.
3 (commented on own PR)
I think I deleted some stuff by accident, will amend!
4 (other comment)
Not allowing the user to add sessions with passed dates is too unforgiving. A tutor might start to use this app halfway through the semester, in that case, he/she will not be able to include any of the previous sessions.
5 (other comment)
This bug does not exist.
6 (other comment)
This has already been achieved.
@KOH-ZHE-HAO
(1 comments)1 (commented on others PR)
Thanks for adjusting the user guide on my behalf 👍
2 (other comment)
Added the compulsory attribute company
and optional attribute companyRole
of Person
.
All test cases have been refactored.
Slight modification to the GUI.
3 (other comment)
Looks good to merge!
4 (other comment)
The new color theme is indeed better! Thanks
5 (other comment)
LGTM
6 (other comment)
I realize the current implementation is not optimal and doesn't work if the interval expands across more than one day (I assume the interval is rather short and we only need to consider meetings on a particular day). A better and more efficient solution is to find out the nearest meeting before and after the toAdd meeting. We only need to check these 3 meetings do not conflict with each other because the meetings are sorted.
Sorry for the mistake and will fix it soon (probably after midnight before the tutorial of v1.3 but before v1.4).
I will specify my assumption in the user guide for now (so it is not buggy under the given constraint) and change it before v1.4.
7 (other comment)
Nice visual guidance to users! LGTM
@duynguyen24501
(1 comments)1 (commented on others PR)
Do you think we should structure it as steps to make it more consistent with other sections?
2 (commented on own PR)
I think we can update later. Right now, I just followed the format of Glossary AddressBook 3 😃
@minhhhnguyen2000
(1 comments)1 (commented on others PR)
@printinghelloworld I just updated schedule feature to now have "do after" feature, The new format is:
schedule INDEX hrs/EXPECTED_HOUR af/AFTER_DATE AFTER_TIME by/BEFORE_DATE BEFORE_TIME
2 (commented on own PR)
Okay updated!
3 (commented on own PR)
OK, I have updated test cases and javadoc comments to match assignment
4 (commented on own PR)
Thanks JiaXin, I have updated
5 (commented on own PR)
Oki, updated 😃
6 (commented on own PR)
Noted! Thanks
7 (commented on own PR)
Yes I was using it for testing, have remove the dummy test.
8 (commented on own PR)
Changed to Final! thanks
9 (commented on own PR)
I was thinking of leaving it as Time so we can decide more on can it be minutes, days. But I have changed it to hours!
10 (commented on own PR)
It just for the uuuu in YearOfEra
11 (commented on own PR)
Oh, the dummy is for testing, the constructor is not
12 (commented on own PR)
I was using it to test, forgot to delete it.
Have updated, thanks
13 (commented on own PR)
Ok noted!
14 (commented on own PR)
Change to undoes 😄
15 (commented on own PR)
Yep, have updated!
16 (other comment)
I think it is good to merge
@nicktohzyu
(1 comments)1 (commented on others PR)
docX
2 (other comment)
closes #90
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
so users don't have to scroll left-right
6 (other comment)
low priority feature and potentially causes bugs
7 (other comment)
closes #128
8 (other comment)
lgtm
9 (other comment)
LGTM
10 (other comment)
LGTM
11 (other comment)
LGTM
12 (other comment)
LGTM
13 (other comment)
emails are allowed to contain multiple periods
14 (other comment)
lgtm
15 (other comment)
lgtm
@yuming7144
(1 comments)1 (commented on others PR)
This will be the displayed message when expense is created/modified. Description is already optional! Thanks for the suggestion though really!
2 (other comment)
Forgot about that. Updated now.
3 (other comment)
I didn't add the Ui file individually, instead I try to use the Ui file upload by you after merging the update Readme pr
Then ![Ui](docs/images/Ui.png)
would be fine! No need to add the .jpg
@bowei-yu
(1 comments)1 (commented on others PR)
Not sure if you are continuing with this test?
2 (commented on own PR)
Noted, will do!
3 (commented on own PR)
Ah ok! I deleted because the UI should already have listed the sample flashcard sets, but i'll add them back
4 (commented on own PR)
Yeah, I made "physics" the default
5 (commented on own PR)
I think it's an extra check to see if the contents in flashcard bank changes even when the error is thrown. So it will return false when the flashcard bank/flashcard set list is modified
6 (commented on own PR)
Perhaps I can make that clearer there
7 (commented on own PR)
Noted!
8 (commented on own PR)
I'm not sure why during this particular test, the index to be deleted is INDEX_SECOND
while it should be INDEX_FIRST
. This could be a testing issue instead of a bug in the source code, yet I can't find any problem when inspecting both the source code and the testing code. I will check through again and get back after!
9 (commented on own PR)
Hey no problem! Each command leads to the next stage of the quiz, like FlipCommand
/ AnswerCommand
would show the answer to the current question and increment the index of flashcards, while CorrectCommand
/ WrongCommand
would show the next question and check if the index has exceeded after the execution of the previous 2 types of commands. So the CorrectCommand
/ WrongCommand
is only run once per flashcard iterated.
The two exceptions will be thrown if the quiz reaches the end of the flashcard set, and the index being kept track of exceeds the number of flashcards.
10 (commented on own PR)
Yeah I agree, we can do that
11 (commented on own PR)
Yup, that is exactly right haha
12 (commented on own PR)
Alright! will take note and update in next commits
13 (commented on own PR)
Yup, will implement the tab freezing in these few days
14 (other comment)
Ok! Thanks for pointing out, I'll use it subsequently
15 (other comment)
Close tutorial PRs
16 (other comment)
Close tutorial PRs
17 (other comment)
Close tutorial PRs
18 (other comment)
Close tutorial PRs
19 (other comment)
Close tutorial PRs
20 (other comment)
I have made the changes discussed, do help to review! Regarding the first test case in DeleteFlashcardCommandTest
, there seems to be a problem with it in the source code. If there are no problems with it when we manually test it in the UI, consider this issue non-existent and an error from my written tests.
21 (other comment)
Overall, the code quality is good. The proposal and the implementation are fantastic. Good job!!
Thanks for review Eddy! Will update with changes accordingly later (after i'm done with the dg diagrams 😂 )
22 (other comment)
I will close this first, if there's any enhancements/bugs reported, create another issue
23 (other comment)
Use the >string>.trim()
method
24 (other comment)
Remove the focus?
25 (other comment)
Need to add one line of code to check
26 (other comment)
Refer to the original AB3 functionality, if this bug report is valid, the same should apply to AB3.
27 (other comment)
Refer to the original AB3 functionality, if this bug report is valid, the same should apply to AB3. Perhaps it would be good to not repeat similar bug reports, thanks!
28 (other comment)
Refer to the original AB3 functionality, if this bug report is valid, the same should apply to AB3. Please refrain from writing duplicate bug reports, thank you
29 (other comment)
Thank you for the bug report, we appreciate it!
30 (other comment)
Thank you for noticing the bug!
31 (other comment)
Thank you for the report, we will handle it 😃
32 (other comment)
Remove the style, prevent from changing
33 (other comment)
Remove focus styles
34 (other comment)
>div style="font-family: comic-sans">Thank you for the report, we will handle it :)>/div>
35 (other comment)
KIV
36 (other comment)
Cannot replicate this issue. Possible to give the steps to replicate?
37 (other comment)
Character limit based on width of space
38 (other comment)
Note: handle exit & help alignment
39 (other comment)
numbered by features: task 1, flashcards 2, quiz 3
40 (other comment)
set wrap text to true for both/character limit for flashcard set name
41 (other comment)
Thank you for the report!
42 (other comment)
After switching tab, ensure that the command box is available for typing (some hotkey perhaps?)
43 (other comment)
Pure UG bug, fixed
44 (other comment)
Duplicate issue with #233 that's fixed
45 (other comment)
Fixed by @chuyiting 👍
46 (other comment)
Closed bc this is for reference only, no intention of merging
@tjwjoe
(1 comments)1 (commented on others PR)
I think this should be 4 states?
2 (other comment)
LGTM
3 (other comment)
Lgtm
4 (other comment)
I think it was used in the old AB3 to go with the FInd command, since the list will disappear when you search for something. If we're planning on implementing Find in the future then it'll come in handy
5 (other comment)
LGTM
6 (other comment)
Duplicate issue.
7 (other comment)
Duplicate issue.
8 (other comment)
Duplicate of #157
9 (other comment)
Fixed together with #211
@IsaacTin
(1 comments)1 (commented on others PR)
Seconded
2 (other comment)
As an organised HR manager, I want to be able to add data of my staff so that I am able to have these data at one place in a neat manner
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
LGTM
6 (other comment)
LGTM
7 (other comment)
LGTM
8 (other comment)
LGTM
9 (other comment)
LGTM
10 (other comment)
LGTM
11 (other comment)
LGTM
12 (other comment)
lgtm
13 (other comment)
lgtm
14 (other comment)
lgtm
15 (other comment)
As a user, I want to be able to add and delete different fields without needing to remember too many complicated commands
16 (other comment)
lgtm
17 (other comment)
lgtm
18 (other comment)
lgtm
19 (other comment)
lgtm
20 (other comment)
lgtm
21 (other comment)
lgtm
22 (other comment)
lgtm
23 (other comment)
lgtm
24 (other comment)
lgtm
25 (other comment)
lgtm
26 (other comment)
lgtm
27 (other comment)
lgtm
28 (other comment)
Dude can he at least tell me what his input was bruh
29 (other comment)
I dont allow duplicate comments anymore
30 (other comment)
lgtm
31 (other comment)
lgtm
32 (other comment)
lgtm
33 (other comment)
lgtm
34 (other comment)
lgtm
35 (other comment)
lgtm
36 (other comment)
lgtm
37 (other comment)
lgtm
@AdithyaNarayan
(1 comments)1 (commented on others PR)
Consider importing only necessary classes instead of the whole package. This will make sure that it passes the checkstyle!
2 (other comment)
LGTM
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
LGTM
6 (other comment)
Closed #93
7 (other comment)
LGTM! Great job doing it at lightning speed⚡
8 (other comment)
LGTM
9 (other comment)
LGTM
10 (other comment)
LGTM
11 (other comment)
Great job on identifying an efficient solution to the schedule recommendation system. It makes sense to resolve conflict that way! LGTM
12 (other comment)
LGTM
13 (other comment)
LGTM. Good job on promptly updating the UG to match changes in codebase.
14 (other comment)
LGTM. Nice work on the OOP and the threads!
15 (other comment)
LGTM
16 (other comment)
We will not be proceeding to add this feature as we have other higher priority features to implement. Thanks for noticing it. We will update in the UG that the latest prefix will be taken!
17 (other comment)
Closed by #170
18 (other comment)
LGTM! Good job on fixing bugs mentioned in PE Dry Run. I see that you have fixed bugs that you have discovered yourself too! Thanks for taking the initiative
@danadi7
(0 comments)1 (other comment)
We will replace Retrieve with Undo.
2 (other comment)
Similar to #73. Will change Retrieve to Undo.
3 (other comment)
Fixed in v1.3.1
4 (other comment)
Same as #72
5 (other comment)
Cannot replicate this issue. Additional details required.
6 (other comment)
Retrieve command will be replaced with an Undo command, which renders this irrelevant.
@Raymond0212
(0 comments)1 (other comment)
Command
AddCommand
AddTodoCommand
AddEventCommand
AddDedalineCommand
2 (other comment)
JUnit test is not refactored yet
3 (other comment)
Modify command parser
4 (other comment)
If it's hard to finish in v1.3 we may move it to v1.4
@XIA-LIYI
(0 comments)1 (other comment)
CI has failed for this PR.
2 (other comment)
@UnicornJin @Zhang-Yunjie FYI, I add isTaskCustomized() inside tasklist for you to check whether it is customized. Also, if you call delete() directly and it is not a customized task, delete() will throw ModelException.
3 (other comment)
The reason is we have duplicate tasks in sample data. So it will start with an empty task list at second time.
4 (other comment)
It is same as issue 169.
5 (other comment)
@Zhang-Yunjie @UnicornJin This should be solve by you guys!
6 (other comment)
@UnicornJin This may be controlled by Parser period?
7 (other comment)
This should be checked before command operation.
So maybe we can set a hasTask check before all of task related command operations, i.e. edit, deadline.
8 (other comment)
It is to check the remark and description. Now the remark are all set as "Nothing here".
My suggestion is to set it as null type and parse it in Ui interface. Then it will not affect find.
9 (other comment)
It is same as issue 196.
10 (other comment)
The reason is because there are no tasks shown.
11 (other comment)
Okay, we will make CI pass in next PR merge.
@lebencwb
(0 comments)1 (commented on own PR)
Yes, this works because Expense
is immutable, and Expense#resetTag
returns a new Expense
object instead of modifying the original object.
2 (other comment)
Doesn't seem to fix #108? Need to add a new exception for edit if no changes are requested.
Sorry, it was an oversight on my part. This PR does not fix #108 - I have updated the linked issues accordingly. Also, I have checked with the release again, and I did not encounter the bug raised. The error messages seem to be working as expected (screenshots appended below).
3 (other comment)
Does this solve #127 ? Was #127 a result of the sample data?
Yes, #127 was due to the incorrect sample data, which did not contain any categories apart from the 'Default' category, but contained expenses tagged with those categories (a behavior that is prohibited in other parts of the code). This PR adds those missing categories in to the sample data.
4 (other comment)
#128 doesn't seem to be solved either - seems more like a UI problem - that the command should remain the command box?
The original design was to alert the user to the fact that the tagged category did not exist yet, without throwing any exceptions. This PR patches the bug in which the message was not showing correctly.
This is the expected behaviour:
Input: add -dExpense with new category -$1234.56 -@12-12-2020 t/abcdef
Output:
5 (other comment)
Will need to fix this part as well too. Instead of
return new CommandResult(String.format(MESSAGE_DEFAULT, expense))
it should bereturn new CommandResult(String.format(MESSAGE_DEFAULT, >STORE AND GET THE ORIGINAL CATEGORY HERE>))
Yes, thank you for catching that! It has been fixed by the changes in this PR.
return new CommandResult(String.format(MESSAGE_DEFAULT, expense))
->
return new CommandResult(String.format(MESSAGE_DEFAULT, toAdd.getTag().tagName))
6 (other comment)
#138 doesn't seem to be addressed by the code changes
It seems to be caused by #136, which is due to the incorrect sample data. (See also: #109)
@youaremysky99
(0 comments)1 (other comment)
@Jillzyt can you help me to review?
2 (other comment)
LGTM
3 (other comment)
#62
4 (other comment)
I will do it
5 (other comment)
DeleleEx tests are there.
@e0316059
(0 comments)1 (other comment)
As a user, I can delete tasks so that I can remove cancelled obligations.
2 (other comment)
As a careless student, I can retrieve my deleted tasks from rubbish bin so that i won't accidentally delete them.
3 (other comment)
As a new user, I can read the help panel so that I am able to get familiar with the app.
4 (other comment)
As a user, I can mark a task as done so that I can take a glance and know which tasks have been finished.
@gloon99
(0 comments)1 (other comment)
Keyboard scrolling of timeline would indeed be a nice feature to have but we will not be supporting this.
@marcus2k
(0 comments)1 (commented on own PR)
Thanks for pointing that out! Tell me if any further changes are needed.
2 (other comment)
LGTM
3 (other comment)
After alias a b
, a
is no longer alias for anything and has nothing to do with b
, which replaces a
as the alias for add
. Subsequently setting a
to be alias for delete
will not affect b
.
Perhaps this could be clarified in the UG.
@maxxyh
4 (other comment)
This PR contains a bug.
Bug fix introduced in PR #154 (Along with test classes)
@UnicornJin
(0 comments)1 (other comment)
Help and Get is planned to finish in future versions
@Caiyi34777
(0 comments)1 (other comment)
Resolves #23 and #43
2 (other comment)
Resolves #46
3 (other comment)
How to resolve conflicts...
4 (other comment)
fix #69
5 (other comment)
fix #69
6 (other comment)
close #103
7 (other comment)
close #107
8 (other comment)
close through #218
9 (other comment)
Have given credit to reuse code.
@Perpetual09
(0 comments)1 (other comment)
LGTM
2 (other comment)
Done
3 (other comment)
LGTM
4 (other comment)
LGTM
@kerkpy
(0 comments)1 (commented on own PR)
We should call it Training, I think there would be no ambiguity what we would be referring to. I left the header comments there as a placeholder, would change it after the creation of a Training class.
Thanks!
2 (commented on own PR)
agreed
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
LGTM!
6 (other comment)
LGTM
@royleochan
(0 comments)1 (other comment)
LGTM 😃
@jflim98
(0 comments)1 (commented on own PR)
Fixed!
2 (other comment)
I will get on this issue as soon as I can!
3 (other comment)
Noted. I will get on in once #18 and #19 are merged.
4 (other comment)
Implemented.
5 (other comment)
Wow! Looks good.
6 (other comment)
Sorry, forgot to link the issue when I PR'd it.
7 (other comment)
Thanks for the catch! We will update this ASAP!
8 (other comment)
Thanks for the catch! We will get on this ASAP.
9 (other comment)
Thanks for the catch! I have noticed this problem before and it seems like an issue on JavaFX's end. Will post in the forum to see if anybody knows how to solve this.
10 (other comment)
Thanks for the catch! This is a dupe of #117 .
11 (other comment)
Thanks for the catch!
12 (other comment)
Thanks for the catch. This is dupe of #155 .
13 (other comment)
There is a command called goto. Please refer to the user guide. The attached screenshot is the subsection for UI. Thanks for the attempt though!
14 (other comment)
This is a feature, as new students added would not be a part of old sessions created. However, this could be reflected in the user guide. Thanks for the catch!
15 (other comment)
Thanks for the catch! We will fix this ASAP!
16 (other comment)
Thanks for the catch! We will update this ASAP.
17 (other comment)
Thanks for the catch! We will get onto this ASAP.
18 (other comment)
Thanks for the catch! We will update the user guide ASAP.
19 (other comment)
We were unable to reproduce this bug on our end. Could you provide us with a list of commands you entered before encountering this bug. Much appreciated!
20 (other comment)
Thanks for the heads up! We will clarify this in the user guide.
21 (other comment)
Thanks for the catch! We will get on this ASAP.
22 (other comment)
Thanks for the catch! We will update the documentation ASAP.
23 (other comment)
This will be implemented in v1.4.
@josuaaah
(0 comments)1 (commented on own PR)
Have replaced image with a placeholder image.
2 (other comment)
I am closing this pull request because I intend to make another pull request containing both tests for MarkCommand and StorageCommand.
3 (other comment)
Duplicate of #10 .
4 (other comment)
Duplicate of #10.
5 (other comment)
Duplicate of #40.
6 (other comment)
Duplicate of #23.
7 (other comment)
Closed pull request as I intend to make another pull request from a branch instead of the master branch.
8 (other comment)
Duplicate of #97.
@Ebolaeater
(0 comments)1 (commented on own PR)
Move to end of the steps
@EkamSinghPandher
(0 comments)1 (other comment)
I will just remove module list clean and we will now use contact list to reset the contacts list
2 (other comment)
The module add command uses the n/prefix for the modulename not m/
3 (other comment)
Fixed In PR's #223 and #267
4 (other comment)
Fixed in #267
@WhiteLio
(0 comments)1 (commented on own PR)
its the next line where I sort with a lambda, ideally if we implement sorting in the future we want to properly use SortedList and Comparators instead
2 (commented on own PR)
aight will do
3 (commented on own PR)
no need to worry about it now haha
4 (commented on own PR)
ooh good catch
5 (commented on own PR)
yup should be less than 1, changed 😃
6 (other comment)
#166
7 (other comment)
#163
8 (other comment)
#163
9 (other comment)
Fixed this in #171, change this again if making comments optional
10 (other comment)
Fixed in #171
11 (other comment)
#163
12 (other comment)
misunderstanding of add vs addex
13 (other comment)
#166
14 (other comment)
#170
15 (other comment)
#173
16 (other comment)
#173 now finds any log that matches ALL keywords
17 (other comment)
#173
18 (other comment)
#173
19 (other comment)
good catch
20 (other comment)
#172
21 (other comment)
might want to add the expected result (all related logs edited/deleted) to the UG so ppl dun report as bug haha
@Christopher-LM
(0 comments)1 (commented on own PR)
Fixed
2 (commented on own PR)
Fixed for all INDEX i could find
@Zhang-Yunjie
(0 comments)1 (other comment)
I encountered some issues with junit...so don't dare to merge for now:'')
2 (other comment)
Solved.
3 (other comment)
filter works for week 12 and 13 on my side???
4 (other comment)
Solved. Allowed for case insensitive find command
5 (other comment)
Solved.
6 (other comment)
Duplicate issue.Solved.
7 (other comment)
Duplicate issue.
8 (other comment)
Duplicate issue.Solved.
9 (other comment)
idk if we should take this suggestion??
10 (other comment)
solved.
11 (other comment)
Solved.
12 (other comment)
I will modify this to be : allow customised ddl to be later if the task is already overdue.
13 (other comment)
Solved.
14 (other comment)
Duplicate. Solved.
15 (other comment)
solved
16 (other comment)
@onglijin Could you help to update the user guide? you may refer to the MESSAGE_USE string for each command class eg FindCommand in the source code which are used by me as the modified command formats in my logic writing
17 (other comment)
solved
18 (other comment)
solved
19 (other comment)
solved
20 (other comment)
solved
21 (other comment)
solved
22 (other comment)
solved
23 (other comment)
solved
24 (other comment)
solved
25 (other comment)
solved
@mehak24k
(0 comments)1 (commented on own PR)
Yep, thanks for pointing that out. 👍 I've changed it.
2 (other comment)
Note: Week 6 individual task, not for merging
3 (other comment)
This PR is just for checks, not for merging.
@cx0810
(0 comments)1 (other comment)
The displayed "listO" looks like "list0" due to the font of the text, and not actually a bug.
2 (other comment)
It is stated in the error message that the parameter for index must be a positive integer.
@onglijin
(0 comments)1 (other comment)
Same issue as #205
2 (other comment)
Similar issue as #180
3 (other comment)
Same issue as #204
4 (other comment)
Same issue as #205
5 (other comment)
Same issue as #172
6 (other comment)
Same issue as #172
7 (other comment)
Same issue as #204
@jialin7878
(0 comments)1 (other comment)
hehe!
2 (other comment)
ooh nice observation! thanks for the constructive feedback!
3 (other comment)
yupp u're right! thanks for pointing it out!
4 (other comment)
thanks so much for the exhaustive descriptions!
@zeying99
(0 comments)1 (other comment)
Great!
@zeling595
(0 comments)1 (other comment)
sorry still working in progress, don't review first
2 (other comment)
can review now
@CalistaIo
(0 comments)1 (other comment)
Milestone v1.1 closed
2 (other comment)
README modified
3 (other comment)
Issue rectified
@Robinho98
(0 comments)1 (commented on own PR)
erm im not sure how to do automatic numbering, maybe its a software?
2 (commented on own PR)
really? if it will be auto generated then can remove lor, or we can leave it in for this draft first
3 (commented on own PR)
ok im changing it in my next pr
4 (commented on own PR)
wait i want the attraction
but it was return this originally
5 (commented on own PR)
ok nvm i got it haha
6 (other comment)
DataConversionException e, Line 85 in MainApp
7 (other comment)
lgtm
8 (other comment)
Can do it as a red coloured box, just like tag
9 (other comment)
Included the 3 fields yuxuan added, it passed the test cases on my side
10 (other comment)
LGTM
11 (other comment)
Close #116
12 (other comment)
Include in UG that adding itinerary duplicate will only fail if ALL of name, sd and ed are the same
13 (other comment)
Add the selected itinerary to the UI as a reminder
14 (other comment)
Edit the message in the app itself
15 (other comment)
Change example in user guide for the add-attraction
16 (other comment)
Change the number in UG
17 (other comment)
wrap around in css?
18 (other comment)
Put time of visit above the name, maybe with a Time of Visit:>Timing>
19 (other comment)
can explain command box and the panels?
20 (other comment)
Add in UG
21 (other comment)
Type a tip in UG that opening hours can be later than closing hour, cos of overnight attractions
22 (other comment)
parse to uppercase
23 (other comment)
u are not supposed to see the logs as a user...
24 (other comment)
Change error msg of the code from integer to number
25 (other comment)
Add a space to the markdown
26 (other comment)
duplicate attraction error message
27 (other comment)
Make main window static, by making its constructor private
28 (other comment)
explain rationale of having full words such as attraction and itinerary in introduction
more natural sounding
29 (other comment)
Create warning in UG
30 (other comment)
idk how to do this yet
31 (other comment)
Closes #266 and #245 and #221
32 (other comment)
Closes #262
33 (other comment)
Closes #249
34 (other comment)
Closes #223
@FizzyAgent
(0 comments)1 (other comment)
Thank for the suggestion, we will be implementing this feature in future updates of the program!
2 (other comment)
Cannot reproduce bug
3 (other comment)
Hi Ethan, the add_finance command does not have the "i" prefix.
4 (other comment)
Bug cannot be reproduced.
5 (other comment)
Hi You Chia, our programme will filter and read the command as list_inventory. This is the intended outcome.
6 (other comment)
Bug cannot be reproduced
7 (other comment)
Zero is accepted as a quantity, so this is the expected outcome.
@Michaeliaaa
(0 comments)1 (other comment)
LGTM!
2 (other comment)
LGTM! Maybe you could add some test cases for this functionality later?
Yes, definitely. I will try to figure how to test peekNext() and peekPrev().
3 (other comment)
LGTM!
4 (other comment)
Quick fix done in my fork, will PR soon.
5 (other comment)
It is due to NumberFormatException when parsing string into int. I have added an exception to catch it and it will now return a response saying that it cannot be more than the max value of integer. Will PR soon!
6 (other comment)
Do not merge yet. I will need to modify mine after Moon's.
7 (other comment)
I realised when I merged Moon's PR to work on the modifications, the format is still following the old one so I updated the format here.
8 (other comment)
Hey Michaelia! The pr looks great. There's just one more thing to note about the AppointmentDateTime. Currently, AppointmentDateTime also accepts years beyond 19XX and 2XXX. Also, technically 30 or 31 might not be a valid input for day, depending on the month. So I was thinking you could maybe revert the changes from lines 17 to 21.
I forgot about it, lemme do amendments to it.
9 (other comment)
I agree with Kenneth. I prefer having clearer borders for tabs as well. I think making the unselected tab looked darker in fill would be nicer.
10 (other comment)
For the tab borders, the colours are the same except for the bottom side. It may come across as less appealing to me so I think it is good to make it the same colour. Just a suggestion.
@iqbxl
(0 comments)1 (other comment)
code in getBMI() function in AddressBook class does not achieve required result.
2 (other comment)
lgtm
3 (other comment)
lgtm!
4 (other comment)
nice
5 (other comment)
nicely lgtm
@afroneth
(0 comments)1 (other comment)
LGTM
2 (other comment)
LGTM!
3 (other comment)
LGTM!
4 (other comment)
Fixed in #228
5 (other comment)
Fixed in #228
6 (other comment)
Is there a way to partition the tabs so that there is a clearer distinction? I drew a rough sketch below.
@gabrielsimbingyang
(0 comments)1 (commented on own PR)
Noted, will update this
2 (commented on own PR)
Noted, will update this
3 (commented on own PR)
👍
4 (commented on own PR)
Updated!
5 (commented on own PR)
Updated!
6 (commented on own PR)
Done
7 (commented on own PR)
Done!
8 (other comment)
Corresponding PR has been merged
9 (other comment)
After a long debugging period. I don't think it's possible to change the system decoding to "utf-8" format without changing some core features of the log.java which will significantly affect the rest of the code. I will just leave it as it is
10 (other comment)
Remove command functionality seemed to have been included when @IlyaRin merged her adding command branch, I will close this branch now
11 (other comment)
The default clear command still works and need not be changed. I will close this issue now
12 (other comment)
Canceled due to failed CI checks
13 (other comment)
Tasks:
Come up with a new wireframe
Come up with a color theme - Done (7th Oct)
Implement the new design - Done (7th Oct)
14 (other comment)
Some of your CI (Continuous Integration) checks have failed so you have to change it before we can merge the pull request. You can find out what is the issue by clicking on details > clicking the "..." button on the right > then lastly, clicking on full screen.
The errors will be the lines before the red alert message. It looks like there are some formatting issues with this pull request. For example:
This means that there is no empty line at the end of the Email.java file. Hence, you would have to rectify that to maintain formatting standards with the rest of the program.
15 (other comment)
There are some conflicts with the rest of the program, as this is a tutorial program we don't have to merge this pull request but do keep in mind to resolve conflicts in future PRs
16 (other comment)
Even though this is one line of code, it is dealing with the build file, hence I have tagged everyone for review.
17 (other comment)
@vigneshbhuvan-nus please fix your CI checks next time before merging. It really screwed over the test @IlyaRin had written and I have no idea how to fix it.
18 (other comment)
Fixing the UI
I found out that during initialization, the wrong output of the method getFilteredEntryList() from ModelManager.java gets passed to the UI. This meant that the UI was watching the first decks UniqueEntryList.
I changed it so that now the UI watches observedEntries from the PUBLIC field in AddressBook.java.
Hence, any changes to observedEntries from AddressBook.java will directly result in a change to the GUI.
Select Command
I edited the Select Command to now directly change the observedEntries, the low level details are documented in the code.
Essentially, it creates a copy of the observedEntries, then deletes the original entries. It then fills observedEntries with entries of the selected command. The reason why we have to create a direct copy is to avoid the concurrent modification exception. Not the best performance O(n^2 * m) but performance can be optimized later.
Issues
The modification to AddressBook.observedEntries is done directly (because observedEntries is a public field), we should change this in the future.
Now edit command has to be updated, please refer to the code I have written to get an idea on how to do it.
List command can be deleted as well
Clear command needs to be updated as well (should it clear decks or clear entries?)
Homework for you guys:
Fix the edit command such that it displays the edit command (for now, it only edits the deck's entrybut doesn't show it)
Determine if list command needs to be deleted and delete/not delete it accordingly
Do the same for clear command
19 (other comment)
Done with my latest commit
20 (other comment)
Done with my latest commit
21 (other comment)
Done with @IlyaRin commit
22 (other comment)
Cancelled, we will be using entries instead
23 (other comment)
Looks good to me
24 (other comment)
Could you explain what's going on like what I have here
25 (other comment)
Hi everyone,
This is my contribution to UG. I have written down the basic table of contents and necessary markdown language. If you need to create any new features (like links , jumps etc). you can just refer to the markdown language that I have written so far. However, I have also gone through the trouble to find a good cheat sheet you can all refer to below.
Please fill up your portion of the UG in the same style I have written and if you can't finish it, at least do half-ish
Remember to attach your name!
Melanie: The individual deck commands
Vignesh: The individual entry Commands
Georgie: Introduction to Play, Statistics and Extra commands. Add FAQ
For Melanie and Vignesh:
Use this guide as a reference, I think they have done a goodjob:
https://github.com/AY1920S2-CS2103T-W16-1/main/blob/master/docs/UserGuide.adoc#tasklist-branson
Here is a easy cheatsheet to refer to:
26 (other comment)
Edit DG:
I have edited the flashcard portion and the select command portion at the bottom of the DG. From what I can gather, it seems like most of the new additions to the DG will be at the bottom.
From looking at other groups, I think our DG is honestly quite bad, so we need to redouble our efforts in the DG in future iterations
These are the following tasks for the each of you:
Melanie: Update UI components and use cases (don't need to spend too much time on it because you have already done a lot, just need to update the UI part because I saw some UI changes in the latest iteration and maybe 2-3 use cases)
Georgie: Update your validation component including updating the picture
Vignesh: Update memory including picture (super important so we can all understand how memory works)
Some reference DGS that I think are quite good:
https://github.com/AY2021S1-CS2103T-T09-3/tp/blob/master/docs/DeveloperGuide.md
https://github.com/AY1920S2-CS2103T-W16-2/main/blob/master/docs/DeveloperGuide.adoc
27 (other comment)
Added basic Leitner flashcard system
28 (other comment)
Change parser to accept convert all command user input to lower case
29 (other comment)
Vignesh will fix the link
30 (other comment)
Vignesh will delete this from the UserGuide as the feature has not yet been completed
31 (other comment)
Not an issue, capitalisation is important in some language.
32 (other comment)
Change the error message for indexed commands (delete, remove, select)
33 (other comment)
Fix the message output for the select command
34 (other comment)
This is not a bug but we found a new bug with clicking
select 1 -> play -> stop -> select 1 -> click on quiz tab -> select 1/0 will not switch tabs anymore
35 (other comment)
Also, disable all onActions for the FXML files for entry, quiz,play,stats tabs
36 (other comment)
will change help message to have command summary and link to userguide
37 (other comment)
Not feasible to implement with our current architecture
38 (other comment)
@vigneshbhuvan-nus will update the photos
39 (other comment)
@IlyaRin will fix this
40 (other comment)
@GabrielSimbingyang will change play to \play from stop to \stop
41 (other comment)
I will update the UG as well
42 (other comment)
You can have the same word but different translation.
You cannot have the same translation but different word
@IlyaRin will fix this
43 (other comment)
Duplicate issue
44 (other comment)
@GabrielSimbingyang will fix this
45 (other comment)
duplicate issue
46 (other comment)
@geoboom will fix this
47 (other comment)
@vigneshbhuvan-nus as well
48 (other comment)
@geoboom will include the units and make the x-axis entries look better as well
49 (other comment)
@GabrielSimbingyang will fix this
50 (other comment)
@GabrielSimbingyang will fix this
51 (other comment)
Not a bug
52 (other comment)
Not a bug, capitalization is important in certain languages
53 (other comment)
This is caused by another bug that we are fixing
54 (other comment)
Capitalization is important in certain languages
55 (other comment)
56 (other comment)
duplicate issue
57 (other comment)
duplicate issue
58 (other comment)
@vigneshbhuvan-nus will change the memory files first
59 (other comment)
modified to our needs
60 (other comment)
Will not be including in final version of GreenTea.
61 (other comment)
@vigneshbhuvan-nus , why did you close this? It is not updated.
Please edit the help message to only show the link to the user guide
Edit the picture in the userguide in 5.4.1
62 (other comment)
Completed number 3,4,6,7,9,10
63 (other comment)
Updated DG with new diagrams and updated incorrect diagrams
64 (other comment)
Completed
65 (other comment)
Done
@urieltan
(0 comments)1 (other comment)
Looks good after checkstyle fix.
2 (other comment)
Looks good to merge
3 (other comment)
Looks good to merge.
@eugene3231
(0 comments)1 (other comment)
Duplicate user story, refer to #20
2 (other comment)
Merge user story into #10
3 (other comment)
Split this issue into another issue:
Refer to #47
4 (other comment)
5 (other comment)
6 (other comment)
e.g.
in what situation do you use the command
visual walkthrough of how to use the command
expected outcomes at each step
overall expected outcome at the end of the whole process
7 (other comment)
Duplicate PR #104 is the correct PR.
8 (other comment)
Closing this issue as the DG problems listed above have been fixed by #101 and #111
9 (other comment)
Todo:
1. Fix test files - patient constructors
2. Fix Visit object save format in clinical.json
3. Improve overall code style and checkstyle
4. Improve overall UI of popup window
5. Fix null pointer - message
6. Update list of patients in patient tab when add visit
7. Resizing of profile window - responsive (v1.4)
8. EditVisit (ken)
9. DeleteVisit (eug)
[scraped] 10. Show only 3 most recent visits under each patient
10. Total counts of visit per patient to be displayed in profile panel with index of each visit
11. Standardize the /ev /i etc prefixes for new features e.g. addvisit, editvisit and deletevisit
12. Ensure icons are using stethoscope for new popup windows
Appointment:
10 (other comment)
Include name for individual part
Understand rubrics & communication principle
Need to make it attractive and user friendly
Not highly attractive/reader friendly --> Add icon/logo/starting page of app to identify our app (Have icon, logo like VISIT)
Can it be more colourful?
Do we need to say positive integers --> can change to numbers
3.2.6: Instead of giving these, can you show me how it look like in the interface (should correspond to the exampe)
Include relevant annotations for pictures
Picture content has to link with text description
Don’t show me end result/ Add more pictures before and after
I want to know where and which aspect…
See more rationale being given.
Is it necessary to put TOC on the front?
Add legend for the markdown/tip boxes and introduce user on how to read them
Add labelling of figures
Introduce sample data on startup and tell user to clear if not necessary
Add picture that user will see on startup and how to read our UI generally with annotations
11 (other comment)
Removed the ev/ and d/ for editvisit and deletevisit, the visit index will be i/
changed i/ to ic/ for addpatient, editpatient
change addPicture command to addpicture
ctrl + s to save
shortcut to switch tab in main screen: ctrl + tab
EDIT: all done
12 (other comment)
I can't seem to understand this bug report, is anyone able to replicate this issue? It seems intended that addvisit should not be able to recognize addvisit input twice, and the example given in the ss works for me.
13 (other comment)
Similar to #202
14 (other comment)
Similar to #213
15 (other comment)
I think we need to include a message/notice after successfully executing
editpatient
that the appointment card has to be manually updated, due to 'snapshotting' of patient when creating an appointment.
Perhaps also including it in the UG under editpatient and addappt
16 (other comment)
Related to #209 due to 'snapshotting' of patient info?
17 (other comment)
I think this could be due to an uncaught exception
see the error message in the console when recreating this bug:
Caused by: java.lang.NumberFormatException: For input string: "0.5"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at seedu.address.logic.parser.ParserUtil.parseDurationWithStart(ParserUtil.java:261)
at seedu.address.logic.parser.appointment.AddAppointmentCommandParser.parse(AddAppointmentCommandParser.java:40)
at seedu.address.logic.parser.CliniCalParser.parseCommand(CliniCalParser.java:114)
at seedu.address.logic.LogicManager.execute(LogicManager.java:54)
at seedu.address.ui.MainWindow.executeCommand(MainWindow.java:247)
at seedu.address.ui.CommandBox.handleCommandEntered(CommandBox.java:52)
18 (other comment)
Similar to #209 due to 'snapshotting' of patient info
19 (other comment)
I can't seem to find the cause of this bug, would appreciate any input if someone knows how to. Currently, our code for find command is in #NameContainsKeywordsPredicate.test(Patient patient) which currently compares only the Name and IC of the patient
20 (other comment)
Probably due to an uncaught exception in ParserUtil.parseDurationWithStart(ParserUtil.java:261), see error message below:
Caused by: java.lang.NumberFormatException: For input string: "21474836471"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at seedu.address.logic.parser.ParserUtil.parseDurationWithStart(ParserUtil.java:261)
at seedu.address.logic.parser.appointment.AddAppointmentCommandParser.parse(AddAppointmentCommandParser.java:40)
at seedu.address.logic.parser.CliniCalParser.parseCommand(CliniCalParser.java:114)
at seedu.address.logic.LogicManager.execute(LogicManager.java:54)
at seedu.address.ui.MainWindow.executeCommand(MainWindow.java:247)
at seedu.address.ui.CommandBox.handleCommandEntered(CommandBox.java:52)
21 (other comment)
Maybe we can add an event(?) listener similar to how the addvisit/editvisit window behaves when >kbd>Esc>/kbd> key is pressed?
22 (other comment)
I was thinking we can include a section of how CliniCal loads up with sample data on first startup in the UG. And in that section maybe we can add some scenario to justify our red colour tag or even use more color tags in the sample data
23 (other comment)
Probably some misinterpretation on the user part, as prefixes can be repeated multiple times when ... is used and not multiple key words.
Maybe we can add a clearer description of multiple prefixes vs parameters vs keywords in the UG
24 (other comment)
I think we should stick to Singaporean ICs only as currently our main target audience are GPs in Singapore. Freedom in formatting may be rather complicated to adapt to the different identity number formats used by various different countries
25 (other comment)
https://stackoverflow.com/questions/40344293/how-can-i-check-if-date-is-before-a-specific-time
Only assign visitdate before and today
26 (other comment)
Todo: Make it clear in the UG that the next box will go into the save button, to minimize mouse usage instead of clicking
27 (other comment)
Todo: remove commit clinical for addprofilepicture command
28 (other comment)
We can change it to like the other commands:
Invalid command format!
addvisit: Adds a visit record to the patient by specifying the patient's index in the list of patients.
Parameters: INDEX (must be a positive number) [vd/DATE]
Input DATE as DD/MM/YYYY. Input YYYY as 19xx to 2xxx.
Example: addvisit 2 [vd/10/10/2020]
29 (other comment)
Todo: change in VisitFormWindow.fxml
increase min width/pref width
>AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="275.0" minWidth="308.0" prefWidth="503.0">
30 (other comment)
Todo: also in the UG, add in the visit date now only can be before and today for addvisit vd/
31 (other comment)
I could only add in some borders for the tab currently selected so like this, however not sure if it looks abit clunky...
And I couldn't find any documentation on how to change the unselected tab styling (making it darker etc)
OR
@Ringo1225
(0 comments)1 (other comment)
update delete method and test cases
@Royxuzeng
(0 comments)1 (other comment)
Code looks good. I think it is good to merge.
2 (other comment)
Code looks good. I think it is good to merge.
3 (other comment)
The code looks good.
4 (other comment)
Fixes #6
@Nauw1010
(0 comments)1 (other comment)
Todo
Display related contacts in entry content.
Display person card content.
Display date in entry content.
Improve the help window.
@zhXchD
(0 comments)1 (other comment)
It seems that the previous PR should not be merged. @Lingy12 please have a look at this and if the previous PR merge needs to be reverted, you can approve and merge this PR, or you can just close this one.
2 (other comment)
This PR is ready for review. Since this part involves a lot of things about the Ui part, could @Nauw1010 review the PR and if everything seems good, merge the PR?
3 (other comment)
This is caused by model.updateFilteredEntryList(PREDICATE_SHOW_ALL_ENTRIES)
in EditJournalEntryCommand.java
. Commenting out this line will solve the issue.
I will make a PR for v.1.4
to change the sidebar selection behavior as well as to solve this issue.
4 (other comment)
Yes, they do.
This is because after editing, the filtering conditions may filter out the edited item and make it not displayed in the list.
5 (other comment)
Work done in this PR:
Get rid of in/SCOPE
, i.e. view in/c index/INDEX
to viewc INDEX
, view in/j index/INDEX
to viewj INDEX
, find in/c
to findc
, find in/j
to findj
.
Update UserGuide of view
and find
.
view
part should be done (I mean for CS2101).
but find
part I just change all in/
to c
or j
.
For all commands which need to read prefix variables, they now first read all prefixes, and if they detect any prefixes that should not be included, it gives an error message.
Add tests for ViewPersonCommandParser
, ViewJournalEntryCommandParser
, DeleteJournalEntryCommandParser
, DeleteJournalEntryCommand
.
@T-Fang
(0 comments)1 (commented on own PR)
I forgot to delete it, I will delete it later
2 (commented on own PR)
Test the equal method of delete command
3 (commented on own PR)
? So that it will not go wrong when comparing two deletetask command. This is also for higher coverage. U can also check delete project command Test adapted from the original ab3 one.
4 (other comment)
For the Leader Object, you want to make it an instance of a Person? Such that it can contain email, address etc. I have included that in my implementation of Teammate. Lemme change that to Person then maybe your Leader can be an instance of Person too. This way you dun have to create email classes etc for the Leader
Maybe we want to wait for Lucas to implement the association class and make Leader class a subclass of association?
@Nauman-S
(0 comments)1 (other comment)
Good use of checkstyle. AssertCommandFailure doesnot appear to work
2 (other comment)
update comments fpr exercise
3 (other comment)
Improve checkstyle. Other than that well done
4 (other comment)
well done!
5 (other comment)
well done!
6 (other comment)
well done!
7 (other comment)
Good use of comments
8 (other comment)
Accurate update of DG! well done
@soaza
(0 comments)1 (other comment)
Resolve issue
2 (other comment)
done
3 (other comment)
done
4 (other comment)
Fixed
5 (other comment)
Changed GUI for better visibility
@hoperawr
(0 comments)1 (commented on own PR)
oops
2 (other comment)
Have to redo
3 (other comment)
Failed CI
4 (other comment)
Forgot to check CI oops
5 (other comment)
CI
6 (other comment)
Can be merged already. Changed equality notion for day to being the same date. Javadoc changes and refactoring.
@kunnan97
(0 comments)1 (other comment)
LGTM, approved
2 (other comment)
sort result list according to semester
3 (other comment)
UG docs settled
4 (other comment)
UG docs done
5 (other comment)
UG docs done
6 (other comment)
Should add this to the UG
@Rogerlys
(0 comments)1 (other comment)
Profile picture and AboutUs has been updated by every member
@Cedo8
(0 comments)1 (other comment)
We feel that this is not a valid bug. The appointments are already sorted and the GUI is just a bonus for the CLI command.
2 (other comment)
Not really a bug. It is just to show roughly how the start screen should look like.
3 (other comment)
There may be duplicate descriptions which may make the implementation more prone to bugs. As for index, we feel that it is a valid suggestion but our current implementation is fine.
4 (other comment)
Duplicate issue
5 (other comment)
Thank you for raising bug!
6 (other comment)
Duplicate issue
7 (other comment)
Thank you for raising this bug!
8 (other comment)
Thanks for raising the concern, we will look into it!
9 (other comment)
Duplicate issue
10 (other comment)
Duplicate issue
11 (other comment)
Duplicate issue
12 (other comment)
Duplicate issue
13 (other comment)
Duplicate issue
14 (other comment)
Thanks for raising this concern, we will update the UG to make it clearer
15 (other comment)
Thank you for the feeback, we will look into it!
16 (other comment)
Thanks for the feedback! We will look into the issue!
17 (other comment)
Problem resolved! Thanks for raising the issue!
18 (other comment)
Duplicate issue
19 (other comment)
Thanks for raising the issue! Problem is resolved!
@ryanlimjr
(0 comments)1 (commented on own PR)
Resolved for Dellsn
and ViewGrp
@wengfaing
(0 comments)1 (commented on own PR)
Ok fixed in latest commit
2 (commented on own PR)
Fixed in latest commit. Thanks all
3 (commented on own PR)
fixed in latest commit https://github.com/AY2021S1-CS2103T-T12-1/tp/pull/169/commits/c276c055ccc67713af31fe5506ca399aa0cee012
4 (commented on own PR)
fixed in latest commit, used 'command' instead of 'd'
5 (commented on own PR)
fixed in latest commit
6 (commented on own PR)
fixed in latest commit
7 (commented on own PR)
Actually i meant to say that the square brackets themselves are not necessary bc that was what Aileen feedbacked to us
8 (commented on own PR)
In one of my earlier commits I made that change, for the constructor to take in a LocalDateTime but that implementation had its own problems, such as every single class that needed to use Time had to import LocalDateTime as well as ensure proper formatting of its inputs before passing into the constructor (or else it would throw a DateTimeParseException).
Hence i reverted it to this implementation where Time takes in a String and all parsing is done within the class
9 (commented on own PR)
For the other parts of the code, this section here is to check if the JSON info is valid (ie. is the data file corrupt). However, this does not work for this implementation of Time, as we are not storing user input, but we are storing the endTime. Hence we cannot pass the endTime field through the same isValidQuantity/isValidName/etc. method, as that regex is used to test user input not to test this.
I removed this because I am handling the parsing inside the Time class
10 (commented on own PR)
- Remove this highlighted part from DeliveryAddCommand (it's not from your PR but it shouldn't be there haha)
fixed in commit: https://github.com/AY2021S1-CS2103T-T12-1/tp/pull/202/commits/a7a2dfb73243c472502756ff237ddf71bfefd18c
- Add colours for the different delivery time left
added in commit: https://github.com/AY2021S1-CS2103T-T12-1/tp/pull/202/commits/b6740dfa1ff79f72c5183f4355f888aa3a8c15da
11 (commented on own PR)
changed to initializeDeliveryCountdown() in commit:
12 (commented on own PR)
ok true, fixed in latest commit
13 (commented on own PR)
ok fixed in latest commit
14 (commented on own PR)
replaced with string constant in commit:
15 (commented on own PR)
fixed in latest commit
16 (other comment)
@wengfaing do you want to add the relevant unit/ integration tests first for this command? Including parser for the command, logic, etc. Or do you prefer to do these tests in next iteration?
I think i'll work on it in the next iteration!
17 (other comment)
-optional for add
-prefix: metric/
-add qty: infront in ui
-metric to be between max qty & %
18 (other comment)
fixed in latest commit:
19 (other comment)
@wengfaing btw have you fixed this in your add metric PR?
Yes, it has been fixed in this commit:
20 (other comment)
I don't think you have updated the sequence diagram image (only the puml has been updated from what I see)
oops slipped my mind. fixed
@lerxcl
(0 comments)1 (commented on own PR)
Oh yea I didn't update the bottom example, will do so!
2 (commented on own PR)
Okay noted!
3 (commented on own PR)
Thanks 😄
4 (other comment)
I might have missed out on some unit tests, as there were simply too many 😥
5 (other comment)
When a recurring event marked as done, will auto-create another same task
6 (other comment)
https://docs.google.com/document/d/1oAOu1ceF8zB1nDXfRghrbAdEy1nUPa5cTuO8C326L4c/edit
7 (other comment)
Add purpose of User guide too.
@chshen1998
(0 comments)1 (other comment)
This problem occurred when a backdated appointment is created then immediately followed by the "a-list" command. As a result, the TimerThread did not have the time to set these appointments as missed.
However, now that backdated appointments are no longer allowed to be created, this is no longer a problem.
2 (other comment)
The bottom part of the last appointment card is cut off by the response box. This is after scrolling down as much as possible. This is more of a UI problem.
3 (other comment)
This problem occurred when a backdated appointment is created then immediately followed by the "a-list" command. As a result, the TimerThread did not have the time to set these appointments as missed.
However, now that backdated appointments are no longer allowed to be created, this is no longer a problem.
4 (other comment)
This problem occurred when a backdated appointment is created then immediately followed by the "a-list" command. As a result, the TimerThread did not have the time to set these appointments as missed.
However, now that backdated appointments are no longer allowed to be created, this is no longer a problem.
5 (other comment)
Completed appointments should not be shown for commands "a-list" and "a-upcoming".
The problem here is the filter used for "a-upcoming" not checking for appointment completed status.
@kswk
(0 comments)1 (other comment)
The jar file is functional and able to be launched via double clicking after being tested on the following operating systems:
Windows
MacOS
Linux (requires setting up of execute permission)
@chiabs
(0 comments)1 (other comment)
Done
2 (other comment)
Remade another PR, refer to Add Sort Command instead
3 (other comment)
Done, refer to Add Sort Command PR
4 (other comment)
Refer to PR#108
5 (other comment)
PR#153
6 (other comment)
Deferred to milestone v1.4
7 (other comment)
#111
8 (other comment)
PR #230
9 (other comment)
PR #233
10 (other comment)
Fixed with PR #234
11 (other comment)
Fixed in PR#235
12 (other comment)
PR#236
13 (other comment)
PR #239
14 (other comment)
PR #245
@leeyorktat
(0 comments)1 (other comment)
Looks good!
2 (other comment)
Looks good to merge
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
LGTM
6 (other comment)
LGTM
7 (other comment)
Change the example command in Getting Started section of UG
8 (other comment)
Work on flow of examples in UG
9 (other comment)
put in UG warning
10 (other comment)
addressed in UG alr
11 (other comment)
put in DG?
@pooty3
(0 comments)1 (other comment)
Thank for helping us find the bug!
2 (other comment)
Thanks for helping us find the bug!
@yuanxing-y
(0 comments)1 (other comment)
display yyyy-mm-dd, x days ago
2 (other comment)
User Guide: more description
3 (other comment)
UG
@davidliew9
(0 comments)1 (commented on own PR)
okay will do
@juandavinlie
(0 comments)1 (other comment)
Nice la bro
2 (other comment)
LGTM
3 (other comment)
solved
4 (other comment)
close
5 (other comment)
function does not exist anymore
6 (other comment)
command does no longer exist
7 (other comment)
LGTM
8 (other comment)
LGTM!
9 (other comment)
LGTM!
10 (other comment)
LGTM
11 (other comment)
LGTM
@ktaekwon000
(0 comments)1 (other comment)
This feature has been implemented upstream.
2 (other comment)
This feature has been implemented upstream.
3 (other comment)
This feature has been implemented upstream.
4 (other comment)
The files in docs/diagrams
and docs/images
have yet to be updated to reflect these changes. Reopening this issue.
5 (other comment)
Closed by #61.
6 (other comment)
Don't approve this yet! I just realised that this code still generates the file even when the file is already present.
7 (other comment)
Pushed a fix regarding the issue above.
This implementation also allows the user to edit the default profile picture to something of their choice, by editing data/stock_picture.png
. If the user wants to return to the default profile picture, they can just delete data/stock_picture.png
and the app will automatically regenerate the file on the next run.
I'm not sure if this should be added into the User Guide, since it's a niche use case.
8 (other comment)
In the process of coding my own tests, I found that the test code heavily depends on variable file paths, and it would be hard to write test code for the sections with hardcoded paths.
As testability is a grading criterion (I think?), I am increasing the priority of this issue.
9 (other comment)
LGTM! Did you already update the user guide?
Thanks for the review. The user guide is updated but I haven't touched the dev guide yet, I'll make a GitHub issue to remind myself of that.
10 (other comment)
Check out the sample code at https://github.com/JFXtras/jfxtras/tree/10.0/jfxtras-agenda/src/test/java/jfxtras/scene/control/agenda/trial for integration between AppointmentImpl and Agenda.
11 (other comment)
Edit: please don't merge this in yet! I noticed a spacing error in SettingUp.md, will get to it asap
12 (other comment)
LGTM! Btw are my previous commits also included inside this pr?
This PR is to the implement-appointment-class
branch, so it will be applied on top of whatever you pushed originally 😄
I'll merge this in then!
13 (other comment)
Closed by https://github.com/AY2021S1-CS2103T-W11-4/tp/pull/82
14 (other comment)
Working as intended, user can resize window as they like to expand the left list horizontally. Perhaps mention in UG?
15 (other comment)
Some of the results on a Google search suggests that this is a misconfiguration on the tester's side. Closing this issue.
16 (other comment)
I'll be closing the duplicate issues to clean up the issue list.
17 (other comment)
Duplicate of https://github.com/AY2021S1-CS2103T-W11-4/tp/issues/209
18 (other comment)
Duplicate of https://github.com/AY2021S1-CS2103T-W11-4/tp/issues/209
19 (other comment)
Possible fix: when checking validity of dates, format the string and check equality with supplied string
20 (other comment)
Duplicate of https://github.com/AY2021S1-CS2103T-W11-4/tp/issues/209
21 (other comment)
What do you guys think about the issue; should we keep the Singaporean IC checking and mention it in the documentation or should we allow for more freedom in formatting?
22 (other comment)
Duplicate of https://github.com/AY2021S1-CS2103T-W11-4/tp/issues/209
23 (other comment)
Fixed in my branch, will PR soon.
24 (other comment)
Fixed in my branch, will PR soon
25 (other comment)
Fixed by assigning Esc to close window in my branch, will PR soon.
26 (other comment)
Fixed in my fork, will PR soon.
27 (other comment)
Fixed in my fork, will PR soon.
28 (other comment)
Fixed in my fork, will PR soon.
29 (other comment)
Fixed in my fork, will PR soon.
30 (other comment)
Note to self: This fix also requires a changes to sample data at start and a lot of other places. Will take some time to fix.
31 (other comment)
This issue consists of 2 parts, first is accepting wrongly written dates and the second is the irrelevant error message. Reopening this issue as the 2nd issue has yet to be fixed.
32 (other comment)
Moving discussion to https://github.com/AY2021S1-CS2103T-W11-4/tp/issues/231
33 (other comment)
Thanks for the heads up, I'll try generating the test cases dynamically!
34 (other comment)
Closed by https://github.com/AY2021S1-CS2103T-W11-4/tp/commit/87a2cdaf36106299744014fb08ed54c50a611162
35 (other comment)
This implementation only allows a limited subset of domains. Closing for now
@caleblyx
(0 comments)1 (other comment)
Add reschedule and snooze commands
-Reschedule command changes the dates and times of an event.
-Snooze command changes the dates and times of a todo.
@pongzers
(0 comments)1 (other comment)
Cause of RecommendSuCommand -> isGradeAboveC. Since technically if your grade is below C, you cannot SU. But actlly you can SU you will just get U LOL so remove isGradeAboveC?
2 (other comment)
Think is cause after changing to Y2S2, after running recommendSU, the command still works, but then this line will filter away all the non-Y2S2 mods, so ded
Need change to sth like this i think. Change tmr cause i previously changed this chunk before so will merge conflict.
3 (other comment)
If use list in semester, will only show the modules in the semester.
4 (other comment)
Fixed by XY's fix
5 (other comment)
Fixed by XY's fix.
6 (other comment)
Current coverage is 60~%, i think we should have at least 80~%?
7 (other comment)
Yah i think the error is on his side.
8 (other comment)
Fixed with documentation.
@augustinekau
(0 comments)1 (other comment)
Good Job!
2 (other comment)
See PR "branch-recommend-su"
@euzintan
(0 comments)1 (other comment)
LGTM.
2 (other comment)
LGTM
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
LGTM
6 (other comment)
LGTM
7 (other comment)
LGTM
8 (other comment)
Closed by linked pull request
9 (other comment)
Issue fixed by the linked pull request
10 (other comment)
LGTM
11 (other comment)
LGTM
@IronBiscuit
(0 comments)1 (other comment)
AboutUs done
2 (other comment)
Thank you for your feedback.
update_inventory
is working as expected. This issue is with add_inventory
and edit_inventory
, as these commands should not allow negative quantities in the resulting record, as having a negative inventory quantity does not make much sense. update_inventory
is programmed to not allow for inputs that will result in a negative quantity, which conflicts with the other commands. We will correct those commands and update the UG to better clarify these issues.
update_inventory
will be working as expected after these fixes!
3 (other comment)
Unfortunately, I was unable to reproduce the error either.
4 (other comment)
Thank you for your feedback.
Currently, edit_inventory
and add_inventory
allows for negative quantities which is not supposed to be allowed. We will be updating these commands as well as the UG to better reflect this.
5 (other comment)
Thank you for your feedback!
We have fixed this issue. update_inventory
should be working as expected now!
@Elgoh
(0 comments)1 (other comment)
Bug fix on EditFinanceCommandParser!
2 (other comment)
Cannot reproduce bug
3 (other comment)
Thank you!
4 (other comment)
Hi Yan! Nice to meet you on github! For now find_inventory only search for the Exact name in the inventory therefore helloo will not appear, but hello world will appear.
5 (other comment)
Sadly, we were unable to recreate the same bug again...
@rgabelarde
(0 comments)1 (other comment)
3 Tests failing to fix.
@rachel170
(0 comments)1 (other comment)
Explain that statistics is for review session and not deck
2 (other comment)
Remove IllegalStateException from ReviewWindow class
3 (other comment)
Explain that review all will not save review statistics
4 (other comment)
Actual issue, need to save FlashNotes data at handleExit() probably.
5 (other comment)
Same as issue #218
@mgiang2015
(0 comments)1 (commented on own PR)
Thanks for spotting it!
Updated the PR, please help me review again. Thanks!
2 (commented on own PR)
Thanks for spotting that! I added a static parseGoal() in ParserUtil that checks not only the format but validity of the date provided as well 😃
3 (commented on own PR)
Thanks for the suggestion! Will add that in
4 (commented on own PR)
Yup thanks for pointing it out! Forgot how DetailedBookCard inherits from BookCard
5 (other comment)
closes #29
6 (other comment)
For GoalClassDiagram.puml, will it be better to follow the hierarchal order and put the interface ontop of the implemented class?
Updated diagram to follow hierarchal order
@LimZeWeiDennis
(0 comments)1 (commented on own PR)
Noted I will include them into the usage!
2 (commented on own PR)
Noted! I will include the prefix for the quantity! I will make the necessary changes on the UG as well
3 (commented on own PR)
Yes, i was trying out if it affected and i forgot to remove it. Thanks!
4 (other comment)
LGTM
5 (other comment)
LGTM
@KishenKumarrrrr
(0 comments)1 (other comment)
README has been updated
2 (other comment)
fixes #184
@yuxuanxc
(0 comments)1 (commented on own PR)
ok sure
2 (other comment)
Idk how editing the font size will turn out, can merge first then i edit later?
@DreamerDragon
(0 comments)1 (commented on own PR)
for this one, we cannot iterate and delete in a for loop at the same time, so how i solved this is by moving it outside.
2 (commented on own PR)
ohh i get it, so only parsing in the lower half of args without the command word
3 (commented on own PR)
sry just saw this..
4 (commented on own PR)
ohh thanks, was looking for this link
@cheoksuanne
(0 comments)1 (other comment)
lgtm!
@ChengJiyuqing
(0 comments)1 (commented on own PR)
actually, i need a boolean field in qAndA to keep track what kind of cell to use for that particular qAndA.
i think it's possible to pass a copy of that QAndA, but then it means need to refactor the constructor to include isQuiz field, I find it a bit redundant haha (cuz everytime we initialize a qAndA need to indicate isQuiz)
Do you think we should refactor constructor?
2 (commented on own PR)
this is deleted now! It's to reset the cells of displayed qAndA to normal cell
3 (other comment)
This version has a small bug, will be solved soon.
@ramenmen
(0 comments)1 (other comment)
Thank you for updating the user guide 😃
2 (other comment)
thanks for fixing this!
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
After discussing we decided to allow past meetings because new users may want to enter old meetings to check their schedules
6 (other comment)
LGTM 👍
7 (other comment)
LGTM
@xinyee20
(0 comments)1 (commented on own PR)
Ah yes, changed it, thanks!
2 (commented on own PR)
Yup sure! Thanks for the suggestion
3 (commented on own PR)
The current implementation of StudentBuilder fails the test case as the name of the Student does not correspond to name of any student in the lesson created by lesson builder, so I did not use it haha Do you think it will be better to change the default student name for Student Builder (not sure whether will fail test case elsewhere) or leave my current implementation as it is?
4 (commented on own PR)
oh I shall change the way the student is built and infuse in StudentBuilder like 'new StudentBuilder().withName("Aaron Tan").withId("A0123456U").build();' I think that should do the trick:)
5 (commented on own PR)
yup okay good idea!
6 (commented on own PR)
The current implementation of StudentBuilder fails the test case as the name of the Student does not correspond to name of any student in the lesson created by lesson builder, so I did not use it haha Do you think it will be better to change the default student name for Student Builder (not sure whether will fail test case elsewhere) or leave my current implementation as it is?
I have decided to change the default student name to the correct one since it seems to make more sense that the default student build is a valid student. I fix some areas to pass the test cases too, they were pretty minor I realise, so that's good. I will proceed to use the default student build by StudentBuilder
, thanks for the suggestion! It was a good point:)
7 (commented on own PR)
Ah yes, thanks for noticing, I will make the changes:)
8 (commented on own PR)
Yes, good point, thanks for pointing it out:)
9 (commented on own PR)
yes, range that score can take in is 0-5, in this case the subScoreOutOfRange is an int score that will be subtracted from the original score to result in the score going out of the range. In the case of this test case, the original score is 3 so 4 covers the case where the subScore is greater than the score. The invalid scores for non-integers test case is covered under SubScoreCommandParserTest, I will add in test case for negative integers.
10 (commented on own PR)
yes, i will change, sorry for the grammar mistake
11 (commented on own PR)
sure, I will do this in the next iteration of edits!
@jacetjy
(0 comments)1 (other comment)
Can't pass CI due to checkstyle error in RemarkCommandTest.java.
Checkstyle document says to put "import org.junit.jupiter.api.Test" after the "import static seedu" statements, but upon doing that, it says that the "import org.junit.jupiter.api.Test" is lexicographically before the "import static seedu" statements, and should be put before them. I don't know how to solve this checkstyle conflict.
2 (other comment)
Tests aren't fixed yet. Will implement later.
@hjl99
(0 comments)1 (commented on own PR)
Thanks, it's updated now
2 (other comment)
Okie thanks! that sounds clearer to me
3 (other comment)
Problem fixed!
@yeohhq
(0 comments)1 (other comment)
Update: We will be allowing creation of backdated appointments in the situation where digitisation of hard-copy appointment details are necessary. This will also ensure that test-cases are static and be less-prone to mismatch between the user's device DateTime for testing purposes.
@g-erm
(0 comments)1 (other comment)
Related #92
2 (other comment)
Related #90
3 (other comment)
Related #90
4 (other comment)
Related #86
5 (other comment)
Related #86 #88
6 (other comment)
Closed via #140
7 (other comment)
Closed via #106
@jiaax
(0 comments)1 (commented on own PR)
im not changing the storage.readAddressBook cause idk if i should touch the storage class at all haha
2 (commented on own PR)
the equal method for person checks for id so this isSamePerson only makes use of the overridden equals method
3 (other comment)
Wrong branch
4 (other comment)
Will indicate in the UG to make it clearer!
5 (other comment)
Will update the example in the UG!
6 (other comment)
Will update the UG example!
7 (other comment)
will update to make sure it's unique ID instead!
@yyutong
(0 comments)1 (commented on own PR)
Ohh I forgot to change back to the original version;( I'll change now!
2 (other comment)
Add use cases 7-9
list all expenses
list expenses ina specific category
set budget
3 (other comment)
Update a bit of DG, edit error message in delete expense command parser, add expense test
4 (other comment)
Do you create the expenseClassDiagram?
Yes I created it in my last pull request if I didn't remember wrongly!
@ameliatjy
(0 comments)1 (other comment)
CANdidates is unable to ensure accuracy of email address inputs due to the large variety of domains available across the globe.
We will put a note in our User Guide to warn users on this and proceed to close this issue.
2 (other comment)
We value informative success message over short ones to fit into the response box.
@Door-oof
(0 comments)1 (other comment)
Thanks for pointing it out!
2 (other comment)
Thank you for the suggestion!
@liuyxxy
(0 comments)1 (other comment)
pull request from the wrong branch!
2 (other comment)
The UG was updated a bit late on the morning of the PE dry run so you might have been looking at the older version instead!
@fall9x
(0 comments)1 (commented on own PR)
makes sense!
2 (commented on own PR)
roger that
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
Will have to merge with command dispatcher and refactored logic file before recipes and ingredients can be displayed
6 (other comment)
Will fix
7 (other comment)
Should we only start with an empty pane if the recipe book is empty? Like maybe the empty pane can get a quick view of the command breakdown
8 (other comment)
Looks good
9 (other comment)
Looks good
10 (other comment)
Duplicate of #76
oof didnt see
11 (other comment)
branch is even with master, plz merge
Opps gotta update
12 (other comment)
oof actually would it be bad practice for me to press the update branch button for you?
13 (other comment)
Should I make the application non resizable instead? @zhiayang
14 (other comment)
Looks good to merge!
15 (other comment)
Looks good to merge!
16 (other comment)
Looks good to merge!
17 (other comment)
Looks good to merge!
18 (other comment)
Realised a potential bug due to incorrect pointer amendment, will fix
19 (other comment)
Realised a potential bug due to incorrect pointer amendment, will fix
ok d
20 (other comment)
Resolved by PR #109
21 (other comment)
tbh i dont exactly have a clue how to make a bunch of buttons work like tab so imma implement other stuff first
22 (other comment)
Looks good to merge
23 (other comment)
Looks good to merge!
24 (other comment)
Looks good to merge
25 (other comment)
👍 regarding the first keypress, is it possible to just set the command box to be focused by default when the app starts?
okay fixed it but another way 😂
26 (other comment)
Looks good to merge!
27 (other comment)
oof okay didnt see that, will amend
28 (other comment)
I'm current using a event listener in
DisplayController
to switch views based on whether recipes are add/edited/deleted, so we probably shouldn't do this.
okay changed
29 (other comment)
Okay I have this issue where I'm unable to test the recipe cards and ingredient cards fully cause we are using a gridpane — I cant get the recipe object out of it, only physical attributes; ab4 uses listView which extends selection model.
30 (other comment)
Looks good to merge!
31 (other comment)
Looks good to merge!
32 (other comment)
is it feature freeze?
33 (other comment)
Will amend
34 (other comment)
I would prefer to leave the links if I were to leave the list in, @zhiayang any thoughts about whether I should remove the whole list?
@zhaolingshan
(0 comments)1 (other comment)
add m/CS2030 G/ gives "Names should only contain alphanumeric characters and spaces, and it should not be blank"
should be invalid command format
2 (other comment)
@jimvae
(0 comments)1 (other comment)
Need to fully add the appointment functionality before I can fully add the appointment commands
2 (other comment)
@soaza Is there a way to customise this? We can change the Calendar name tab to upcoming/this week
3 (other comment)
closes #161 #167 #179 #187 #188
@koonweee
(0 comments)1 (commented on own PR)
Update to public
2 (commented on own PR)
Javadoc added
3 (commented on own PR)
Update to feedTime
4 (commented on own PR)
Line removed
5 (commented on own PR)
Error messages and json updated
6 (commented on own PR)
Updated to match format
7 (commented on own PR)
Resolved
8 (commented on own PR)
Resolved typo
9 (commented on own PR)
Will close and redo PR due to unintended updates in master branch
10 (other comment)
Resolved by #62
11 (other comment)
The bullet points are currently standardized by indentation level, will be kept as it is for now.
12 (other comment)
This issue exists for Medical Conditions too. Appending an existing medical condition results in a successful append message. Will be fixed together.
13 (other comment)
Resolves #253
14 (other comment)
Resolves #240, #245 and #260 as well
15 (other comment)
Resolves #262 as well
@vanGoghhh
(0 comments)1 (other comment)
Closes #10
2 (other comment)
#88 Closes this
3 (other comment)
closed via #144
4 (other comment)
closed via #146
5 (other comment)
closed via #128
6 (other comment)
Fixed by #224
7 (other comment)
Fixed by #224
8 (other comment)
Fixed by #224
9 (other comment)
Fixed by #224
10 (other comment)
Fixed by #223
11 (other comment)
Fixed by #223
12 (other comment)
Fixed by #224
13 (other comment)
fixed by #223
14 (other comment)
fixed by #224
15 (other comment)
Closed by #264
16 (other comment)
Closed by #271
17 (other comment)
Closed by #290
18 (other comment)
Closed by #288
19 (other comment)
Closed by #302
@JunCheng98
(0 comments)1 (commented on own PR)
I think we should leave it as it is to be more consistent since lines 70-71 indicate the indentation that is used throughout the entire code base
2 (commented on own PR)
just finished committing this change and the one above about the JavaDocs
3 (commented on own PR)
This confirms if the redo stack is empty since there is a check below from lines 66-68
4 (commented on own PR)
I think this variable has to be initialized to some base value, if not the check on line 67 will throw an error saying that it is not initialized yet.
5 (commented on own PR)
Ok removed
6 (commented on own PR)
Ok both issues have been fixed and pushed
7 (commented on own PR)
Fixed
8 (commented on own PR)
Deleted
9 (commented on own PR)
Updated it to 'where x is smaller than all 3 digit numbers' since these are examples of incorrect delete commands
10 (commented on own PR)
Fixed this and all other issues above
11 (other comment)
Assigned to @m0nggh since he finished it in his current PR
12 (other comment)
The only discrepancy found was @m0nggh 's section but his description was more of a feature list than a sequence-based explanation, so it didn't make sense to modify it to use numbers
13 (other comment)
UG terms fixed by me, DG terms was fixed by @lamlaaaam
14 (other comment)
The outcome is reasonable since undo will allow you to reverse an action that modified the state of the ZooKeep book. Undo is only expected to fail if no such action was taken before it is called.
15 (other comment)
If the undo command needs to be modified, the person doing the modification should also modify the redo command.
16 (other comment)
I made the find command match substrings since I think it could possibly be labelled a feature flaw if substring matching was not supported.
It also makes the command more flexible anyway which I think is a plus and could make it less of a hassle if users want to search for a general type of animal i.e. bird or fish instead of looking for a specific species. I can allow for substring matching for feed times quite easily if it's fine with you all since it was a minor error that stemmed from my previous implementation of find.
17 (other comment)
Probably will add new tips and examples to show that substring matching is supported
18 (other comment)
Maybe we can discuss if we want this to be implemented? I mentioned my reasons in the linked issue #273, but I am okay with allowing only full matching if the rest think so.
@xxzz-tt
(0 comments)1 (other comment)
lgtm, thanks for updating the UG!
2 (other comment)
LGTM, thanks for adding the ICS!
3 (other comment)
LGTM
4 (other comment)
LGTM
@gsmoon97
(0 comments)1 (other comment)
LGTM
2 (other comment)
Keep up the good work 👍
3 (other comment)
LGTM! Btw are my previous commits also included inside this pr?
4 (other comment)
I think we can solve this by editing isSamePatient() inside the Patient class to only check name and NRIC, not phone number.
5 (other comment)
I think I can fix the REGEX to allow whitespaces
6 (other comment)
I will add a validity check to prevent this from happening.
7 (other comment)
I will edit the REGEX.
8 (other comment)
I will edit the string.
9 (other comment)
We'll be adding more screenshots later.
10 (other comment)
Will be closing since this is similar with #216
11 (other comment)
@ktaekwon000 Btw you also might want to consider implementing dynamically changing test inputs since the AppointmentDateTime now only accepts upcoming dates (including today). Let me know if you need any help with this!
@Hou-Rui
(0 comments)1 (other comment)
Closed due to duplicated to #3 .
2 (other comment)
As the Director of Human Resources, I want to have quick and easy access to all HR information at my fingertips.
3 (other comment)
LGTM.
4 (other comment)
Done. Can merge now if you feel okay.
5 (other comment)
LGTM.
6 (other comment)
LGTM. Since this is just a small improvement I will not seek for more reviews and merge it directly.
7 (other comment)
LGTM.
8 (other comment)
LGTM!
9 (other comment)
LGTM.
10 (other comment)
I have enforced that find
must be used with -applicant
or -staff
, otherwise there will be infinite troubles in the tests. I actually think we better make commands context-free, which means that the operations executed should not be related to the context of the command.
11 (other comment)
Fixed in #210.
12 (other comment)
LGTM
@zhaohuanqdcn
(0 comments)1 (other comment)
The refined UI looks elegant!
2 (other comment)
Thanks for the bug fixes!
3 (other comment)
Thanks for refactoring