Sorted based on the number of comments given to others' PRs, but also showing comments on own PRs and other comments given. Updated weekly.
[This page was last updated on Apr 08 2021]
@kouyk
(188 comments)1 (commented on others PR)
This might sound like a bit of nitpicking, but then if I don't other teams might, the "adds" in this sentence can be confusing, perhaps we can use something like append/include/insert? Same for the things below.
2 (commented on others PR)
I think this is the same issue as what you have raised about separation of the add/delete of dog/owner, in this case shall we just keep things simple and simply call it "missing required information"? To maintain clarify we can put a note at the bottom saying what field are required for dogs and owners. Doing it this way reduces clutter since we can combine more things together, makes any future edits less likely to miss out any detail.
3 (commented on others PR)
the image name needs to be wei-yutong.png
to match your github username, you should be able to rename it easily thru gui or by using the git mv
command
4 (commented on others PR)
5 (commented on others PR)
the blank lines prevent the table from appearing correctly
6 (commented on others PR)
Remove this line perhaps?
7 (commented on others PR)
Maybe we can include dogs and programs in here too?
8 (commented on others PR)
I feel that this line a bit weird? It does make sense though if we have the feature to take note if someone has paid for the upcoming program.
9 (commented on others PR)
There's the black circle symbol, is this intended?
10 (commented on others PR)
For headings I think it is fine to leave out the bold if we are going to use headings. It is also necessary to leave a space in between the #
and the word after for it to take effect.
11 (commented on others PR)
As in the hash-tag is a hash-tag not used as heading? Because throughout the document it seems like they are intended to be headings, if you preview the rendered markdown.
12 (commented on others PR)
Yea, you can refer to our submitted user guide.
Oh but if we still want to keep the dot right, would it be better to use the markdown representation so it is rendered nicely?
13 (commented on others PR)
I closed it because idk how to rename the commit message xD.
You can try git commit --amend -m "Your new commit message"
.
14 (commented on others PR)
this might need to be a part of the addressbook instead, given that storage will likely modify it after reading back the saved file, and especially since in the tests there will be different addressbooks created, but a simple equal will fail since there is no way to sync up the id numbers
15 (commented on others PR)
isn't it just otherOwner.getID() == getID()
? and I think we can do away with this check since it is reasonable enough that 2 owners with all details that are the same point to the same person, and some tests also uses this method to compare between owners.
16 (commented on others PR)
maybe do some basic checks at this point for the owner keyword? the tests can also be updated this way and at least the syntax will be updated.
17 (commented on others PR)
This is a really strange change, might be due to the problematic git history.
18 (commented on others PR)
This is not a bug, if you look carefully at the condition that triggers the exception, it is either when some compulsory arguments are missing or that there is some additional things in between the command keywords and the arguments. In this case, saying the unknown argument might be applicable, but only for the latter scenario. The more useful thing choice is to display help for the particular command or even subcommand like add owner
will display the specifics are adding an owner.
19 (commented on others PR)
Try not to introduce additional line breaks that do not have much meaning.
20 (commented on others PR)
I like that you have added in the javadocs, however, this is to be kept private as it is an internal helper method that should not be exposed to any other users. Perhaps you made it public in order to write test code for it, but I think it is better to refrain from that since it is the public API that we are testing out, the test code should not care about the actual implementation so long as it does what it promises. Else we will fall into this never ending issue of making all methods of every class public. I could have inlined these two lines into the switch case of the main parse
method, but for SLAP I created the helper functions.
21 (commented on others PR)
As commented above, this testing should not happen anymore, but should instead be tested through the parse
method. Also, try to make use of the constants already defined to come up with the command instead of the magic literals.
22 (commented on others PR)
The brackets of the the lambda arguments should not be split into 2 lines, especially not when they are empty.
23 (commented on others PR)
checkstyle has passed for these code or else it won't have been possible to merge them, so I think it might be a problem with your IDE configuration.
24 (commented on others PR)
Yes, you can take a look at the rest of the code base and see how it is done for the others. Especially for helper methods that are more concerned with internal implementation, they could be very dynamic and change every time.
25 (commented on others PR)
is this going to match all kinds of date formats or just our specified one?
26 (commented on others PR)
I think we came to a conclusion last week that this field is to be storing an ID of the owner.
27 (commented on others PR)
does it mean dogs can have the entire spectrum of sexuality now?
28 (commented on others PR)
Nope this is perfect. But just need to make sure that the LocalDate parser is able to handle this variety. Maybe add a comment above it to indicate what it is looking out for? It will help make it more readable.
29 (commented on others PR)
Yup, the idea here is to take in the ID and verify with the backend that the owner does exist for this ID to be considered valid. But you can just put some placeholder functions now when it comes to the adding part.
30 (commented on others PR)
Hmm, then do we want a validation regex just like the date?
31 (commented on others PR)
a bit of nitpick but got extra lines
32 (commented on others PR)
perhaps there's a more succinct way to express this, but i think it's fine for now
33 (commented on others PR)
I was wondering if it is better to store the date of birth and calculate the age from there.
34 (commented on others PR)
Oops
35 (commented on others PR)
I'm not so sure if we want interface templates instead of abstract base class, since interfaces only define methods, no common data like name or tag can be made common, the other thing is when it comes to writing functions like find it might be difficult to avoid boilerplate code.
36 (commented on others PR)
where the spectrum hahaha
37 (commented on others PR)
Maybe we can avoid the dilemma just by calling it Sex
, since gender is what you identify with, sex is biological, easier to just have an other instead.
38 (commented on others PR)
Is it better to store it as LocalDate
instead? this will simplify a lot of things especially for the getAge method. And it will be easier for us to manipulate into any other format elsewhere, say the UI and json.
39 (commented on others PR)
Is it cleaner if we just parse using LocalDate
right from the start? Something like LocalDate localDate = LocalDate.parse(dob, DateTimeFormatter.ofPattern("d-M-yyyy"));
40 (commented on others PR)
Is the indentation here supposed to be 8 spaces? Can consider updating your IDE settings to automatically indent by 8 spaces.
41 (commented on others PR)
package private?
42 (commented on others PR)
Tbh I'm quite keen to remove the use of INDEX__, because we have switched to referencing by ID and not by the visible index number. For this method it is fine of course, but there is a need to probably remove Index and create an ID class in its place, but that's probably another issue to be created.
43 (commented on others PR)
Not to mention the convoluted construction and usage of the Index class doesn't seem to help.
44 (commented on others PR)
I only have myself to blame for this, maybe at least we can extract it into some form of a helper method in the util class? it isn't very straightforward that we are deleting the first dog since we are still using getTypicalAddressBook
just from a different class.
45 (commented on others PR)
This is referring to the ModelStub
btw
46 (commented on others PR)
As in because previously there was only one CommandTest so given ModelStub's nature it made sense to just have it as a private class of the Command, but going forward we probably want to abstract out a bit of these test code as well. The ModelStub should become a package private shared by all the CommandTests, it will be good to combine the tests under AddCommandTest.
47 (commented on others PR)
do you want to change it to entity-level
48 (commented on others PR)
int can never be null, that's why it doesn't have the check. and perhaps you can update the javadoc to refer to Entity while you're at it?
49 (commented on others PR)
can just delete directly since all usage already changed
50 (commented on others PR)
hmm why expose the this actually?
51 (commented on others PR)
I think can revert this portion of the commit and preserve the one above.
52 (commented on others PR)
I don't quite understand the reason behind this change. There's another one below as well.
53 (commented on others PR)
This particular overload is to make it possible to use the same ID across restarts using the one stored in the file. The check for ID is not redundant since it is possible that someone modified the file to make 2 entities have same ID, then they will come and file a bug.
54 (commented on others PR)
same as what was mentioned above.
55 (commented on others PR)
this is very dangerous, it exposes the internalList
directly to modifications beyond this class, is there a reason for this?
56 (commented on others PR)
maybe use a valid ID number? I think I have settled on positive integers.
57 (commented on others PR)
okay I think i get the rationale for the returning the internalList directly, but it is alright to use the unmodifiable version as many other tests does the same. Also I think if this is targeted at owners but will not test dogs, it is a good idea to filter using instanceof as well.
58 (commented on others PR)
same the other one
59 (commented on others PR)
Okay I understand this portion now, it might seem fine to do this for now, but the issue is that this codebase isn't very small, having equivalent api will confuse others that are not so familiar with this portion, and any direct modification is now possible since Java passes by reference, it will be difficult to track down bugs if someone modifies it and violates the assumptions we have about unique entities etc.
60 (commented on others PR)
this can be another test to remove an invalid ID equivalent to the null test above.
61 (commented on others PR)
this indentation doesn't make sense, since it is a continuation of the bracket of the previous line, the &&
on this line is not at the same level as the ||
on the previous line.
62 (commented on others PR)
Could use some updated variable names.
63 (commented on others PR)
This also can be renamed.
64 (commented on others PR)
Here too!
65 (commented on others PR)
Naming for this as well.
66 (commented on others PR)
extra line breaks!
67 (commented on others PR)
is it better to use the hasEntity
method to check if the ID exists and throw an exception if it doesn't. then we can assume that getFilteredEntityList
will return something that definitely contains the owner, then we retrieve it for real this time and check if it is indeed an owner object instead of any other entities. It will be better to use the setEntity
method to change the target owner by creating a new copy with the up to date details.
68 (commented on others PR)
arrayset might be better?
69 (commented on others PR)
as mentioned in the AddDogCommand portion, it will not necessary to directly modify the Entity objects since all attributes are constant throughout the lifetime of the object. This is to align to the original AB3 codebase whereby the edit command also modifies by creating an updated instance of Person
before asking the model to set it as the new one.
70 (commented on others PR)
there shouldn't be a need to do this as well.
71 (commented on others PR)
Hmm then maybe HashSet will do also, btw can just leave it without the specific type of implementation, i.e. List
instead of ArrayList
, Set
instead of Hashset
, there's a discussion on the forum on this.
72 (commented on others PR)
and a set makes more sense for our case, since we don't really need an order to them, it is more ideal in the sense, but why not get it right at the start and not worry later.
73 (commented on others PR)
Another thing of note is that we have to ensure that the check that the entity we have is an instance of Owner
first, or else we might be downcasting illegally, it would be a good opportunity to throw an exception along the lines of id doesn't refer to owner.
74 (commented on others PR)
Will it be better if we keep naming a little more consistent here? Since elsewhere in the I have already used something like idEntityPair
, it will be confusing to see idEntity
here since it can be ambiguous. I think a better alternative would be to simply name it idNumber
or simply just id
.
75 (commented on others PR)
There's an extra line break here. Other than that, another naming thing again, this applies to other areas as well, is it better if we use either id
or ID
in the naming and don't mix the casing? It helps to make things consistent as well.
76 (commented on others PR)
Naming is especially confusing for this part, since idEntity supposedly refers to a pair already.
77 (commented on others PR)
Refrain from commenting like that, a better practice when using git is to simply delete all these lines that you don't need or want to disable, commit this set of changes as an individual commit. If you intend to fix it later, maybe leave a todo around the original area. This way even if we don't implement it there won't be a need to clean up the code much. But if you do intend to restore this portion, it will be simply a matter of finding the commit that removed the lines and reverting it, creating an additional commit that essentially negates the removal yet retaining full history.
78 (commented on others PR)
this makes Owner mutable.
79 (commented on others PR)
and also this.
80 (commented on others PR)
Maybe can declare an integer on top first but don't initialise it? then in the try part can use the result of parseInt such that it can be directly returned below.
81 (commented on others PR)
indent one more layer.
82 (commented on others PR)
This is not something that is meant for an assertion, since it is one of the expected possible errors that we need to handle. Assertions are for verifying assumption that should not be broken and if they are indeed broken, the program is unable to handle and we need to investigate further. I suggest that this be removed.
83 (commented on others PR)
this needs to be removed
84 (commented on others PR)
this instance here is redundant as well, since it will cause the if below to trip otherwise.
85 (commented on others PR)
is it better to separate into 2 conditions so the error message can be a lot more precise?
86 (commented on others PR)
instead of calling getEntity multiple times, it seems better if the result is saved first and reused later, the code will become more readable this way. and i think it is fine to separate the 2 checks here as well, since for a lot of other commands it fails at the first incorrect one.
87 (commented on others PR)
this comment does not explain the invalidity well, since session but not obvious, thus it is better to explain it as an illegal date format
88 (commented on others PR)
does the java coding style require that the indentation be aligned this way? this seems more like a c/c++ styling
89 (commented on others PR)
I know this is a copy and paste from the tests for owner, but please drop the unfiltered part, if you wish you can drop them from the owner side as well. You probably don't understand the original behaviour of AB3, but it originally referenced to every entry by their index in the displayed list, thus filtering makes a difference to whether or not one can reference to a particular Person. We have since switched to using ID and whether or not the target entity to be edited is visible or not no longer matters. If you haven't noticed, there is no longer a filteredlist complement test as I've deleted them, but to prevent too many changes in one PR I refrained from doing the small renames.
90 (commented on others PR)
How about doing this test for the EditEntityDescriptor
instead? While testing here may or may not be redundant, it helps more to test the base class as well in case the bug actually lies inside there and the child classes are just a distraction from the real problem. This applies to tags as well.
91 (commented on others PR)
I don't understand the rationale behind this change
92 (commented on others PR)
For typical dogs, I have inserted an owner so as to make all dogs have a valid owner. And that the ID of the owner is 1, therefore all dog IDs are offset by 1. The fix here should not be with the dog ID, but rather it should be the input text. You might feel that both are equivalent, but fixing it like the current way is convoluted and nobody can understand why the input is 1 yet the ID of the first dog does not match.
93 (commented on others PR)
it is ID now, please help to rename for all the various tests as well.
94 (commented on others PR)
could use consistent format like above.
95 (commented on others PR)
comment needs updating.
96 (commented on others PR)
in this case all fields should be repeated including the owner id
97 (commented on others PR)
it will be good to test against EditCommandParser
as well. I know it is an abstract class, but it is possible to create a simple implementation and test against that, especially for things like tags which there is a protected method that handles it for all classes. That way things like preamble etc only need to be tested once and not repeated since having repeated test cases on the same thing does not help with code coverage or prevent bugs but only increase the execution time of tests.
98 (commented on others PR)
It will be good to adhere to the DRY principle and apply some OOP like in the main codebase. That way setName and setTags can all be simplified. It helps that EditEntityDescriptor is already in place so there isn't as much tweaking to do. This was also one of the reason I rewrote the Edit command implementation to ensure minimal repetition, avoiding potential points of failure when copying blindly and not keeping necessary parts updated.
99 (commented on others PR)
Similar to the builders as well, using OOP to adhere to DRY principle is better since we have no test code for test code, else this will result in some infinite recursion.
100 (commented on others PR)
originally this file worked together with only one typical addressbook, but now there is 3 copies on top of the fact that there is no longer ID, I think it will be better to define these constants directly within each addressbook to avoid confusion. Each of those addressbooks require better naming as well as they are not descriptive at all and there is nothing typical about them. To make it more typical, perhaps it is good to just combine 3 of those into a TypicalEntities
class instead. Something like getOwnersOnlyAddressBook
and getSingleOwnerMultipleDogsAddressBook
will help make things clear.
101 (commented on others PR)
can there be examples here as well?
102 (commented on others PR)
this should be pawbook?
103 (commented on others PR)
Still got addressbook here
104 (commented on others PR)
do you want to also rename the json files?
105 (commented on others PR)
the method names too!
106 (commented on others PR)
probably need separate this rename as part of another commit so as to track as a rename instead of creation of new file. There's several references that needs to be renamed as well
107 (commented on others PR)
this line is copy pasted from somewhere?
108 (commented on others PR)
this one is a comma
109 (commented on others PR)
tbh these message won't be in use anymore after @shaelynl and @wei-yutong merge their enrol and drop changes in
110 (commented on others PR)
I think it is necessary to retain the original message to make sure the user calls the relevant methods beforehand to ensure the file is valid.
111 (commented on others PR)
i actually meant that it is one indent more than the previous line, relatively speaking in this case. sort of align to the open parenthesis.
112 (commented on others PR)
I think here I removed one of the comments to avoid that awkward indent or not problem.
113 (commented on others PR)
maybe we need standardise whether to put a line break right after the requireNonNull statements
114 (commented on others PR)
don't you think it is neater for the body text of the description to be aligned, this one is not very strictly specified though, but i'm fine if everything is done this way
115 (commented on others PR)
this assertion isn't pointless actually, as the editEntityDescriptor
variable is of the parent class, though initialised as one of the child classes, with no programming errors this shouldn't be triggered, but if initialised wrongly for the wrong command then this might be an issue.
116 (commented on others PR)
actually isn't it just [ID}?
117 (commented on others PR)
is it bad to remove the line break here? as in the intention was to make it clear that normal case is above and the default should not be triggered, i'm honestly not sure if it helps
118 (commented on others PR)
Is there a reason for not doing anymore integration tests?
119 (commented on others PR)
Sorry I didn't make myself clear, I meant to drop the UnfilteredList portion in the name, not to drop the integration tests themselves. Previously there was both UnfilteredList and FilteredList versions of these tests. I have removed the FilteredList versions that's why you see the UnfilteredList ones remaining. It will be good to write similar tests for the other 2 classes as well.
120 (commented on others PR)
Link to the general release page, or else we will have to keep updating to the latest release and we might just forget.
121 (commented on others PR)
Here you might want to explain what each of the letters mean, especially since "mm" appears twice and it becomes ambiguous. Perhaps it is better to follow the code convention and capitalise one of them.
122 (commented on others PR)
As in I think that even this format it will be good to specify what each one of them means, like mm refers to minutes should be 00-59 etc, to prevent some lunatics from going crazy. Also this portion is kind of general, you might want to explicitly mention that the birth date of the dogs follows a similar format, omitting the time portion and that the date has to be on or before the current date.
123 (commented on others PR)
This part also needs to be edited, to keep things short and succinct, it would be good to just have a link that redirected users to the add portion for details on the parameters to keep things simple and not repeat yourself.
124 (commented on others PR)
It is the command summary that is wrong
125 (commented on others PR)
Makes more sense check this within NameComtainsKeywordsPredicate
126 (commented on others PR)
just statically import, looks neater
127 (commented on others PR)
Violates DRY principle, can just use ParserUtil.parseId
here
128 (commented on others PR)
requireNonNull
129 (commented on others PR)
requireNonNull
130 (commented on others PR)
is this a mistake? I don't think I see any cardPaneDog around
131 (commented on others PR)
What does the generic parameter do?
132 (commented on others PR)
is it better if program is explicitly matched as well? then you get to do some defensive coding by asserting in the else
133 (commented on others PR)
is there a way to specify this in fxml? I think it is generally better if parameters that don't need to be dynamically set be left out of the code
134 (commented on others PR)
why is this test method renamed? isn't it correct?
135 (commented on others PR)
leave out the file if not written so others can easily tell if the test has been written
136 (commented on others PR)
this isn't used anywhere, I think it is better to leave it out and let the person who is writing program tests to everything
137 (commented on others PR)
date is optional, place the [] around it
138 (commented on others PR)
I think the better way to phrase it is that everything should be in sync and mirror each other when accurate. Two wrongs doesn't make one right. You might want to just update all since these are all documentation issues.
139 (commented on others PR)
I don't think there's a clear cut answer to your query, I'm not sure if the UG is fully accurate as well, the only correct format is what the application currently accepts.
140 (commented on others PR)
Tags are only able to take in...
141 (commented on others PR)
The name of the css file has been changed if i'm not mistaken, changing it will break the current theme.
142 (commented on others PR)
I think this portion is still problematic, the ellipsis is necessary, what i meant was text getting cut off due to the column width
143 (commented on others PR)
you might not want to have dogs enrolled for the manually added programs, since it doesn't make sense for a new program to have any dogs enrolled, perhaps it is better to restrict this default list of dogs to the ones that's part of the typical database
144 (commented on others PR)
I would say avoid defining dog IDs this way, especially since none of the others entities have defined their IDs this way. ID is largely dynamic and only because of the typical database being largely static that's why it was hardcoded. For tests that require the dogs IDs to be present but not necessarily correct, I suggest using the TypicalId class and use some of the numbers inside.
145 (commented on others PR)
I think the method name convention should be "success" at the back.
146 (commented on others PR)
I actually intended for getTypicalDatabase
to eventually contain all types of entities and use it throughout all tests so number and whatnot are more or less consistent.
147 (commented on others PR)
hmm maybe consistent use of the constants? avoid the literals since you have defined the literals
148 (commented on others PR)
Yay good use of streams, but it will be more readable if it is something like:
String expectedMessage = String.format(EnrolCommand.MESSAGE_SUCCESS_FORMAT,
dogIdSet.stream()
.map(String::valueOf)
.collect(Collectors.joining(", ")),
ID_FIFTEEN);
Of course, adjust the indentation as necessary.
149 (commented on others PR)
Maybe use Arrays.asList(ID_TWO, ID_FOUR, ID_SIX)
?
150 (commented on others PR)
Then it will be possible to use the addAll
method to make it more succinct.
151 (commented on others PR)
This could use some rearrangement to match the dogs and owners so it is clearer which are the ones manually added and which are part of the typical database.
152 (commented on others PR)
should there be valid test cases as well for sanity checks?
153 (commented on others PR)
it would be good to test one or two problematic dates like 31-04-2000 etc, though the bulk of it should be tested against the parserutil. And if I'm not mistaken there are 2 constructors for this, one that accepts string and another that accepts LocalDate.
154 (commented on others PR)
generally same comments as the dateofbirth one
155 (commented on others PR)
Lel, is every number used?
156 (commented on others PR)
There are leftover remaining.
157 (commented on others PR)
These are also part of the undo
158 (commented on others PR)
If you look at the source code, ReadOnlyPawbook
doesn't exist, those references to AddressBook
has been renamed to Database
instead.
159 (commented on others PR)
In case you miss out.
160 (commented on others PR)
Here's another one
161 (commented on others PR)
This should be the last one.
162 (commented on others PR)
this one kinda violates the naming conventions, maybe drop the number for the one above and just reuse the same variable
163 (commented on others PR)
does this not conflict with #400?
164 (commented on others PR)
there could be more failures as well, like drop a dog that's not enrolled etc.
165 (commented on others PR)
I did this slipped my checks, but coding standards still need to be adhered to even for test code, it looks like bad practice to name variables with the number at the back, and it is fine to repurpose a variable after it is done. And I think if after these kind of changes, there are 2 highly similar blocks of code, maybe its time to extract a function out?
166 (commented on others PR)
Do you mind explaining why this is taken away? I cannot seem to find a reason that the override should not happen.
167 (commented on others PR)
add a test that changes the owner ID, and also one that causes a duplicate, change the other 2 accordingly as well as you deem fit.
168 (commented on others PR)
do you mind explaining why casting is necessary?
169 (commented on others PR)
and this too
170 (commented on others PR)
it is ID now
171 (commented on others PR)
here also
172 (commented on others PR)
check the javadoc!
173 (commented on others PR)
how about invalid values for the other attribute fields like sex?
174 (commented on others PR)
are you sure this is all that's editable?
175 (commented on others PR)
owner?
176 (commented on others PR)
see my comments for the dog version
177 (commented on others PR)
you need a resetSessions equivalent
178 (commented on others PR)
I think we need another test that ensures that those repeatable fields like tags etc, if different values are supplied, all will be captured, and if repeated, it will be deduplicated correctly.
179 (commented on others PR)
I don't want to do any finger-pointing here, while this is my oversight the previous time, it would be helpful if you broke down your commits such that every commit has a purposeful message along with the stated changes, that way it is easier for me look through at each step and figure out if anything is wrong. However, all that I get here is around 1k lines of code changed, barring the fact that the previous commit history didn't carry over, it is really difficult to be that careful. I won't request that you review what I changed for you in the previous PR, in short your builder pattern was less than ideal, thus sub-type information was lost, hence requiring the casting. I fixed it to avoid those issues, but since extra casting is not technically wrong but just poor coding practice, there wasn't anything that alerted or reminded me that these portions needed to be updated to remove the casting. The fix here is simple, just remove the cast. Do let me know if you don't understand any part.
180 (commented on others PR)
Restore it back, it is essential, or else when the owner ID of a dog changes, the old owner will still have the dog
181 (commented on others PR)
It is not just whether or not someone is going to review it, git commits are supposed to be incremental regardless, the previous PR could have been kept by merging in the latest master and resolving the conflicts. By creating another PR the commit history and authorship are all gone, that's the same reason I previously tried to restrain myself from directly pushing to existing PRs and make everyone perform the minor changes themselves, it actually takes more effort to type all the comments I have given than to directly modify them myself.
182 (commented on others PR)
I'm referring to more test cases that can be written, this line is the most logical thing I can point to. For tags and sessions, repeated values are all captured, but the tests clearly don't look out for this, in this current test case there is only repeated tags, which will be parsed as one.
183 (commented on others PR)
To avoid any confusion, I meant to add an additional test for this, not to rename this test method.
184 (commented on others PR)
my bad, do standardise how the comments are placed for the block of code, if i'm making this mistake it means the assessors might also make similar mistakes, where you won't be able to explain yourself anymore
185 (commented on others PR)
the point of doing repeated fields is to ensure that only the last repetition is taken as the value, you have repeated the same owner ID twice...
186 (commented on others PR)
the method name implies that multiple fields that should only be specified once are now specified multiple times, in which only the last repetition is to be accepted as the final value, programs clearly don't have such a field when being edited, both tags and sessions accepts all of the fields and will only ignore repeated values, what I need from you is to write test methods that instead test if multiple tags & sessions are all accepted.
187 (commented on others PR)
Also, in the copy-paste process, you might have not spent the time to understand what each of the test are doing, there is an expectedModel
which we modify by hand in the most crude way to keep things simple and avoid errors, while the model
is the target that we let the EditDogCommand
execute on and therefore modify.
188 (commented on others PR)
Just in case you don't understand how Pawbook works, I will explain it here in the interest of everyone's time. Every dog has an owner, and so long as the dog exists, the owner must also exist, but not the other way around, so owners can be dogless and still exist. While we don't allow for dogs to be created without a valid owner, it is possible to change the ownership afterwards. If the edit requests for dog with ID 2 to be owned by owner with ID 3, obviously the original owner with ID 1 now needs to disown the dog, followed by owner with ID 3 taking over the dog instead. In case you're still confused, 3 entities have been edited at this point, 2 owners 1 dog.
189 (other comment)
You might want to go to Settings > Editor > General > On save, and enable Ensure every saved file ends with a line break
, can prevent future CI from failing.
190 (other comment)
that EOL thing is really quite annoying, can refer to anli's pull request where I detailed the instructions to make the ide add the extra line at the end of every file
191 (other comment)
do you want to split this PR into 2 though? like it is easier for someone else to just merge your README updates separately, plus adding the mockup image first also allow everyone to get a copy from master faster
192 (other comment)
Quick question, do you intend to do the formatting now or just leaving it in this state? Because as you are the first to completely rewrite the user guide, this will set the precedence for others.
193 (other comment)
Also, you might want to create an issue and assign it to yourself for this.
194 (other comment)
You need to rename the image itself too!
195 (other comment)
Duplicate of #51
196 (other comment)
You might want to install the checkstyle plugin on intellij and run it locally before committing. Another way is to run them using the command line via gradle like what the course material mentioned, which I will not repeat here. There are two advantages to this, firstly you get feedback faster, since it is much quicker to run locally than for the CI to return its results, next several of us are watching this repo, each pull request and separate commits pushed to a PR will generate notifications/email for everyone subscribed, reducing unnecessary notifications will be helpful for everyone.
Another thing I've noticed is that intellij files are seeping in, i.e. src/.idea
, by right .gitignore
is configured to not add these files, you might want to check your setup to ensure that the excluded files are indeed excluded, else your future PR might still have the same issues.
197 (other comment)
Merged #110 instead.
198 (other comment)
Kindly sync your master with the team repo and rebase this branch on top of the latest master, dropping the merge commits along the way as well. The current state of the PR has both unnecessary and also wrong changes.
199 (other comment)
If you look at the commits you're trying to merge, there's 5, only the last 2 are really relevant. The merge commits when you merge master into this branch can very easily clutter up the commit history, making it hard to find bugs later on. If you do not want to rebase, try to avoid merging unless you need to resolve conflicts. Otherwise, a rebase is a good idea to keep the git history linear. I will elaborate on the problematic code in the review.
200 (other comment)
you need to fix your git history, you're recommitting past commits and changing the git history. it will cause trouble for the reposense tracking
201 (other comment)
@branzuelajohn after merging this you should be able to rebase your branch on top of it and be able to merge #137
202 (other comment)
It is unnecessary to update the undo feature related DG and UML, we are not implementing it nor are we keeping those sections.
203 (other comment)
I think some of my feedback for the previous attempt at writing test still stands, like the typical addressbook ideally should be combined as one since there's no benefit to having 3 that's hard to maintain, I do see some effort made to refactor some tests, but some generics are not written correctly. Furthermore, I think while most of the edit implementation can be attributed to you, kindly exclude the edit program ones as you initially only implemented edit owner and edit dog partially.
204 (other comment)
It would be good the break up your commits into several commits that each does a specific change, this way it is easier to see what each one does and also pick out part of it to merge first if necessary.
205 (other comment)
Do you mean combining the TypicalDogs, TypicalOwners and TypicalPrograms into TypicalAddressBook?
Yes, more like TypicalDatabase
after Anli did the rename.
206 (other comment)
Although we are not implementing it, I juz changed it to Pawbook for all those diagram so it fits in unless you want to remove. Coz for those parts that we are not implementing is written as address book. This will make it neater.
Yup, I rather you remove them than to merge extra diagrams and whatnot. Do just amend your previous commit so everyone won't need to download diagrams that has already been removed.
207 (other comment)
Can you merge this first? I'll make the changes for the typical addressbook thing in the next PR
Sure.
208 (other comment)
Some of the images that are no longer referenced are being edited and instead of removed.
209 (other comment)
If you look properly, the addressbook in the uml diagram is changed to pawbook.
If you look properly at my previous reply, I was referring to puml files not updated while the PNG files are updated. And if you look properly at your commits, you didn't include the updated puml files 😃
210 (other comment)
This is a non-issue, we need to update the documentation to reflect that only upcoming timeslots will be shown
211 (other comment)
This can be considered to be fixed, perhaps in the date validation portion.
212 (other comment)
@branzuelajohn might want to look into this, along with the possibility to use tabs to select also, if it is difficult to make this feature conform to usual CLI behaviours, we might need to take it out.
213 (other comment)
The rationale behind requiring the entity type for delete is that delete is a dangerous and irreversible change, hence it is one of the safeguards to ensure that the correct entity type is deleted. Whereas for command like view this precaution is largely unnecessary since it is a read-only operation.
214 (other comment)
We need to relax the condition of the equals check to resolve this, trivial fix. Might need to look into the various entities as well.
215 (other comment)
I don't think it is necessarily a bug, since some programs might be concurrent due to how training works and perhaps there's a continuous rotation between 2 or more programs
216 (other comment)
Not too sure if this is necessary, this has got to do with GUI design.
217 (other comment)
I would think that this is a invalid bug since it is not necessary that a name must not be numeric, especially for programs which sometimes has a codename that is purely numbers.
218 (other comment)
Cannot reproduce for now, needs further information from author.
219 (other comment)
I think we need to make session optional as well.
220 (other comment)
I feel that this doesn't need fixing, since we support arbitrary length phone numbers it is a feature rather than a bug. As the world population increase, we may need to constantly lengthen phone numbers so there isn't a point in limiting it in the first place, unless we are indeed validating that the phone number belongs to a real user.
221 (other comment)
Able to reproduce this, the issue is that delete command retrieves the entity manually from the filtered list, which is a mistake. The solution here could be to use the unfiltered list instead, however, there are already ways to retrieve an entity directly using its ID, that method should be used instead, similar to how edit is done.
222 (other comment)
to be fixed together with #303
223 (other comment)
This is similar to #287, probably need to update the documentation to state that we are only showing the upcoming timeslots, and at the same time display "none" if there isn't any.
224 (other comment)
This is a documentation bug, not a functionality bug
225 (other comment)
I suggest we stop using brackets, it is confusing and always inconsistent, let's just switch to using colours instead.
226 (other comment)
This has a simple fix, date validation currently uses the parser directly, we just need to convert it back to string to see if it still matches to avoid all the silent rounding.
227 (other comment)
Duplicate of #289
228 (other comment)
We need to do away with storing the sex as a string, store as a enum instead.
229 (other comment)
Poor phrasing here, the words after "and" should all be removed. Where the ID is located should be explained through a screenshot, not using confusing words.
230 (other comment)
This is a duplicate of #315, it should have been more generally phrased as M and Male are actually the same but is different to the application.
231 (other comment)
Similar to #291, we need to reintroduce the isSameEntity method for proper checks.
232 (other comment)
Similar to #291 and #318
233 (other comment)
while constraints of the tag need to be defined, the first half of this report is unnecessary, the second half shouldn't even be a bug report on its own either.
234 (other comment)
same as #288, another person who doesn't like to give chance to time-travellers
235 (other comment)
In this case it is hard to quantify what exactly is a valid home address, for some place, only the postal code is necessary, hence an address consisting of only numbers will work, if address must contain letters from the alphabet then it will become a bug for those cases.
236 (other comment)
Rejecting for the same reason as #294
237 (other comment)
Repeat of #287 and #306
238 (other comment)
I think this is common sense, and that I think it is safe to say that no one will recognise 99:96 as a valid format for the time of the day, it is more likely to be the score of a basketball match. Thus this is wrong format also, the letters themselves already carry additional constraints with them on what numbers fit and what doesn't. Format is not simply about the numbers or else we won't have used letters as placeholders.
239 (other comment)
This is invalid because a program timing could be added retroactively, and even without that assumption, enforcing such constraints is not feasible since the actual json file can be edited and there is no way to determine if the rule holds when restoring. That means the user can still bypass these checks under the current design.
240 (other comment)
The severity is at most low...
241 (other comment)
Marking as invalid until reporter provides steps to reproduce.
242 (other comment)
Duplicate of #291, #292, #318, #319
243 (other comment)
Should be same as #298 and #304
244 (other comment)
This is purely cosmetic as the message still gets the point across.
245 (other comment)
Perhaps we should highlight more clearly that it is an ID not index, and that by default everything is listed.
246 (other comment)
It's a some people want to eat apple, some prefers pear problem. There is no single way to satisfy everyone.
247 (other comment)
There's nothing we can do about a user who doesn't read right?
248 (other comment)
No concrete steps given to reproduce bug, marking as invalid until reporter provides more info.
249 (other comment)
we need to state the fact that all tags will be overridden in the UG
250 (other comment)
The list owner/dog/program commands exists for a reason... This guy isn't reading
251 (other comment)
At the same time we can state the constraints of tags in the UG to be an alphanumeric string
252 (other comment)
Can you drop commit 26621e2
? Otherwise everything looks good.
253 (other comment)
I don't know what you meant by rebase either, it is too vague. There are 2 types of rebase, one that changes the root commit of the branch, i.e. the point whereby the branch branched off, and another is interactive rebase, where you can change the history of the commits through a variety of options like rearranging them, squashing them aka combining, or dropping some commits, which is what you want to do. What you have done seemed like neither of them, since both will rewrite the commit history and require a force push which evidently isn't present here. From what I can tell, it seems like is you have cherry-picked an irrelevant commit from @ZhangAnli that's already in the master branch into your current branch. Give it a shot to find out how to correct your git history, what you need here is an interactive rebase, in which case you can also take the time to edit the commit that you deleted docs/images/EditCommandScreenshot2.png
and undo the deletion such that there is no longer a merge conflict. While I can perform these operations for you, I don't want to take away the learning opportunity from you by directly modifying your branch.
254 (other comment)
I like the colour change, but it doesn't seem like the issue has been resolved. I think what users expect is that the suggestions isn't selected unless arrow keys or tab is used to trigger the selection, then without those keypresses, the enter key will work for the command box directly, so commands like list
and exit
only need to press once without dismissing the suggestions.
255 (other comment)
The help window still isn't big enough, especially the Format column needs to be wider, such that there's no longer ellipsis at the back.
256 (other comment)
If you want to work on the program right, I suggest following the Owner and Dog closely, even the examples should be similar, so there's "Program A", "Program B" etc, some will be manually added into the database while some are part of the typical database, if you notice the way that the OwnerTest and DogTest are written, most of the comparisons are actually between one that is within the typical list while another is from the manually added ones, preferably the new tests also follows the same to keep things consistent. The typical database will come in really handy when writing the delete tests, since some parts of the test will spillover into the delete dog portion to ensure that the dog ids are no longer within the enrolled programs.
257 (other comment)
I forgot another issue I want to bring up, while writing test case will let us discover bugs, it doesn't always mean that something that doesn't work with your test case is wrong, it might be that your test case is written wrongly in the first place, before modifying the functional code, please double check or even do some manual testing to see if the bug can be replicated to confirm that the behaviour is wrong...
258 (other comment)
To save you the hassle, the mistake you've made is forgetting to delete the dog ID its owner. ---- On Fri, 09 Apr 2021 18:52:41 +0800 @.*** wrote ---- Made those changes! Just that after restoring the execute() there's one test case failing in editDogCommandTest which I have commented out. I need your help for that, I have tested the database.equals(other.database) in equals() of ModelManager is failing. I tried printing it, the database is exactly the same object but it fails...
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.
259 (other comment)
It's fine, breaking down PR is for every PR to serve a single purpose, I rather not have a single PR for every "minor change" or "some change" that you have made. This PR dragged long enough that a little while longer won't hurt ---- On Fri, 09 Apr 2021 18:54:45 +0800 @.*** wrote ---- Also, is possible to merge this PR? coz it's getting bigger
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.
@ivantjh
(139 comments)1 (commented on others PR)
Remove empty space on new line >_>
2 (commented on others PR)
Formatting!
3 (commented on others PR)
Swap the parameters to be consistent with the rest of the assertEquals
4 (commented on others PR)
nitpick: that
should be named other
iirc
5 (commented on others PR)
No need else clause here. Can reduce the indentation level.
6 (commented on others PR)
Its not exactly a nameString
. Rename to searchString
7 (commented on others PR)
Got better name? I think calling it anniversary
would feel better other than date
.
8 (commented on others PR)
return time == null
, no need to store another instance variable.
9 (commented on others PR)
Can just check using time == null
10 (commented on others PR)
No space between Event
and (
11 (commented on others PR)
nitpick: no need else
clause, just return
12 (commented on others PR)
Style violation, supposed to be 8 spaces from the preceding line.
13 (commented on others PR)
I think better to store as LocalDate
. Can use #41 dateUtil
to make it easy.
14 (commented on others PR)
Use DateUtil.fromDateInput(...)
to get back a LocalDate
. Use that to create Birthday
. This will not change the tests that were already written.
15 (commented on others PR)
Wrong comment. Should be {@code Birthday}
16 (commented on others PR)
Probably can do the dateUtil
parsing here too
17 (commented on others PR)
Yes, we should still do it. I added some comments to the test files. Essentially, when we create the test objects, we parse the dateStr
to a LocalDate
using the util methods. i.e. withBirthday(...)
takes in a dateStr
, parses that string and returns a new Birthday
with a LocalDate
in it.
18 (commented on others PR)
I think this should be in the present tense. if they are not in it
19 (commented on others PR)
Can be shortened to
return Arrays.stream(arr)
.map(ParserUtil::parseIndex)
.collect(Collectors.toList());
20 (commented on others PR)
I think there should be a space between the arrow heads. updateFilteredPersonList(x -> group.getPersons().contains(x))
21 (commented on others PR)
Wrong indentation, change intellij settings
22 (commented on others PR)
Having a parameter here is out of the norm. Can add a comment here saying that it requires the actual personList serialised from the persons
json file?
23 (commented on others PR)
Multi-line for readability. I think the lambda has a spaces enclosing the arrowhead.
24 (commented on others PR)
Not optional parameter. This line should be + PREFIX_INDEX + "INDEX"\n
25 (commented on others PR)
Should we have the command name be del-date
? Easier to type a shorter command
26 (commented on others PR)
I think this could be better.
LocalDate xRelative = x.compareTo(now) < 0 ? x.plusYears(1) : x;
LocalDate yRelative = y.compareTo(now) < 0 ? y.plusYears(1) : y;
return xRelative.compareTo(yRelative);
27 (commented on others PR)
Can we have date.setText(personEvent.toUi())
? Makes it easy to test the formatting later on
28 (commented on others PR)
We should store the localDate
here instead of taking only the day and month. Easy to change formatting later on.
29 (commented on others PR)
Should have a toUi
method here to do the formatting using the LocalDate
formatter methods.
30 (commented on others PR)
PersonEvent
should have no knowledge of Birthday
and Event
classes, put these two helper methods in their respective methods. They could be named toUi()
too.
31 (commented on others PR)
So for here, it will just be person.getDates().forEach(event -> personEvents.add(new PersonEvent(event.getDate(), person, event.toUi())
32 (commented on others PR)
person.getBirthday().getBirthday()
is very strange >_>. Can rename to the last getBirthday()
method to getDate()
?
33 (commented on others PR)
Rename to getDate()
34 (commented on others PR)
Ok, got it. Lets leave it here first
35 (commented on others PR)
👍
36 (commented on others PR)
Is this still temporary?
37 (commented on others PR)
Should this be date.toUi()
?
38 (commented on others PR)
Possible to create another component to store the profile picture? The same code is used in PersonDetailsCard
and PersonCard
.
39 (commented on others PR)
I think you have to write the b/
prefix stands for. I think we can leave birthday there. Users should know to supply a date
from the examples below.
40 (commented on others PR)
Would this be better? Can optionally provide a group name to list all friends in that group
41 (commented on others PR)
I think we should still put Birthday here
42 (commented on others PR)
Would be good to write docs on the specifics for Event
and Picture
as it is not clearly shown in the class diagram. Like the multiplicity of Person to Event (1 to *) and multiplicity of Person to Picture (1 to 0..1)
43 (commented on others PR)
I think would be good to document something the rationale for this
44 (commented on others PR)
Ok, btw I was talking about the usage of a single Person
in the detailedPerson
observable list. That one probably need to document the rationale for it.
45 (commented on others PR)
Can just do static import, then it will look like private final Frequency frequency
46 (commented on others PR)
Should use static import
47 (commented on others PR)
This runs goal.getNext()
with the lastest meeting date? If it is, should probably write.
Date latestMeetingDate = meetings.stream()
.map(Event::getDate)
.filter(x -> x.isBefore(date)
.max(LocalDate::compareTo)
.orElse(DateUtil.ZERO_DAY);
return goal.getNext(latestMeetingDate);
48 (commented on others PR)
Need follow the style guide, don't use this
in instance methods if there is no need to. Link here
49 (commented on others PR)
I don't think method name is clear enough. getNextMeetingCutoff
would be better. Open to suggestions too!
50 (commented on others PR)
Can we encapsulate the ENUM_MAP
so we could change implementation later on? Goal.isValidFrequencyString(frequencyString)
would be a better API
51 (commented on others PR)
Same for this. Goal.getFrequency(frequencyString)
would probably be better.
52 (commented on others PR)
Another way would be to convert into one method Goal.parseFrequency(frequencyString)
that throws an exception if the frequencyString
is invalid. I would prefer this as it would reduce the API exposed from Goal
.
53 (commented on others PR)
Should use Frequency frequency
here
54 (commented on others PR)
String frequencyStr = argMultimap.getValue(PREFIX_FREQUENCY).orElse("n")
frequency = ParserUtil.parseFrequency(frequencyStr)
55 (commented on others PR)
The parseException
from ParserUtil.parseFrequency(...)
not caught here >_>
56 (commented on others PR)
Goal.fromGoalString(goal.toLowerCase(Locale.ROOT)
would be better. Can hide ENUM_MAP
57 (commented on others PR)
person.getGoal().isNoneFrequency()
would be better. Can hide the implementation away from UI
58 (commented on others PR)
👍
59 (commented on others PR)
Format: set-goal INDEX f/FREQUENCY
can just use back ticks.
60 (commented on others PR)
Where is the new ThemeCommandSequenceDiagram.png
?
61 (commented on others PR)
Oops, my bad.
62 (commented on others PR)
This looks really weird. I think it would be better to just have two separate commands and parsers for add-debt
and subtract-debt
.
63 (commented on others PR)
Should have two different commands for add-debt
and subtract-debt
64 (commented on others PR)
No need to have conditionals here if have two separate commands
65 (commented on others PR)
What if negative value?
66 (commented on others PR)
I think u are missing the formatter for 2dp. Need to pad with zeros for 2dp if float has only a single dp
67 (commented on others PR)
Can we follow the order for initialisation according to the data fields order declared above?
public Person(Name name, Phone phone, Email email, Birthday birthday, Address address, Picture picture,
Debt debt, Set<Tag> tags, List<Event> dates, List<Event> meetings)
68 (commented on others PR)
Follow attributes order
69 (commented on others PR)
😢 inconsistent ordering from Person.java
for attribute order
70 (commented on others PR)
Shouldn't debt
be after picture
following the order from Person.java
71 (commented on others PR)
Negative debt is valid? 👀
72 (commented on others PR)
Should follow test method names for here, add()
and subtract()
command below
73 (commented on others PR)
Shouldn't this debt
be below picture
74 (commented on others PR)
Debt probably has to be formatted with $
sign and 2 dp. Could do debt.setText("Debt: " + person.getDebt().toUi())
75 (commented on others PR)
toString()
could be used for debugging etc
76 (commented on others PR)
Ok, got it! I think better document it here because it is weird that only the ChangeDebtParser
takes in a boolean.
77 (commented on others PR)
Ahh, the constructor of Debt
rejects the init.
78 (commented on others PR)
Ok! Should document that you can record negative debt in Debt
class to signify that the user of FriendDex owes money to the person instead.
79 (commented on others PR)
Can add a TODO
comment here so we can refactor this if got time? The rest looks ok!
80 (commented on others PR)
nitpick: should add a new line here for readability.
81 (commented on others PR)
Newline here for readability.
82 (commented on others PR)
Do static import here
83 (commented on others PR)
This is to account for the meeting added today? Write comment above saying that the latestMeetingDate
includes today
84 (commented on others PR)
Need remove
85 (commented on others PR)
nitpick: Use p
in the lambda perhaps, much more related to person
than x
86 (commented on others PR)
Same for here p -> group.getPersonNames().contains(p)
87 (commented on others PR)
New line here
88 (commented on others PR)
New line here
89 (commented on others PR)
style: should have space before and after the ->
90 (commented on others PR)
Will the model.getDetailedPerson()
be emptied out when switching to other panels?
91 (commented on others PR)
i.e. will the list
be empty if the app is not showing the detailedPerson view?
92 (commented on others PR)
Ok got it
93 (commented on others PR)
Arrays.asList(new String[] {"w", "week", "weekly"})
shorter line to convert to List
94 (commented on others PR)
Use static import for the whole file, will be more readable
95 (commented on others PR)
You should test something other than NONE
since the default value is NONE
96 (commented on others PR)
Why are we removing this? This seems valid.
97 (commented on others PR)
Actually don't have to clone right?
98 (commented on others PR)
Just rename all aliceCopy
to ALICE
, shouldn't need to copy here
99 (commented on others PR)
.withMeetings(Collections.emptyList())
would be better
100 (commented on others PR)
Can shift this to PersonTest
because getTypicalMeetings()
feels like I am retrieving all the meetings from TypicalMeetings
but that is not the case here.
101 (commented on others PR)
When would index
be null?
102 (commented on others PR)
You should create another method on Goal
class that abstracts this out. Maybe name it toUi()
or something
103 (commented on others PR)
Use static imports for WEEKLY
104 (commented on others PR)
Differentiate the magic numbers for jpg
and jpeg
105 (commented on others PR)
Can rename to MESSAGE_INVALID_FILE_SIGNATURE
for clarity.
106 (commented on others PR)
Better add in a comment saying that null bytes in magic numbers are like wildcards and can take on any values
107 (commented on others PR)
JavaDocs incomplete. Need newline between param and method doc
108 (commented on others PR)
"an integer with MSB set."
109 (commented on others PR)
New line here for JavaDoc
110 (commented on others PR)
Can you add in the isValidImage
check here also? I think this is check is used when deserialising from the json data file.
111 (commented on others PR)
Very nice tests!
112 (commented on others PR)
Ooo, the magic numbers for them are the same? I think better to write which subclass are u targeting for each magic number.
113 (commented on others PR)
"set MSB" is just the most significant bit flipped to 1 right? If that is the correct terminology, then I am okay with it.
114 (commented on others PR)
Yeap, u can do that too
115 (commented on others PR)
nitpick: can we standardise whether to leave a new line here and keep it the same throughout the UI components?
116 (commented on others PR)
nitpick: lets keep it consistent with the other UI components and leave a new line here
117 (commented on others PR)
Ok, thats great!
118 (commented on others PR)
Singleton pattern? Better write in this class that ThemeManager
is a singeleton.
119 (commented on others PR)
Write that after execution of this method, the personNameToDelete
is guaranteed to be not in the group. Also add some note saying that no exceptions will be thrown.
120 (commented on others PR)
Document behaviour here also -> that the personToDelete
is guaranteed to be removed from all groups.
121 (commented on others PR)
nit: instance of the {@code person} with given {@code name}.
No need the in this group
portion.
122 (commented on others PR)
Can add the markup portion here for CS2101? We wrote this here because it was in the sample UG
123 (commented on others PR)
There should be a new line here
124 (commented on others PR)
Two "Updates"
125 (commented on others PR)
typo: "The Friend Panel gets list of all the"
126 (commented on others PR)
Same typo
127 (commented on others PR)
Can we add something here saying that the names are case-insensitive
128 (commented on others PR)
Can we use something other than emojis for the invalid email because I am not sure whether emojis in emails will be allowed in the future or something
129 (commented on others PR)
Can add a line to UG saying that names will be rejected if any emojis are found in it.
130 (commented on others PR)
Should this be without?
131 (commented on others PR)
Don't use wilful, use intentional
, easier to understand. Also add the rationale for violating
132 (commented on others PR)
Simplify to English for the format portion, nobody will understand the brackets and asterisk. Emails should be of the format "local-part@label". Multiple labels can follow after provided that they are prefixed with a single period.
133 (commented on others PR)
typo: "example".repeat(100)
.
134 (commented on others PR)
Can add in "Names are case-insensitive in FriendDex. This means that FriendDex interprets "John Doe" and "JoHn DoE" as the same name."
135 (commented on others PR)
Can add in "It is okay for two friends to share the same address. They could be siblings stored in FriendDex."
136 (commented on others PR)
Can we switch the definition for positive and negative debt. I feel it is more intuitive this way but let me know if you think otherwise.
137 (commented on others PR)
Test positive boundaries also
138 (commented on others PR)
assertTrue(Debt.isValidDebt("..."))
139 (commented on others PR)
Maybe can create a function to abstract the checking out? E.g. isDebtOutOfRange(newDebt)
, could be created in Debt
class as a static method
140 (commented on own PR)
Person is still immutable, the setters are not changing the Person itself. Will change it to withDates
instead of setDates
because the set
prefix is commonly associated with mutability.
141 (commented on own PR)
This should work for asdf.tar.gz
. .gz
will be extracted from the function and validated.
142 (commented on own PR)
I think its ok here because we are deleting the filePath
of a picture.
143 (commented on own PR)
Nope, this is still used when the Person
being initialised has no meetings and no dates.
144 (commented on own PR)
yeap, my bad
145 (commented on own PR)
👍 too late alr
146 (commented on own PR)
Will add as an issue first!
147 (commented on own PR)
Yeap done
148 (commented on own PR)
LOL, i just realised it too.
149 (commented on own PR)
Yeap, it will be added. Adding meetings will always increase the streak if the meeting is qualified to be counted, i.e. in the same period of the first meeting that starts the streak up till today.
150 (commented on own PR)
I will leave the explicit consecutive times out because technically any valid meetings will still add on to the streak if it is in the correct time period.
151 (commented on own PR)
Quite hard to abstract this method because of circular dependencies. I am using this.toString()
in this method.
Lets say if I create something like this to abstract:
/**
* This factory allows the creation of IllegalValueExceptions with inbuilt logging. We assume that everytime
* a class uses this factory to create an exception, that exception will be thrown and so we log. This factory
* should only be used for throwing IllegalValueExceptions for errors found during json deserialization.
*/
public class JsonExceptionFactory {
private final Logger logger;
private final String clazzName;
private final Object object;
public <T> JsonExceptionFactory(Class<T> clazz, String clazzToDeserialize, Object objectToDump) {
logger = LogsCenter.getLogger(clazz);
clazzName = clazzToDeserialize;
object = objectToDump;
}
public IllegalValueException build(String message) {
logger.warning(String.format(MESSAGE_DESERIALIZE_ERROR_DUMP_DATA, clazzName));
logger.warning(object.toString());
return new IllegalValueException(message);
}
}
In JsonAdaptedPerson.java
:
// ...
private final JsonExceptionFactory exceptionFactory = new
JsonExceptionFactory(JsonAdaptedPerson.class, "Person", this);
// ...
throw exceptionFactory.build(String.format(MISSING_FIELD_MESSAGE_FORMAT,
Name.class.getSimpleName()));
Will have circular dependency because JsonAdaptedPerson
owns JsonExceptionFactory
owns JsonAdaptedPerson
, to put it simply JsonAdaptedPerson
-> JsonExceptionFactory
-> JsonAdaptedPerson
152 (commented on own PR)
Will further consider abstracting it out if it becomes easier.
153 (other comment)
Lgtm!
154 (other comment)
Would be good for Event
to use a LocalDate
instead of String
to represent date.
155 (other comment)
#41 fixes this
156 (other comment)
According to the updated image, the help
command doesn't show a popup? I was expecting something like this with the new url.
157 (other comment)
Fixed with #97 and #98
158 (other comment)
Yeap, that's correct. I think you can think of it as weekly homework. If I were to complete my weekly homework on Monday when it is supposed to be due on Friday, I don't want the following week's homework deadline to be shifted to next Monday.
159 (other comment)
Fixed by #119
160 (other comment)
Fixed by #134
161 (other comment)
Add test to confirm error message so it won't happen again next time!
162 (other comment)
This is correct, just need update docs.
163 (other comment)
Intended, just need to document
164 (other comment)
Intended, just need to update docs
165 (other comment)
Intended, just update docs
166 (other comment)
Fixed in v1.3.1
167 (other comment)
Fixed in v1.3.1
168 (other comment)
Fixed in v1.3.1
169 (other comment)
Fixed in v1.3.1
170 (other comment)
Can't fix this as the app will detect add
as the command word. Not much that we can do.
171 (other comment)
Leap day happens on 29th Feb, not 28th Feb...
172 (other comment)
You can also try providing more examples on how the regex should work. Probably will help the user understand better.
173 (other comment)
How did u manage to solve the error ah?
174 (other comment)
Ohh ok
175 (other comment)
Should AddCommand
always return to the all person view? Should DeleteCommand
still stick to the groups view?
176 (other comment)
https://github.com/AY2021S2-CS2103T-W14-1/tp/pull/221#issuecomment-814739957 Ok thanks for the reply
177 (other comment)
Remember to handle the case where the deleted person is the only person in the group. What should happen to the group then?
178 (other comment)
Remember to check that del-date
command will still work as intended
179 (other comment)
Nope, its quite close to the submission date so I would prefer not to change all the names at one go. The interface of userPrefs
will still work as per normal and I think we are all used to calling the internal structure that stores Person
as addressBook
.
180 (other comment)
UG portion is done from #216
@benedictkhoomw
(137 comments)1 (commented on others PR)
Code Quality sounds more like a responsibility. You could put "Developer, VS Code Expert" for your role.
2 (commented on others PR)
Should these @return
and @param aliasName
have descriptions?
There are similar cases in this and other files.
3 (commented on others PR)
Missing method comment?
4 (commented on others PR)
These look like they shouldn't be here.
5 (commented on others PR)
These look like they shouldn't be here.
6 (commented on others PR)
Are these missing JavaDocs?
7 (commented on others PR)
Is this missing JavaDocs?
8 (commented on others PR)
Is there a link to this source? Also, if you understood and adapted it, consider using
//Solution below adapted from ...
Saw this in a few other files.
9 (commented on others PR)
Should there be a newline between these two methods?
10 (commented on others PR)
Could you add descriptions to these tags or remove them?
11 (commented on others PR)
Could you add descriptions to these tags or remove them?
12 (commented on others PR)
What is object
?
13 (commented on others PR)
Please standardize the javadocs format in future to follow the style guide. Will approve first because it's non-breaking and we should merge soon.
14 (commented on others PR)
Perhaps this could be instead shown as an arrow returning to the user
15 (commented on others PR)
Consider using MODEL_COLOR
instead of LOGIC_COLOR
since this is part of the model component.
16 (commented on others PR)
Should the return arrow be dashed and the activation bar disabled when returning?
17 (commented on others PR)
Perhaps
can then be executed by entering the
Alias
instead of the full or partial command.
should instead be
can then be executed by entering the alias instead of the full or partial command.
because the user is not typing in Alias
but rather the alias that they specified. It's a small semantic point.
18 (commented on others PR)
Are these comments supposed to be here?
19 (commented on others PR)
There may be a missing closing bracket here:
if () then ([all parameters are valid)
20 (commented on others PR)
The tense seems a bit off here.
Maybe this
If the input begins with an existing command word, parses it as one of those pre-defined command.
should be
If the input begins with an existing command word, parse it as one of those pre-defined command.
(italics added). Similarly for the rest of the points.
21 (commented on others PR)
Also consider placing this description above the activity diagram, with a transition to the diagram. E.g.
The following diagram illustrates this flow.
DIAGRAM GOES HERE
22 (commented on others PR)
Consider labeling the arrow returning from UI to user with display commandResult
instead of this:
23 (commented on others PR)
I'm not sure but the new
keyword may not be appropriate in a sequence diagram. Consider this example from the textbook:
24 (commented on others PR)
Maybe change return result
to return commandResult
for consistency with the related return statements below.
25 (commented on others PR)
Should this be an IssueList
?
26 (commented on others PR)
This activity diagram appears to have the condition within the branching diamond. However, this may not meet requirements for this module. Consider moving the branching conditions out of the diamond as guard conditions in square brackets.
27 (commented on others PR)
Agreed. It may also be good to list out pros and cons for each possible implementation.
28 (commented on others PR)
This looks like commented-out code. Was this intended to be here?
29 (commented on others PR)
There may be a typo here. Did you mean something like this?
Checks that room
03-100
is not occupied by anyone.
30 (commented on others PR)
There may be inconsistent tense here.
The problem is reversed if the parent-child roles were swapped.
Maybe this could be changed to either
The problem would be reversed if the parent-child roles were swapped.
or
The problem is reversed if the parent-child roles are swapped.
31 (commented on others PR)
Consider adding a fullstop at the end.
32 (commented on others PR)
It may be good to give a short description on what this example does.
33 (commented on others PR)
It may be good to give a short description on what this example does.
34 (commented on others PR)
Thank you for moving this to its own class. Could you update your PR to close #69?
35 (commented on others PR)
Should there be a blank line between the description and the parameter list? I believe it's in the JavaDocs guide.
Saw this in other files too.
36 (commented on others PR)
Is this class missing JavaDocs?
37 (commented on others PR)
Is this class missing JavaDocs?
38 (commented on others PR)
Perhaps put a @throws NullPointerException ...
since you're using requireAllNonNull
Saw this in other files too.
39 (commented on others PR)
Should there be an @param
tag?
40 (commented on others PR)
It might be good to document this method too, even though it's an overridden method because each command is different.
41 (commented on others PR)
Should there be a blank line between description and parameters?
42 (commented on others PR)
Should there be a blank line between description and parameters?
43 (commented on others PR)
Should there be a blank line between description and parameters?
44 (commented on others PR)
Perhaps the first letter of the parameter description and return description should be capitalized?
That is,
@param aliasName Name of the alias.
@return Whether the name matches the regex pattern.
Saw this in most other files.
45 (commented on others PR)
Is this missing a @param
tag?
46 (commented on others PR)
Is the @param
missing a description of the parameter?
47 (commented on others PR)
Is this missing an @return
tag?
48 (commented on others PR)
Is this missing an @return
tag?
49 (commented on others PR)
Is this missing an @throws NullPointerException
?
50 (commented on others PR)
Should field
be fields
?
51 (commented on others PR)
Should there be a blank line between description and parameters?
52 (commented on others PR)
Is this missing a param
tag?
53 (commented on others PR)
Should there be a blank line between description and other tags?
54 (commented on others PR)
Is this class missing JavaDocs?
55 (commented on others PR)
Perhaps this method should have JavaDocs even though it's an overridden method?
Saw this in other files.
56 (commented on others PR)
Is this missing a param tag?
57 (commented on others PR)
Is this class missing JavaDocs?
58 (commented on others PR)
Should there be a blank line between description and @throws
?
Saw this in other files.
59 (commented on others PR)
Perhaps the first letter of the @
tag description should be capitalized. That is,
@throws NullPointerException If the input is null.
Saw this in most other files.
60 (commented on others PR)
Is the parameter aliasName
missing a description?
61 (commented on others PR)
Is this missing @param
?
62 (commented on others PR)
Is this missing @param
?
63 (commented on others PR)
Is this missing an @throws NullPointerException
?
64 (commented on others PR)
Is this missing an @throws NullPointerException
?
65 (commented on others PR)
Is this missing an @throws NullPointerException
?
66 (commented on others PR)
Should field
be fields
?
67 (commented on others PR)
Should this be a
instead of an
?
68 (commented on others PR)
Oh, then maybe change it to The field must not be null.
69 (commented on others PR)
Should there be a space between the bottom-most import
and the start of the class header?
70 (commented on others PR)
Is this missing JavaDocs?
71 (commented on others PR)
Consider adding JavaDocs to this because it is the key part of a predicate.
72 (commented on others PR)
Are these missing fullstops?
73 (commented on others PR)
Is this missing a fullstop?
74 (commented on others PR)
Maybe change wants
to requests
. Wants
doesn't indicate that the user is performing an action on SunRez.
The use case above (UC-022) has the same thing.
75 (commented on others PR)
Should this be an extension of step 2 instead of step 1?
76 (commented on others PR)
Very minor nit here: Should this be "Deletes the findBob
alias..."?
77 (commented on others PR)
Maybe provide a justification for this user story? It could be asked "what's the benefit of deleting aliases? Just don't use the ones you need anymore."
78 (commented on others PR)
Should this be Example
?
79 (commented on others PR)
Should this be Use case ends.
also? It seems a bit weird that it branches from 3 then goes back to 3.
80 (commented on others PR)
Do you want to specify that the room is unoccupied?
81 (commented on others PR)
Maybe add a fullstop at the end?
82 (commented on others PR)
Perhaps don't include delete as part of the read-only address book.
83 (commented on others PR)
Hmm, could this instead make a copy of alias mappings? Otherwise undo may be more difficult to support.
84 (commented on others PR)
Should it be "... are unique within SunRez"? (no "the"')
85 (commented on others PR)
Hmm, should we state that we are targeting Singapore/NUS? Otherwise this may be a different point of contention.
86 (commented on others PR)
Perhaps add a fullstop?
87 (commented on others PR)
Is this missing a fullstop?
88 (commented on others PR)
Hmm, if you link up this dealloc
, then we might have to link up all other command references.
89 (commented on others PR)
The dealloc
link seems to not work for me.
90 (commented on others PR)
The dealloc
link seems to not work for me.
91 (commented on others PR)
Hmm, if you link up this dealloc
, then we might have to link up all other command references.
92 (commented on others PR)
Should this be a proper description?
93 (commented on others PR)
Maybe change to "Must be one of the following strings ..."
94 (commented on others PR)
Hmm, just in case, maybe make this "A keyword used in the various find commands."
Just in case someone points out that there is no find
command.
95 (commented on others PR)
There seems to be an extra [
here.
96 (commented on others PR)
Does this include the space?
97 (commented on others PR)
Hmm, what do you mean by "Tags will collate ALL tags..."?
98 (commented on others PR)
Should this say "... may reject it based on..."?
99 (commented on others PR)
Maybe something like "On the other hand, all tag parameters specified will be taken. For example, ..."
100 (commented on others PR)
Is this missing a fullstop?
101 (commented on others PR)
Maybe add a bit of text explaining what this diagram shows? When I was reading this section, it seemed to come out of nowhere.
102 (commented on others PR)
On a more general note, if dealloc
isn't a very different command (in terms of execution flow) from regular ones, this sequence diagram may not be strictly necessary.
103 (commented on others PR)
Hmm maybe add a section header for alternatives considered. Check out the Command History section or Room section for ideas.
104 (commented on others PR)
I like the descriptions of the alternatives you gave though.
105 (commented on others PR)
What's this tag for?
106 (commented on others PR)
Is this missing a fullstop, and should it start with a capital letter?
Saw this in Model.java
and AddressBook.java
too.
107 (commented on others PR)
Is this missing a fullstop?
108 (commented on others PR)
Is the spacing here supposed to be 8 spaces instead of 16?
109 (commented on others PR)
Will creating a Resident with a room cause trouble with allocation and deallocation?
110 (commented on others PR)
Hmm why is hashCode()
being deleted?
If it is because it only accounts for residents, then it could be replaced with Objects.hash(...)
as in UserPrefs:
111 (commented on others PR)
Should this
stores the address book data
instead be this?
SunRez data
112 (commented on others PR)
Is this missing a fullstop?
113 (commented on others PR)
Should this
which stores a list of
ReadOnlyAddressBooks
which are the states after each command is executed
instead be this?
which stores a list of
ReadOnlyAddressBook
objects, each representing a state after a state-changing command is executed.
114 (commented on others PR)
Missing fullstop?
115 (commented on others PR)
Might this be better phrased as
track room issues and their status
116 (commented on others PR)
Hmm,
search for issues
seems to be repeated.
117 (commented on others PR)
How about
ensure issues have the latest and correct information
118 (commented on others PR)
Is this user story still relevant?
see both available rooms and unassigned residents side by side
119 (commented on others PR)
Maybe indicate that this test case continues from step 2.
120 (commented on others PR)
Missing fullstop?
121 (commented on others PR)
Hmm maybe specify the prerequisite of there being no existing resident called John Doe
.
122 (commented on others PR)
Consider adding another prerequisite of Jane Doe
not already existing
123 (commented on others PR)
Consider adding the other constraints that must be satisfied before a resident is deleted. E.g. the resident is not allocated to any room.
124 (commented on others PR)
Wait, does rulist
further filter down the existing list of displayed residents? If not, then maybe change "There is at least 1 resident displayed" to "At least 1 resident exists..."
125 (commented on others PR)
All unallocated residents?
126 (commented on others PR)
Maybe "Residents whose names have words fully matching..."
127 (commented on others PR)
This could be misinterpreted as 1 allocated resident in any position. It might fail if the first resident listed is not allocated but the second is.
128 (commented on others PR)
Hmm, this seems like it has too much detail about the implementation.
Suggestion: remove the stuff about index and list displayed. Keep it high level like UC-019.
129 (commented on others PR)
Minor grammar nit:
This include both issues...
Suggestion:
This includes both issues...
Saw this in a few points below also.
130 (commented on others PR)
Hmm what does history a d/ABCDEF
mean here?
131 (commented on others PR)
Maybe add a >br>
on the previous line so that Expected: ...
is always on its own line.
Saw this in several other places too.
132 (commented on others PR)
Is this missing a fullstop?
Must not be empty
133 (commented on others PR)
Are these missing fullstops?
Saw this in other entries below too.
134 (commented on others PR)
May want to standardize to either
digit
or
digits
135 (commented on others PR)
Should E.g
be E.g.
?
Saw this in other places. If you make the change, consider doing a search for e.g
136 (commented on others PR)
Missing fullstop?
137 (commented on others PR)
but there are only 10 residents
Maybe change this to
but there are only 6 residents
to better match the image that follows.
138 (commented on own PR)
Good catch, thanks.
139 (commented on own PR)
Hmm good point. An optional frame might suggest that a command being unsuccessful is the "happy path". My original intention was to convey the fact that unsuccessful commands will not be recorded in the command history, but I guess an activity diagram or a note in the sequence diagram might be more appropriate.
Thank you, I will consider this suggestion seriously for a future update.
140 (commented on own PR)
Thanks, added.
141 (commented on own PR)
Thanks, added.
142 (commented on own PR)
Yup, there are above-upper-bound and below-lower-bound test cases.
143 (commented on own PR)
Ah good point. Thanks.
144 (other comment)
Hi Colin, could you re-open this PR to the upstream master branch to follow the forking workflow?
145 (other comment)
As agreed in our team meeting, we will be splitting work by feature, not component.
146 (other comment)
As agreed in our team meeting, we will be splitting work by feature, not component.
147 (other comment)
As agreed in our team meeting, we will be splitting work by feature, not component.
148 (other comment)
Closed in #63
149 (other comment)
Closed because no longer relevant
150 (other comment)
Closed because no longer relevant
151 (other comment)
Closed because no longer relevant
152 (other comment)
We may want to break this up into at least 5 separate issues since each member is expected to update the DG. That way, each member can close the relevant issue when they are done with their part.
Further, I suggest we break up DG update issues by feature, rather than by team member because a DG update per feature seems like a more correctly-sized unit of work than a DG update per team member or one monolithic update consisting of everyone's updates.
153 (other comment)
I would like to discuss if the command history should also include failed commands. I think there is merit to mimic the same behaviour where the invalid command can be access via up and down arrow keys so that a Power User can edit the invalid command rather than retype it all.
If we do go down this path, I think a possible implementation is that each history entry will keep a field to keep the corresponding command used. Thus, if the field is null, it indicates an invalid command, otherwise it indicates a valid command.
Hmm, thanks for the suggestion. SunRez currently does not consume the user's input when a command is invalid, so a power user can already edit an invalid command easily.
154 (other comment)
Split into 5 separate issues that can be closed individually by each member.
155 (other comment)
Okay sure, thanks.
156 (other comment)
Will resolve this when our UI is finalized.
157 (other comment)
Could you merge master in and make sure the conflicts are resolved so that we don't have any unexpected surprises, and another pair of eyes can double-check it the merge to ensure we don't lose any info.
Done. Thanks for your comment.
158 (other comment)
Hmm, if that is the case, then I think narrowing the valid formats would be better. i.e. MM dd hh (enforce double digits always)
I agree. Do you want to update the timestamp pattern? E.g. to make month MM
instead of M
?
159 (other comment)
Broke into smaller issues.
160 (other comment)
Team decision: style it as in the former case.
Closed because individual team members will open their own issues if they need to.
@w2vgd
(131 comments)1 (commented on others PR)
Should we use the actual website links instead of the link to the markdown file?
2 (commented on others PR)
Should there be a corresponding w-yuchen.png
image uploaded as well?
3 (commented on others PR)
Should there be 2 formats for the sort command as well?
4 (commented on others PR)
Perhaps this should be updated too
5 (commented on others PR)
Should this be left out because the use cases are supposed to show only what the user can see?
6 (commented on others PR)
Similar to the previous comment
7 (commented on others PR)
I guess this is down to the implementation already.
Will you want to
execute the edit command even if there are erroneous fields or
abort the whole command entirely and show an error?
8 (commented on others PR)
The add command follows number 2 for now.
Good point raised, we can follow up on this discussion about which format we want with the other team members.
9 (commented on others PR)
I think this may have been left out by mistake
10 (commented on others PR)
Rmb to update this javadoc
11 (commented on others PR)
I think this may be removed as it is handled above
12 (commented on others PR)
All the EditPropertyCommand.EditPropertyDescriptor
can be simplified to just EditPropertyDescriptor
since EditPropertyDescriptor
is an inner class of EditPropertyCommand
13 (commented on others PR)
Perhaps this should be removed
14 (commented on others PR)
Remember to update all the javadocs too
15 (commented on others PR)
Maybe can do a import seedu.address.logic.commands.EditPropertyCommand.EditPropertyDescriptor;
on top so that you can directly use EditPropertyDescriptor
instead of the whole verbose type
16 (commented on others PR)
Rmb to change this javadoc
17 (commented on others PR)
Rmb to update this variable name
18 (commented on others PR)
Rmb to update this variable name
19 (commented on others PR)
Rmb to update this javadoc
20 (commented on others PR)
Rmb to update this javadoc
21 (commented on others PR)
Rmb to update this javadoc
22 (commented on others PR)
Rmb to update this javadoc
23 (commented on others PR)
Rmb to update this javadoc
24 (commented on others PR)
Rmb to update this javadoc
25 (commented on others PR)
Rmb to update this javadoc
26 (commented on others PR)
Rmb to update this javadoc
27 (commented on others PR)
Should the message_usage be from FindPropertyCommand
instead?
28 (commented on others PR)
Rmb to update this javadoc
29 (commented on others PR)
Rmb to update this javadoc
30 (commented on others PR)
Should this description should include the appointments also?
31 (commented on others PR)
Perhaps this part should be under the switch clause instead
32 (commented on others PR)
Should this two be getTypicalAppointmentBook()
instead?
33 (commented on others PR)
Should this two be getTypicalPropertytBook()
instead?
34 (commented on others PR)
Should this two be getTypicalAppointmentBook()
instead?
35 (commented on others PR)
Should this two be getTypicalPropertyBook()
instead?
36 (commented on others PR)
Ok thanks
37 (commented on others PR)
I think it is?
38 (commented on others PR)
Should this two be getTypicalAppointmentBook()
instead?
39 (commented on others PR)
Should this be getFilteredAppointmentList()
instead?
40 (commented on others PR)
Don't change this because the time is supposed to be displayed as "9:00AM" and not "9:00am"
41 (commented on others PR)
Rmb to update this to getTypicalPropertyBook()
42 (commented on others PR)
Can simplify to just SortAppointmentDescriptor
instead of SortAppointmentCommand.SortAppointmentDescriptor
Same goes for other instances in this whole file
43 (commented on others PR)
I think this should be sorted in %1$ending order
instead right? Because its ascending and descending.
44 (commented on others PR)
Will this throw an error if user did not pass in either asc
or desc
in the command? Is the asc/desc supposed to be optional instead?
45 (commented on others PR)
Think there is a typo here. This whole file is using EditPersonDescriptor
instead of SortAppointmentDescriptor
.
But I think for SortAppointmentTest
, the testing should be of a different format too right?
46 (commented on others PR)
Oops right!! My bad.
47 (commented on others PR)
Ohh, ok sure
48 (commented on others PR)
Remember to update the UG in this case
49 (commented on others PR)
Ok, do rmb to update it in future
50 (commented on others PR)
Rmb to update this javadoc
51 (commented on others PR)
Any reason for this change?
52 (commented on others PR)
I think it will be neater to create an empty constructor in Client
class.
53 (commented on others PR)
There will be an extra ;
in the toString
of Property
when both the client information and tags are printed
E.g. Client Asking Price: $800,00;; Tags: [4 bedrooms]
54 (commented on others PR)
Rmb to update this javadoc
55 (commented on others PR)
Is there a reason for using .withName(VALID_NAME_BURGHLEY_DRIVE)
?
56 (commented on others PR)
Is there a reason for using .withName(VALID_NAME_BURGHLEY_DRIVE)
?
57 (commented on others PR)
Just a suggestion: Would you like to consider using the ArgumentTokenizer
class here?
58 (commented on others PR)
Perhaps this can be changed to:
"Parameters: [KEYWORD]... [pl/UPPER_PRICE_LIMIT] [pm/LOWER_PRICE_LIMIT]"
instead and put the note on inclusive in the description? So that it aligns with our command format of replacing the uppercase characters in the command format with user input.
59 (commented on others PR)
Rmb to update this to property book
60 (commented on others PR)
I think it may be better to standardize your prefixes by adding a space behind "proceed" and "cancel" as as well
61 (commented on others PR)
Have you considered the use of forward slashes in these new prefixes? Such as new/
, proceed/
and cancel/
What may be some of the reasons you choose not to use them?
62 (commented on others PR)
Rmb to remove this extra line
63 (commented on others PR)
Rmb to remove this extra line
64 (commented on others PR)
Maybe this description can be more descriptive?
65 (commented on others PR)
Rmb to update this javadoc
66 (commented on others PR)
Rmb to update this javadoc
67 (commented on others PR)
Is there a reason for this change? Have you tested with resizing the app? Because I am not sure if this will affect when the user resize the app (e.g. maximize it)
68 (commented on others PR)
Would it be better if you leave all these changes to the default one? Because I think it is the conventional way to express as top, right, bottom, left.
69 (commented on others PR)
Similarly for this, I think there is no reason to change their positions?
70 (commented on others PR)
Good that you make it consistent with the others
71 (commented on others PR)
Is there supposed to be a use for this? I can't find any place that uses this matcher
object
72 (commented on others PR)
Maybe you will like to include an example usage as well
73 (commented on others PR)
Will you like to move this to the UpdateCommand
parent class instead so that it is not duplicated in UpdateProceedCommand
class?
74 (commented on others PR)
If you are moving the MESSAGE_NULL_STATUS
to UpdateCommand
class, then perhaps this should be moved as well for consistency
75 (commented on others PR)
Same as the comment in UpdateCancelCommand
76 (commented on others PR)
It seems weird to me that next()
for Completion
returns a Completion
?
77 (commented on others PR)
Ohh, I see
78 (commented on others PR)
Would it be better if the .next()
method is never called for Completion
? But I do understand that it has to implement the method in this scenario. So I guess its fine.
But perhaps one other suggestion is to show the user that it is already completed or something if user pass in a command to update a completed property to the next stage?
79 (commented on others PR)
Yeapp!!
80 (commented on others PR)
Didn't realize that the update command is called as such update 1 proceed/
, without anything behind the prefixes. So they are not really prefixes in this case, so maybe the forward slashes are not intuitive for the user and should be removed. Sorry!!
An alternative suggestion may be to change the command format to update INDEX s/STATUS
?
E.g. update 1 s/NEW
, update 1 s/proceed
, update 1 s/cancel
In this case, you can even make use of the ArgumentTokenizer
and ArgumentMultiMap
classes to parse the inputs.
Will this be better?
81 (commented on others PR)
Maybe change Undoes
to Undos
?
82 (commented on others PR)
Undid
?
83 (commented on others PR)
Undos?
84 (commented on others PR)
Undos?
85 (commented on others PR)
Correct me if I am wrong but do you have to set the previousAppointmentLists
of previousAppointmentBook
as well? So that the user can call undo two times in a row?
86 (commented on others PR)
Same as the comment for AppointmentBook
87 (commented on others PR)
Can this method be shifted to PocketEstateParser
instead? So that the regex and parsing are not duplicated.
Let me know if it is not possible because it will affect the implementation or if there are any other reasons
88 (commented on others PR)
Actually, the main question is just whether the user can call undo two times in a row now?
89 (commented on others PR)
Ohh,that's good! Then we can merge this.
90 (commented on others PR)
I think we shouldn't add this kind of setting files to the team repo. Can you leave this file out or put it in the .gitignore?
91 (commented on others PR)
I don't think we should change this file too
92 (commented on others PR)
I think we should be consistent with the add property command and use [t/TYPE]
to indicate that the filter is for property type
93 (commented on others PR)
Do you mean accepted
here?
94 (commented on others PR)
Can reuse the PREFIX_TYPE
defined earlier in the file instead of defining a duplicate one
95 (commented on others PR)
Is there a reason for defining a separate method to get properties with clients? Will it be better to just include JURONG
in the getTypicalProperties
method?
96 (commented on others PR)
What does julLogger
stand for? Will it be better to use a more descriptive name?
97 (commented on others PR)
I think we should be consistent and use t/PROPERTY_TYPE
here
98 (commented on others PR)
Need to remove appointments here
99 (commented on others PR)
This should be appointments
instead
100 (commented on others PR)
I think it will be better if the ...
are after the square brackets.
E.g. find property [KEYWORD] [OPTION]...
101 (commented on others PR)
Is the diagram changed or updated? If not, I think we shouldn't change the .puml
file too
102 (commented on others PR)
Should it be EditAppointmentDescriptor
instead?
103 (commented on others PR)
Just wondering if the \n
should be taken out because the user can never enter a \n
in our app right? Hitting the enter button will result in executing the command alr. 🤔
104 (commented on others PR)
Do use the constructor with both property book and appointment book as the other constructors should be removed asap
105 (commented on others PR)
Can you change this file back to the original version or leave this file out?
106 (commented on others PR)
What is this commented out testcase for?
107 (commented on others PR)
Similarly for this
108 (commented on others PR)
Perhaps use PropertyBuilder
here?
109 (commented on others PR)
I am fine with this but perhaps use static variables for this? Something like INVALID_COMMAND_ADD
?
110 (commented on others PR)
Food for thought: how about finding client and the other extra stuff (finding by postalcode, etc) yuchen is adding? Or do we only prompt appointment and property because they are more important?
111 (commented on others PR)
Ohh i meant the "add", "find", "clear", etc
112 (commented on others PR)
So that they are not magic strings
113 (commented on others PR)
ok
114 (commented on others PR)
Just wondering if you separate out this 3 formats of update in the command summary, then should you separate them in the Command section above too? Its better to be consistent so if you want to separate out to 3 formats, then both sides should be separated. If not, both sides should be 1 format only.
115 (commented on others PR)
Actually will it be better if you have only 1 format, update INDEX u/OPTION
, then you specify what the options are? Similar to how find
is structured?
Not really sure whats the best way to present this...
116 (commented on others PR)
Should you also add a bit more information on what each of the status represents, and calling proceed on one will lead to which one?
117 (commented on others PR)
Maybe state what the amount means also?
118 (commented on others PR)
Would prefer a nested table to explain what option, sales agreement and completion mean here. But ignore me if you don't think its better
119 (commented on others PR)
There will be error parsing the html tags here. Try following what i did for the find property
command below if you can. If not I will fix it after this is merged ba
120 (commented on others PR)
omg im so sorry i meant like a nested list like that
- ...
- ...
cuz a table would be kind of out of place right?
121 (commented on others PR)
Should this be UserPrefs
instead?
122 (commented on others PR)
just a small nitpick, but personally would prefer the options to be grouped in this way:
[KEYWORD]... [pl/UPPER_PRICE_LIMIT] [pm/LOWER_PRICE_LIMIT] [t/TYPE] [p/POSTAL_CODE] [a/ADDRESS] [r/REMARKS] [tags/TAGS_SEPARATED_BY_COMMA]
to make it consistent with the rest of the commands
123 (commented on others PR)
I agree with david that you should probably try to use ArgumentTokenizer
here. This function has to be modularized one way or another because it is way too long and not reader-friendly now
124 (commented on others PR)
Should this be matches the remark given
instead?
125 (commented on others PR)
Perhaps this can be clearer by saying ... contains all of the tags given
?
Side note: should this be changed to contains any of the tags given instead? Since the user might want to use a few tags to search for properties with any of them.
126 (commented on others PR)
I dont think its a good idea to duplicate the code from FindPropertyCommand#parse
to here again. Given that this is a test class, is it possible to manually create the Predicate
/PredicateList
in each of the test itself instead?
127 (commented on others PR)
Sorry, this way instead because address should be before postalcode:
[KEYWORD]... [pl/UPPER_PRICE_LIMIT] [pm/LOWER_PRICE_LIMIT] [t/PROPERTY_TYPE] [a/ADDRESS] [p/POSTAL_CODE] [r/REMARKS] [tags/TAGS_SEPARATED_BY_COMMA]
to make it consistent with the rest of the commands
128 (commented on others PR)
Will adding n/
for name be a solution? Since we are adding prefixes for the rest.
129 (commented on others PR)
Do you need to add the square brackets here too?
130 (commented on others PR)
Just a suggestion: I will suggest to format the square brackets like this so that it is much neater
131 (commented on others PR)
Also, remember to add the tags parameter too
132 (commented on own PR)
withAppointment
takes in an actual Appointment
object. So if an example is given, it will be quite verbose.
E.g. AppointmentBook ab = new AppointmentBookBuilder().withAppointment(new Appointment(new Name("Meet Alex"), new Remark("remark"), new Date(LocalDate.parse("2021-01-01")), new Time(LocalTime.parse("20:00:00"))).build();
So I don't think it is necessary to put. Let me know if yall think we should include it.
133 (commented on own PR)
Ohh right good point. Shall change it. Thanks.
134 (commented on own PR)
Thanks, merged and updated this branch
135 (commented on own PR)
ok!
136 (commented on own PR)
ohh ok!
137 (commented on own PR)
Will update this
138 (commented on own PR)
@dvdweien to update this section
139 (commented on own PR)
@dvdweien to update this section too
140 (commented on own PR)
The format is supposed to be t/hdb
for example
141 (commented on own PR)
@w-yuchen to update this section
142 (commented on own PR)
ohh, thanks for catching this
143 (commented on own PR)
Shall update this
144 (commented on own PR)
I think we should probably separate source code and test code
145 (commented on own PR)
Same as above
146 (commented on own PR)
Same as above
147 (commented on own PR)
Same as above
148 (commented on own PR)
Oops, forgot to remove
149 (commented on own PR)
will remove them
150 (commented on own PR)
The new
keyword is explaining the new
in u/new AMOUNT
. If it is still unclear, then maybe @dvdweien should fix it in his next PR.
151 (commented on own PR)
@w-yuchen to fix this. I didn't touch any of their explanations, just fixed the ordering.
152 (commented on own PR)
Ohh, I left it as date because it is checking if it is an actual date. Should I change to deadline?
153 (commented on own PR)
ok shall update this
154 (other comment)
Update target user profile and value proposition.
Add glossary.
155 (other comment)
Add user stories.
156 (other comment)
should I close this pull request?
No, this is for the tutorial only.
157 (other comment)
Do remember to update the command summary for these commands at the bottom of the user guide page as well
158 (other comment)
Only property types "hdb", "condo" and "landed" and all forms of their capitalization are allowed for the PropertyType
attribute of a property
159 (other comment)
I think that we originally discussed and decided that the asking price should be an optional "client asking price", so I had put it under client info. We can discuss more about this in the next meeting to see if we want to change it to be under property directly.
160 (other comment)
Do you mean like this? Is this better?
161 (other comment)
i think can lose the underline, maybe the bold isn't needed oso. I was just confused why every date was red
Then wont it be the same as the original alr? The main idea was to place some emphasis on the dates so that the user can see his upcoming deadlines/appointments more clearly
162 (other comment)
@candyhy what do you think of this 🤔
163 (other comment)
Updated image:
164 (other comment)
Storage
interface should extend PropertyBookStorage
, AppointmentBookStorage
and UserPrefsStorage
too
165 (other comment)
This shouldn't be execute(undo) right
I think should enclose the parameter in quotes cuz its supposed to be a string
should be dotted line for returning
This is a constructor call, so the label shouldn't be 600000 I think. Either leave it blank or change it to a call to create a new Option object
should be dotted line for returning
should be dotted line for returning
missing returning dotted line (if everywhere else has a returning dotted line, then u should probably include one here too)
166 (other comment)
Your diagram:
My diagram:
For this, I do agree that the 3 child classes should have a composition relationship with Offer
, and I will update my diagram. But do you think there should be a dependency arrow from Status
to Offer
as well?
167 (other comment)
I don't think there should be a dependency arrow from Status to Offer as Status doesn't actually have any knowledge of Offer, Offer is only referenced in the classes that implement Status
Ohh, because I thought Status
has a method returning an Offer
object. Hmm, not really sure whether to include this dependency arrow...
168 (other comment)
I don't think there should be a dependency arrow from Status to Offer as Status doesn't actually have any knowledge of Offer, Offer is only referenced in the classes that implement Status
Ohh, because I thought
Status
has a method returning anOffer
object. Hmm, not really sure whether to include this dependency arrow...
Oh yeah! I forgot about that, that method isn't currently being used now should i remove it? If it shouldn't be removed then i will add the dependency arrow
Ohh, its not being used? Then ya please remove and I will update my diagram. Thanks!
169 (other comment)
Just a quick question, do the photos have a transparent background?
No, but because our UG has a white background, it shouldn't matter?
@vevek
(127 comments)1 (commented on others PR)
Agreed. Full name for everyone would be great.
2 (commented on others PR)
Agreed
3 (commented on others PR)
@Eriksen2411 Yes 😃
4 (commented on others PR)
In that case would it be
In charge of: Deliverables and deadlines
vs
Role: Deliverables and deadlines
vs
Role: In charge of Deliverables and Deadlines
5 (commented on others PR)
I think there should be a space between // and Set.
6 (commented on others PR)
I think there should be a space between // and Maximise.
7 (commented on others PR)
Nice touch.
8 (commented on others PR)
Add space below.
9 (commented on others PR)
Yup, I'll add an issue!
10 (commented on others PR)
Nice
11 (commented on others PR)
colab_icon_32 would be easier to differentiate. 32 being an example size.
12 (commented on others PR)
Perhaps all colour constants can have a prefix. COLOUR_PRIMARY_LIGHT and COLOUR_ACCENT.
13 (commented on others PR)
COLOUR_CELL would be better. "Cell" is unclear.
14 (commented on others PR)
What's the reason why it is NaN?
15 (commented on others PR)
Nice!
16 (commented on others PR)
Any reason for this specific resolution? Perhaps a generic 1280x720 or 1920x1080 would be consistent among different computers.
17 (commented on others PR)
line space between if statement and previous line
18 (commented on others PR)
line space
19 (commented on others PR)
indentation. && should be aligned to ||.
20 (commented on others PR)
Do add the types in the array list as well. It's failing the checks.
"new" has been duplicated twice.
21 (commented on others PR)
Here
22 (commented on others PR)
A list of Persons -> Tasks instead.
23 (commented on others PR)
This one can use requireNonNull(), but no big deal.
24 (commented on others PR)
This one can use requireNonNull(), but no big deal.
25 (commented on others PR)
This one can use requireNonNull(), but no big deal.
26 (commented on others PR)
I love how your comments are so detailed btw! 😃
27 (commented on others PR)
Should it be target.isSameProject(edited) && contains(editedProject) without the ! in front of target.isSameProject(edited)?
28 (commented on others PR)
Nothing implemented here
29 (commented on others PR)
Should there be a requireNonNull(project) here?
30 (commented on others PR)
Should there be a requireNonNull(key) here?
31 (commented on others PR)
Need to implement. Why return null?
32 (commented on others PR)
Should the predicate being imported be PROJECTS instead?
33 (commented on others PR)
Here too.
34 (commented on others PR)
Personally I feel that if we have to reference something from the Command class, then it might be better to put this message within the Command class rather than Messages. What do you think?
35 (commented on others PR)
I like this change, but maybe wanna add the requireNonNull(projectToEdit); before this line.
36 (commented on others PR)
Not a big deal but I think having the comma makes sense.
37 (commented on others PR)
Why not have 2 constructors. The one with 3 parameters shall require non null for all 3 fields. So that when it is used externally, it is used correctly. The one with 2 parameters shall require non null for 2 fields.
38 (commented on others PR)
This will then need to be updated.
39 (commented on others PR)
Lets standardise the way this message_usage String is formatted in the future 😃
40 (commented on others PR)
@samuelfangjw Referring to standardising it over all the command classes. Not too important for now. I wanted to neaten it for the other command classes.
41 (commented on others PR)
Was referring to this part, that refers to the COMMAND_WORD. Not a big deal for now since command word will most likely be unchanged.
42 (commented on others PR)
@samuelfangjw Added a new comment to the correct line for this.
43 (commented on others PR)
Sure!
44 (commented on others PR)
Add extra line here
45 (commented on others PR)
Extra line here.
46 (commented on others PR)
Add extra line here.
47 (commented on others PR)
Just a minor suggestion. I think convertedProjectName would be clearer here. Since there are many variables starting with "project" and "projectName"
48 (commented on others PR)
Is there a reason why you do this once here, and then assertDoesNotThrow for the same thing below?
49 (commented on others PR)
Looks repeated as the one below.
50 (commented on others PR)
Looks repeated as the one here.
51 (commented on others PR)
Can the Set(i,deadline) method be used instead. This way the list would not get reordered unnecessarily.
52 (commented on others PR)
Can the Set(i,deadline) method be used instead. This way the list would not get reordered unnecessarily.
53 (commented on others PR)
Do you wanna make this change to EventList too?
54 (commented on others PR)
Do you wanna simplify "deadline.getIsDone() ? "✔" : """ with a method in Deadline? Or even from toString?
55 (commented on others PR)
Do you wanna simplify "todo.getIsDone() ? "✔" : """ with a method in Todo? Or even from toString?
56 (commented on others PR)
I think it would be better if DP can be labelled better. Like DP_COLOR_NO_TRANSPARENCY etc
57 (commented on others PR)
Same as above
58 (commented on others PR)
Got it, then DP_1_ELEVATION would be good
59 (commented on others PR)
Sounds good to me!
60 (commented on others PR)
I think it is better to have it in the previous form, so that the ParseException e's message can be shown to the user as well.
61 (commented on others PR)
Although the new design does simplify things.
62 (commented on others PR)
The method header name here is wrong. For other methods, your method header names also seem irrelevant to the what the test actually does.
63 (commented on others PR)
Wrong method header.
64 (commented on others PR)
Header names here are fine
65 (commented on others PR)
Oh okay. In that case, nice catch 😃
66 (commented on others PR)
Good idea!
67 (commented on others PR)
So for now there is not mechanism to tick the todo off in via the GUI right? It'll just update the GUI accordingly?
68 (commented on others PR)
Was id left out intentionally?
69 (commented on others PR)
Is the ID here intentionally left out?
70 (commented on others PR)
id here too
71 (commented on others PR)
Reading this, it looks like ID should be checked too. Hmm
72 (commented on others PR)
here too.
73 (commented on others PR)
Maybe the UiCommand can be specified to be ViewProjectUiCommand since that is the current context?
74 (commented on others PR)
and here.
75 (commented on others PR)
Looks better man!
76 (commented on others PR)
Is it overridden instead of overwritten?
77 (commented on others PR)
Looks better man!
78 (commented on others PR)
Got it man, thanks
79 (commented on others PR)
Perhaps can add requireNonNull for dateOfEvent
80 (commented on others PR)
requireNonNull
81 (commented on others PR)
requireNonNull
82 (commented on others PR)
requireNonNull
83 (commented on others PR)
Looks like id isn't being used at all.
84 (commented on others PR)
I remember the implementation here was changed, or is this correct?
85 (commented on others PR)
Perhaps can requireNonNull here for Event just to be thorough
86 (commented on others PR)
Wanna change the string text for this and deadlines to a constant declared at the top for easy access?
87 (commented on others PR)
In reference to the previous PR haha
88 (commented on others PR)
I see. That does make sense and simplifies a lot of things!
89 (commented on others PR)
"events list" can be changed to "EventList"
90 (commented on others PR)
issues & ececutes change to "executes"
91 (commented on others PR)
It checks Event
provided is valid or not -> It checks if Event
provided is valid or not
92 (commented on others PR)
"an exception will be thrown, Ui
will" change to "an exception will be thrown and Ui
will"
93 (commented on others PR)
It check whether -> It checks whether
94 (commented on others PR)
and Event
provided is duplicated or not -> and if Event
provided is duplicated.
95 (commented on others PR)
I kind of don't understand what is being said here.
96 (commented on others PR)
works -> work
97 (commented on others PR)
works -> works.
98 (commented on others PR)
remove the word "issues".
-> The user executes the command
99 (commented on others PR)
not work with the immutable -> not work with an immutable
100 (commented on others PR)
Maybe this line can change INVALID_REPEATABLE_DATE -> INVALID_EVENT_DATE.
can't merge with deadline one because of the different prefix.
101 (commented on others PR)
Nice explanation man
102 (commented on others PR)
Does it need to catch DateConversionException too, given that it is thrown in checkDateIsNotNegative? Or is DateConversionException a subclass of DateTimeParseException?
103 (commented on others PR)
I checked and it doesn't appear to be a subclass of DateTimeParseException
104 (commented on others PR)
Hmm, because they throw with different messages, perhaps can leave it as it is?
105 (commented on others PR)
The syntax changed to "addEto PROJECT_INDEX d/DESCRIPTION on/DATE at/TIME w/Y"
106 (commented on others PR)
This one I feel it would be better to have 2 constructors. 1 that has only 1 parameter for ColabFolder and sets CommandResult to null be default. And another constructor that has 2 parameters such that both parameters would have requireNonNull.
Not a very big deal because the Null in parameter is only used in ColabFolderHistory
CommandResult.
107 (commented on others PR)
Should just be name here. Its showing the entire package currently
108 (commented on others PR)
Was day here intentionally left as 4 chars? as it has been shortened to 3 chars above.
109 (commented on others PR)
Is it supposed to be > "Repeatable" > here
110 (commented on others PR)
Is this method still used?
111 (commented on others PR)
If so, it could reused in line 49.
112 (commented on others PR)
👍
113 (commented on others PR)
Ok. Not a big deal since we only have 1 type of repeatable
114 (commented on others PR)
In line 46 and 48 you changed "#4features" to "#4-features". Might want to do it here too!
115 (commented on others PR)
Good idea on shifting the explanation here!
116 (commented on others PR)
In Ms Aileens pdf, she was asking if description is only for deadline, event or todo. Thats why I added that line.
117 (commented on others PR)
We changed the explanation for Description in the app to "Description can take any values, and it should not be blank"
118 (commented on others PR)
Good idea shifting it here!
119 (commented on others PR)
Hmm, any reason why the words in the square bracket is [Contacts] and not [Today]
120 (commented on others PR)
Maybe this sentence, "To switch between the two, use the overview
and todo
commands respectively." can put in the "Info or Tip" box?
121 (commented on others PR)
Maybe this portion can be clearer on how Contacts and Groupmates are still separate entities.
122 (commented on others PR)
Here too. "Maybe this portion can be clearer on how Contacts and Groupmates are still separate entities."
123 (commented on others PR)
Haha I checked again, need to change
124 (commented on others PR)
Tip is fine!
125 (commented on others PR)
Ooh. What about putting it as a tip?
126 (commented on others PR)
Adding it to FAQ can be a bonus too
127 (commented on others PR)
I agree with you that the first sentence already makes it clear.
128 (commented on own PR)
Oh nice catch. thanks @Eriksen2411 !
129 (commented on own PR)
np!
130 (commented on own PR)
np!
131 (commented on own PR)
Good catch. Added it. Thanks!
132 (commented on own PR)
Yup! I took from address field because that allows for long and varied sentences. I think the one from project name allows only for 2 words
133 (commented on own PR)
Thanks!
134 (commented on own PR)
Thank you. I will merge the changes and request review again 😃
135 (commented on own PR)
Will resolve this at a later date. Placed in issues. 😃
136 (commented on own PR)
Good idea!
137 (commented on own PR)
Thanks!
138 (commented on own PR)
Nice thanks!
139 (commented on own PR)
Nice. fixed!
140 (commented on own PR)
thanks!
141 (commented on own PR)
thanks!
142 (commented on own PR)
thanks!
143 (commented on own PR)
It is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, CoLAB can get your project management tasks done faster than traditional GUI apps.
We can add with a clean and inviting UI.
to this paragraph or remove it all together.
144 (commented on own PR)
Good idea. I'll shift it around.
145 (commented on own PR)
Good idea. I'll shift it around.
146 (other comment)
LGTM
147 (other comment)
Dimensions have been updated.
148 (other comment)
@samuelfangjw thanks. I have updated the title and the description.
149 (other comment)
Pull Request was closed due to deletion of branch. No merging was done.
150 (other comment)
@samuelfangjw Looks great! Please add the changes you have added to features to the table of contents.
151 (other comment)
Nice work! LGTM!
152 (other comment)
LGTM.
153 (other comment)
Nice work. LGTM!
154 (other comment)
@samuelfangjw the images that show the features in detail. It can be seen in the pages further below in the user guide.
155 (other comment)
@samuelfangjw Good catch 😂
156 (other comment)
@samuelfangjw I think you've found the one 😂
157 (other comment)
Are you able bring back the v1.1 milestone?
158 (other comment)
@samuelfangjw Looking forward to it hahaha!
159 (other comment)
@samuelfangjw Nice thanks. I'll get on it soon!
160 (other comment)
@samuelfangjw Good idea!
161 (other comment)
Closing as Tutorial PR irrelevant to project.
162 (other comment)
Thanks! @samuelfangjw
163 (other comment)
Nice. LGTM man!
164 (other comment)
Might need to check the things brought up in the comments. Accidentally approved and left out this comment.
165 (other comment)
All the models, storage and tests have been updated. PR is ready for review. Thanks!
166 (other comment)
Tests aren't sufficient, but we'll ignore that for now so that the rest can proceed. I'll add more tests over time.
167 (other comment)
Done up all the necessary classes for AddTodoCommand and related classes. Some changes and additional checks were added/made to AddEventCommand and related classes. I have yet to do up tests for AddTodoCommand. I will do AddDeadLineCommand after this, and then will add the tests for Todo and Deadline at the same time. Thanks!
168 (other comment)
Done up all the necessary changes for AddDeadlineCommand and related classes. Some changes were made to AddTodoCommand and AddEventCommand. I will work on deleteE/T/D and then do the tests for all. Thanks!
169 (other comment)
Ready for review. Tests will be added at a later date after deleteEvent & deleteDeadline are done.
170 (other comment)
Ready for review. Will add tests soon after merge.
171 (other comment)
Ready for review. Will add tests soon after merge.
172 (other comment)
Ready for review.
173 (other comment)
Ready for review.
174 (other comment)
Done up the tests for AddTodoCommand and it's related tests.
175 (other comment)
Ready for review! Thanks!
176 (other comment)
Made relevant changes and fixed some issues. Fixed a minor issue with a test for DeleteContactFromCommandTest. Ready for review. Thanks!
177 (other comment)
Ready for review! Thanks!
178 (other comment)
Ready for review, thanks!
179 (other comment)
Need to decide what the equals method determines as equals.
180 (other comment)
Update UG to say tags are optional
181 (other comment)
Update the message that is displayed to the user.
182 (other comment)
Need to find the optimal minimum display size.
183 (other comment)
Update the UG
184 (other comment)
Update the UG with correct quotation marks.
185 (other comment)
update the UG with correct quotation marks.
186 (other comment)
Does not occur even with 24000 1's.
187 (other comment)
Update UG with quotation marks.
188 (other comment)
Update the UG, remove the extra line about TODO_INDEX param
189 (other comment)
This is as expected.
190 (other comment)
Update UG to fix quotation mark.
191 (other comment)
Unable to replicate this issue. Tested on both Windows & macOS and am able to add as many events as required.
192 (other comment)
Events are sorted based on time. Not their names. Hence it shifts to the correct position.
193 (other comment)
Update message to
"Date should either be a valid date and in one of the following formats:"
194 (other comment)
Perhaps can edit the message to
"Time should either be a valid time and be in one of the following formats:"
195 (other comment)
Update the UG to say that 0000 to 2400 in our application. Hence only 0000 would be considered valid, not 2400.
196 (other comment)
Display bug
@onnwards
(121 comments)1 (commented on others PR)
shouldn't this be resumes from step 2, like in UC1b
below?
2 (commented on others PR)
what defines a conflict? overlapping datetime + same name? or overlapping datetime + same doctor? or both? or are there other cases where a conflict will arise?
In the same vein, how specific should we be for Use Cases?
3 (commented on others PR)
Think all the 1a
's and 1b
's can be summarised somehow since its being repeated in all use cases, but I'm not sure how to handle it. does *a
work? or use inclusion with a bigger use case? -
1. user enters a command
2. system reads the command and executes the command
1a. invalid command
1b. invalid subcommand
4 (commented on others PR)
might want to consider changing to something like this?
steps 1a1 to 1a2 are repeated until command entered is correct/free from errors.
same thing for the other loop-style/invalid input by user use cases
5 (commented on others PR)
1c, 2a looks to be repeated as well in edit
and find
(1c), and edit
and delete
(2a)
6 (commented on others PR)
@AY2021S2-CS2103-W17-2/developers
7 (commented on others PR)
should it extend Exception or RuntimeException? any particular reason for making this an unchecked exception?
8 (commented on others PR)
same for NegativeOrZeroDurationException
, AppointmentConflictException
9 (commented on others PR)
is this an intended mention of addressbook.json
here?
10 (commented on others PR)
maybe consider a naming more similar to UniquePersonList.java
, and same ordering of methods as UniquePersonList.java
11 (commented on others PR)
not sure whether this is allowed under coding convention for spacing
12 (commented on others PR)
this doesn't look like it fits the regular format of implementing Parser>DeleteAppointmentCommand>
13 (commented on others PR)
think u may have missed a param INDEX?
command should be something like edit-appt 1 pt/2
, which means:
edit first appointment (right side of GUI),
change the patient in the appointment to the second patient in the patient list (bottom left side of GUI)
check out editPatientCommand
regarding this.
14 (commented on others PR)
i don't think this is true, if this were true then each patient would only be able to have 1 appointment at any point in time.
15 (commented on others PR)
why allMatch
? this doesn't sound like it would work.
with allMatch()
, wouldnt it mean all appointments in the appointment schedule have to be the same appointment for this to return true
?
this sounds like it should be anyMatch instead, in which case the original contains()
should be used
16 (commented on others PR)
i think leaving as List>Appointment>
may fit the current coding convention better, All previous commands like DeletePatientCommand
, EditPatientCommand
uses List>Person>
as well
17 (commented on others PR)
agree,
rationale is that for a scheduling conflict to happen, either patient has overlapping timeslot, or doctor has overlapping timeslot,
think this method wouldn't work, and hasConflict
should be used instead
18 (commented on others PR)
same issue here with allMatch()
, should use hasConflict
instead
19 (commented on others PR)
i think the issue is that the current editContains
is using allMatch()
, which i don't think is correct?
from my other comment on this, all appointments in the schedule have to return true
for equals()
for allMatch
to return true
, which doesn't seem to be the right idea
20 (commented on others PR)
this code would not work if patientIndex didn't exist. Should handle it like lines 104-106: ie. something like
Person patient = editAppointmentDescriptor.getPatientIndex().isPresent()
? displayedPatientRecords.get(editAppointmentDescriptor.patientIndex.getZeroBased())
: appointmentToEdit.getPatient();
21 (commented on others PR)
this method name sounds like you're converting a Set>String>
, instead of converting to a Set>String>
. Would recommend to change to convertToStringSet
or something along those lines
22 (commented on others PR)
is there a need to 8 spaces then 8 spaces again? im not too sure about the coding convention
23 (commented on others PR)
what's the rationale behind trimming? code looks like it should work without trimming right?
24 (commented on others PR)
programming to an interface is better coding practice if you don't need to use any ArrayList
specific methods: ie.
List>String> xxx = new ArrayList>>();
instead of ArrayList>String>
on the LHS
25 (commented on others PR)
combine?
String keywords = argMultimap.getValue(prefix).get();
26 (commented on others PR)
this may be just me but i feel like doing the object creation on another line feels v messy...
i'd rather do Collections.addAll(tagKeywords, listKeywords(argMultimap, PREFIX_XX));
, but its up to u!!
27 (commented on others PR)
think this portion should refer to both appointment schedule and patient records, not just patient records
28 (commented on others PR)
is there a need to separate the predicates PREDICATE_SHOW_ALL_PERSONS
into Patient and Doctor for better clarity? since in this command we are supposedly only showing all patients, not all persons
29 (commented on others PR)
same question with the separation into doctor/patient for this
30 (commented on others PR)
believe this may change to just Predicate>Patient>
if we don't use the Predicate>Person>
in Model.java
(change will populate downwards)
31 (commented on others PR)
abstract class?
32 (commented on others PR)
propose changing the name of this class as well since it only affects data for patients.
on a side note, i think we will need to create a sample appointment data util to populate sample data for appointments as well. will add this in the issue tracker.
33 (commented on others PR)
may be able to make this abstract as well
34 (commented on others PR)
Accidental use of Patient
here.
can probably remove the initialisation and stick with only the declaration if abstract class is used
35 (commented on others PR)
should change AddressBookStorage
here to AddressBookStorage>Patient>
to avoid future confusion with AddressBookStorage>Doctor> when it is added into this method
36 (commented on others PR)
to change naming of the json file itself, same for the other test jsons,
unless intention was to leave it as PersonAddressBook.json
because should be clear enough that it is meant for patients because it is in a JsonPatientRecordsStorageTest
folder. (but i still think renaming would be clearer)
37 (commented on others PR)
to update comment
38 (commented on others PR)
small issue that doesn't affect anything but the param name is still addressBookFilePath
39 (commented on others PR)
consider refactoring method names?
40 (commented on others PR)
I don't think so? I think this should be a class that tests for all versions of addressbook? because this would correspond to the main class AddressBook.java
, which is for both doctors and patients right
41 (commented on others PR)
yup i think so
42 (commented on others PR)
does this imply that force delete must be before patient index? ie. command must be given as delete-patient --force 1
if it does, is it intended?
if yes, then i may be better to specify maybe in the force delete message
43 (commented on others PR)
i believe this portion of the code doesn't have to be in a try
?
i think its cleaner to move it out of the try if it doesn't have to be inside.
u can then handle the isForceDelete
cleaner as well (ie maybe in the else)
44 (commented on others PR)
actually, i think a cleaner way may be to check the index first, if index is wrong then throw a parse exception for index related stuf (ie DeletePatientCommand.MESSAGE_USAGE
, only after index is confirmed to be good, then parse for forceDelete.
this is because currently the emphasis of the parse exception message usage being returned isn't very clear,
ie if user keys command delete-patient --force notAnIndex
, this method returns a ParseException
with FORCE_DELETE_MESSAGE_USAGE
. Emphasis of the exception should have been on the Index being wrong instead,
45 (commented on others PR)
should edit the method name to indicate that this method is for empty appointmentschedule, non empty patient records
46 (commented on others PR)
same here, method name is wrong, should be execute_nonEmptyAppointmentScheduleNonEmptyPatientRecords_failure
or something along those lines
47 (commented on others PR)
yeah that does sound abit ugly.
i'd prefer just the 1 line (or multiple lines) which causes the exception to be within the try, so it makes it clearer for readers too
48 (commented on others PR)
would be good if FORCE_DELETE_REQUIRED
is renamed to FORCE_DELETE_PATIENT_REQUIRED
as well
49 (commented on others PR)
refactoring error here
50 (commented on others PR)
why wasn't this previously in ah, is it because this would be used for the statusbarfooter (which currently only shows appt schedule storage filepath)?
51 (commented on others PR)
shouldn't we just call this PATIENT INDEX
instead of PATIENT (positive integer)
?
52 (commented on others PR)
minor, but should be have
😆
53 (commented on others PR)
should be find-doctor
, probably means FindPatientCommand
may be wrong as well.
54 (commented on others PR)
note to @onnwards to add hasConflictingUuid
checks
55 (commented on others PR)
note to modify according to clear-patient bug
56 (commented on others PR)
note to modify according to delete-patient bug
57 (commented on others PR)
note to @onnwards to modify according to edit-patient bug
58 (commented on others PR)
need to update javadocs
59 (commented on others PR)
update javadocs, probably means javadocs is wrong for EditPatientCommand
as well
60 (commented on others PR)
AddDoctorCommand
object instead. probably means that AddPatientCommandParser
is wrong as well, and potentially AddAppointmentCommandParser
same for all mentions of AddCommand in this file
61 (commented on others PR)
same for all the EditCommands here as well
62 (commented on others PR)
this file is not supposed to be here and should be deleted
63 (commented on others PR)
javadocs here, and below as well
64 (commented on others PR)
needs javadocs update in this file, for patientrecords as well
65 (commented on others PR)
why??
66 (commented on others PR)
why no override?
67 (commented on others PR)
note to @onnwards for UUID
68 (commented on others PR)
why though? is there a rationale behind it @Jacob-Pang
looks like its because we can get more abstraction with an abstract class?
69 (commented on others PR)
just noticed, weird indentation for this line for javadocs
70 (commented on others PR)
javadocs for this and probably also JsonPatientRecordsStorage.java
71 (commented on others PR)
seems to be inconsistent with the overall order of userprefs, patient, doctor, appointment
72 (commented on others PR)
here too
73 (commented on others PR)
will there be any side effects of renaming this? any other places in the code that we need to change? not very familiar with the Json storage conventions
74 (commented on others PR)
again quite minor, but inconsistent order?
75 (commented on others PR)
note to @onnwards to Predicates to resolve merge conflict properly
76 (commented on others PR)
jdocs, same problem for AddPatientCommandIntegrationTest.java
77 (commented on others PR)
note: to modify test classes here to test correctly after delete-patient/delete-doctor bugfix has been implemented
78 (commented on others PR)
jdocs
79 (commented on others PR)
jdoc
80 (commented on others PR)
should not be a remove and an add, and line 34 looks like it should fail: comparing AddressBook>Patient>
with AddressBook>Doctor>
81 (commented on others PR)
refactoring error
82 (commented on others PR)
recommend to change to a more doctor sounding name for consistency's sake
83 (commented on others PR)
jdocs for patient
84 (commented on others PR)
jdocs for patient to change to doctor
85 (commented on others PR)
why not the straight up import?
86 (commented on others PR)
some refactoring issues in this file, need to rewrite these methods since we now have 3 different things to get
from
87 (commented on others PR)
an update to the TypicalAppObject
's objects will probably require an update to the corresponding json (typicalDoctorRecords.json
, typicalAppointmentSchedule.json
) as well.
88 (commented on others PR)
@Jacob-Pang any ideas on why this isn't failing tests?
89 (commented on others PR)
shouldn't the typing of addressbook fail the equals? because we are comparing >Patient>
with >Doctor>
right
90 (commented on others PR)
this extra =
misaligns it 😢
91 (commented on others PR)
javadocs has mention of patient
92 (commented on others PR)
actually, i feel like we should throw an exception if forceDelete not equals "--force"
as well? feels like we shouldn't just let a user pass with an input such as delete-patient aisjdhabakahbakshdbankdjashb 1
if we do this we can then make the inner if
conditional not nested, and more flat
same for DeleteDoctorCommandParser
93 (commented on others PR)
ah i missed that out, yeah then it works perfectly
94 (commented on others PR)
if timeInput == null
then null
is returned, which will lead to a NullPointerException
in the method calling this one
95 (commented on others PR)
can try to use Matcher
instead, check out sebastian's PR on how he uses Matcher.compile
for forceDelete
and patientIndex
. exceptions can then be handled that way.
with this, it probably means you won't get an index out of bounds exception, or nullpointer exception with the input, makes stuff cleaner
96 (commented on others PR)
a NullPointerException
shouldn't be thrown, because the caller method don't handle it. should throw ParseException
instead. also NullPointerException
s technically shouldn't be thrown/caught either since they're runtime exceptions, not checked exceptions.
97 (commented on others PR)
it would be better if this was more explicit to facilitate/improve resuability by someone who doesn't know regex, maybe something like DD_SLASH_MM_SLASH_YY
, etc
98 (commented on others PR)
i don't think there's a need to have a new class for this? i think it is fine to have these constants be in TimeslotParser.java
@Jacob-Pang for input
at most, i would probably make it an enum with a field, ie
enum TimeslotRegex {
DATE_SLASH_SHORT ("([0-9]{2})/([0-9]{2})/([0-9]{2})"),
DATE_SLASH_LONG ("([0-9]{2})/([0-9]{2})/([0-9]{4})"),
DATE_DASH_SHORT ("([0-9]{2})-([0-9]{2})-([0-9]{2})"),
DATE_DASH_LONG ("([0-9]{2})-([0-9]{2})-([0-9]{4})");
private final String regex;
private TimeslotRegex(String regex) {
this.regex = regex;
}
public String getRegex() {
return regex;
}
}
you could then access the first regex by: TimeslotRegex.DATE_SLASH_SHORT.getRegex()
you could even take this a step further by having an abstract method in the enum, eg. maybe formatterExpression
, with each indiviudal enum having their own implementation of formatterExpression
(returning a different formatter string) so you could shorten the if/elseif testing in parseFormat
99 (commented on others PR)
have you tried javafx.scene.input.KeyCombination
100 (commented on others PR)
i think calling this addInput
would be clearer
101 (commented on others PR)
would be cleaner if this was this.inputCommandList = new ArrayList>>();
then line 10 can then be private static List>String> inputCommandList
102 (commented on others PR)
pointer should reset back to the end of the list right? instead of just ++
103 (commented on others PR)
this feels like it could be cleaner.
public static String retrieveInput(boolean upPressed) {
if (upPressed) {
incrementPointer();
} else {
decrementPointer();
}
return getCurrentInput();
}
public static void incrementCurrentPointer() {
if (currentPointer < inputCommandList.size() -1) {
currentPointer++;
}
}
public static void decrementCurrentPointer() {
if (currentPointer > 0) {
currentPointer--;
}
}
public getCurrentInput() {
return inputCommandList.get(currentPointer);
}
it doesn't matter whether you abstract it into a function or not like above, but the conditionals can be simplified
104 (commented on others PR)
u can just omit the else if nothing is going to be written
105 (commented on others PR)
what does it even mean when the most recent item will be on the top of the list?? this is not correct.
the last added patient and doctor will appear on the bottom of their respective lists. the appointment with the earlist timeslot (arranged by start time i believe) will appear on the top of the appointment schedule.
106 (commented on others PR)
I think you need to take a look at our current website UG.
The table of contents is populated automatically with kramer, there is no need to replace the dynamic TOC with a static one.
107 (commented on others PR)
i assume this combines the code blocks into 1 while still bolding add-patient
(ie. avoiding this gap thing)
108 (commented on others PR)
mildly related to this, but how do we specify that the --force
parameter has to be before the index but after the delete/clear? (ie cannot be in any order)
109 (commented on others PR)
this should be all 3 clears right? should we write somewhere in the UG that when we refer to like the front word w/o the back words, we refer to all 3 commands? ie. if we refer to clear
without the -xxxx
, we are referring to all 3 commands? or should we just be specific (and mildly repetitive) and just mention all 3?
110 (commented on others PR)
related to the earlier comment: is there a need to specify explicitly that the --force
must be before INDEX
?
111 (commented on others PR)
regarding this, im not sure if we should repeat this, since a possible UG bug is unnecessary repetitions
under neatness/correctness
:
112 (commented on others PR)
same for this regarding repetitions, but perhaps more acceptable here since its different from edit-patient regarding the parameters
113 (commented on others PR)
Would it be better if we say parameters with prefixes e.g. n/ can be in any order to avoid confusion?
this sounds good
114 (commented on others PR)
i think this is a bug, didn't notice in the PR when doctor was changed from string to Doctor
115 (commented on others PR)
can follow the patientList way to do this
116 (commented on others PR)
what does this mean?
117 (commented on others PR)
might want to be more specific here? and list 2 or 3 appointments that this will match, ie something like
Apppointment with Patient name: alex and doctor name: Jekyll, or Apppointment with Patient name: edward hyde and doctor name: Jekyll.
to make the formatting more consistent with lines 357/358
118 (commented on others PR)
this notation feels abit weird, im not sure if its correct
119 (commented on others PR)
missing a space between these 2 lines?
120 (commented on others PR)
actually, should check whether the patientNameSplitMapper is still valid considering all the new changes to AppointmentContainsKeywordPredicate, or should we revert back to patientList.stream().anyMatch(isMatchDoctor)
121 (commented on others PR)
isn't this already mentioned under Appointment Schedule
at line 588? I don't think we're using the term Appointment Records at all
122 (commented on own PR)
don't think so, logic is we don't want any patient commands to affect appointment schedule, so we make a new typicalAppointmentSchedule here
123 (other comment)
still missing some sections to UG, like the summary table, so will not close issue yet.
124 (other comment)
fixes #6
125 (other comment)
duplicate PR with #26
126 (other comment)
you can perform the CI checks locally by using .\gradlew build
127 (other comment)
is this PR still relevant? @icytornado
128 (other comment)
to solve:
recommend 2 prs:
raise exception if appt list has the patient being deleted,
- recommend to add `--force` (or whatever) parameter, force delete feature:
- if `--force` is specified then cascade the deletion
129 (other comment)
3 ways:
>s>1. change patient class to have mutable fields (and potentially appointment class)>/s>
>s>2. couple the patient class to appointment class such that edit-patient will also perform edit-appt>/s>
130 (other comment)
131 (other comment)
DG Components:
Architecture: @Jacob-Pang
UI component: @onnwards
Logic component: @pngsebastian
Model component: @icytornado
Storage component: @kwmiw
Proposed features: remove undo/redo, data archiving @onnwards
change codecov badge in DevOps Guide
Requirements:
Use case/user stories/Instructions for manual testing: each person handles own features, follow UG numbering from UC03 onwards (UC02 is help)
check on NFR, product scope, glossary: @AY2021S2-CS2103-W17-2/developers
132 (other comment)
invalid because the error is intended, no to/
or dur/
was specified so command format is invalid.
133 (other comment)
invalid because the word alphanumeric
implies no spaces.
134 (other comment)
invalid because this is intended, internally there was an edit being done, ie the object instance is different before and after the edit. it was just a case of the edit details being the same.
on a side note, the functionality for this edit is the same in AB3 as well.
135 (other comment)
invalid because a@b
is a valid email (ie. without TLD)
136 (other comment)
invalid because this is intended. since add-doctor
takes in only the name parameter, everything after n/ will be treated as part of the name, ie. name would include what was typed: DR Bob p/987672
. this would then prompt the error message names should only contain alphanumeric characters and spaces
137 (other comment)
invalid because this is intended, since the levenshtein algorithm is used to determine what the closest word is to the invalid command. exit
happens to be the closest word to delete
or list
, with it requiring a minimum of 4 edits, while delete --> delete-appt and list --> list-appt requires a minimum of 5 edits.
138 (other comment)
invalid, because integer in this case refers to the datatype integer, which is from (-2^31 - 1) to (2^31 - 1'). 10000000000000 is not considered to be an integer, and therefore the right message was shown.
139 (other comment)
invalid. UG states:
Either and only one,
TIMESLOT_END
orTIMESLOT_DURATION
, must be provided.
140 (other comment)
invalid, feature suggestion
141 (other comment)
duplicate of #90
142 (other comment)
closed to avoid clutter
143 (other comment)
duplicate of #90, closed to avoid clutter
144 (other comment)
duplicate of #90, closed to avoid clutter
145 (other comment)
duplicate of #91, closed to avoid clutter
146 (other comment)
UG bug
147 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
148 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
149 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
150 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
151 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
152 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
153 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
154 (other comment)
same UG bug, duplicate of #102, closed to avoid clutter
155 (other comment)
duplicate of #112, closed to avoid clutter
156 (other comment)
duplicate of #116, closed to avoid clutter
157 (other comment)
duplicate of #116, closed to avoid clutter
158 (other comment)
duplicate of #116, closed to avoid clutter
159 (other comment)
duplicate of #116, closed to avoid clutter
160 (other comment)
duplicate of #116, closed to avoid clutter
161 (other comment)
duplicate of #93, closed to avoid clutter
162 (other comment)
duplicate of #93, closed to avoid clutter
163 (other comment)
duplicate of #93, closed to avoid clutter
164 (other comment)
duplicate of #126, closed to avoid clutter
165 (other comment)
invalid, similar to #129
166 (other comment)
duplicate of #102, closed to avoid clutter
167 (other comment)
UG bug, duplicate of #102, closed to avoid clutter
168 (other comment)
duplicate of #99, closed to avoid clutter
169 (other comment)
duplicate of #126, closed to avoid clutter
170 (other comment)
UG bug, duplicate of #102, closed to avoid clutter
171 (other comment)
duplicate of #125, closed to avoid clutter
172 (other comment)
duplicate of #99, closed to avoid clutter
173 (other comment)
also fixes #112
174 (other comment)
to prevent possible FeatureFlaw bugs
@samleewy
(93 comments)1 (commented on others PR)
It seems like this exception is relating to session
, but i'm not sure if it should be named as IllegalArgumentException
, since there's the default java exception IllegalArgumentException
. Might be confusing in future. Perhaps we can further discuss this? @JonahhGohh
2 (commented on others PR)
🎉
3 (commented on others PR)
minor bug: find_session KEYWORD
instead of find_student KEYWORD
4 (commented on others PR)
Perhaps we could consider the test case where it starts with 6/8/9, but has >8 digits in total, instead of this current one (or we could create a new one). Not sure how important it will be, but feels good to have!
5 (commented on others PR)
I believe should be k/120
instead of l/120
, and t/18:00
instead of t/1800
!
6 (commented on others PR)
Perhaps we could include an assertion for invalid days in month, for example 31 Apr is invalid since April only has 30 days, something similar to leap year check! (does the exception catch this actually?)
7 (commented on others PR)
This should evaluate to delete_session John Doe 1
but should be delete_session n/John Doe i/1
8 (commented on others PR)
HAHA this one abit ocd but perhaps make all the points not end with a dot for uniformity, otherwise lgtm!
9 (commented on others PR)
think you forgot to remove the comment right here
10 (commented on others PR)
Are these commented codes rough work? Might be better to remove.
11 (commented on others PR)
that's right!
12 (commented on others PR)
I'm not sure if the bracket filtered feels abit out of place. Maybe something like Listing students' emails based on current list
might be better? Hahaha, maybe someone else can phrase it better!
13 (commented on others PR)
Nice catch on the missing delete_student
!
14 (commented on others PR)
I think the header can be "Fees"?
15 (commented on others PR)
Then under action "Student fee by month", what do you think?
16 (commented on others PR)
I'm assuming the method is named parseStudyLevel
to be uniform with the rest. However, for study level, it isn't exactly 'parsing', since it's String
-> String
. As compared to say email, where it's String
-> Email
.
Perhaps without changing method name, we could change the description to "Sanitize/Clean studyLevel input"? or something along that line. Don't think it's a big issue tbh, but what do y'all think?
Same goes for relationship as well!
17 (commented on others PR)
I think this might violate the 'explain WHAT and WHY, not HOW' @ textbook.
18 (commented on others PR)
Same comment as above (regarding WHAT and WHY not HOW).
19 (commented on others PR)
Honestly, i don't have a clear idea of how to phrase as well 🤣
One way is to remove comments, since it's pretty self-explanatory (as per textbook), maybe someone else has a better suggestion? @AY2021S2-CS2103T-T11-1/developers
20 (commented on others PR)
Minor change: Student
instead of student
21 (commented on others PR)
Do you want to mention about how the filteredStudentList is updated as well?
22 (commented on others PR)
I think 'UI shows updated student list' comes before 'Logic saves the address book to the storage', according to the code:
commandResult = command.execute(model);
try {
storage.saveAddressBook(model.getAddressBook());
} catch (IOException ioe) {
throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);
}
You can double check!
23 (commented on others PR)
How about a test case to consider when all/some parameters are null?
new Tuition(null, null, null, null)
24 (commented on others PR)
Perhaps {@code Session}
?
25 (commented on others PR)
I think @yungweezy had Java 11
in code block in one of his PR, guess we gotta decide when we merge eventually?
26 (commented on others PR)
Should we change 'user' to 'tutor' instead? Might be more "relatable"
27 (commented on others PR)
Suggestion to rephrase: The Home tab gives tutors a quick overview of important matters. This includes their upcoming tuition lessons, as well as tuition fees receivable for the past 3 months.
28 (commented on others PR)
ok!
29 (commented on others PR)
Should help be placed below together with clear
and exit
instead?
30 (commented on others PR)
This is not related to your UG, but practicality wise, isn't it funny to have us accept same name but different cases? HAHA
31 (commented on others PR)
Not too sure if the 'Overlapping session will return an error' is necessary. But the 'takes care of overlapping session' also sounds very ambiguous (like we have some algo or something).
Perhaps phrase it in a way like 'TutorBuddy takes care of overlapping session for you by giving a gentle prompt, so you don't have to worry about it'
32 (commented on others PR)
I think don't need to quote 'sample' haha
33 (commented on others PR)
probably could rename it to boolean hasOccuredAtDate
, since the name seems to clash with the method name.
34 (commented on others PR)
same for this as well, suggest to rename to hasOccuredAtTime
35 (commented on others PR)
Thanks for figuring this out! neat!!
36 (commented on others PR)
I'm assuming it's (firstInSpan.numOfDayTo(lastInSpan) / interval.getValue()) + 1
. might be better to put brackets!
37 (commented on others PR)
recommend to rename to tuition1
and tuition2
!
38 (commented on others PR)
Perhaps would be better if dd MMM YYYY
, so it'll be 29 Mar 2021. more reader friendly!
39 (commented on others PR)
Seems like the sessionType is hard-coded for now. Perhaps create a variable in SessionCard.java
for sessionType then hard code from there instead? To reduce confusion later on!
40 (commented on others PR)
So the time is a tab itself 🤣
This is not urgent, but perhaps we could shift the date/time to the extreme right? Would look nicer!
41 (commented on others PR)
Perhaps don't make it a tab! But yes can make an issue, not urgent!
42 (commented on others PR)
Might be better to flip points 2 and 3, so that it looks more 'uniform'
43 (commented on others PR)
Good to have a space between examples and bracket
44 (commented on others PR)
So, Examples (if applicable)
45 (commented on others PR)
Yeah same, think it's cuz it's within a >div>
. Might need to replace clear with >code>clear>/code>
(not too sure if it works)
46 (commented on others PR)
Same soln as above, worth a try. @JonahhGohh
47 (commented on others PR)
Riding onto this thread for another reason: should it be indices instead of indexes? HAHA
48 (commented on others PR)
I think can remove 'filtered'?
"Returns an unmodifiable view of full list of students"
49 (commented on others PR)
hey @nowknowing, was the function outputting incorrect results prior to this?
50 (commented on others PR)
ah, you're referring to the case where it'll break the condition immediately if it doesn't meet !startAfter
?
51 (commented on others PR)
This is more of aesthetics, but would be great if we can do sth like:
sessionType.setStyle("-fx-background-color: >color>");
and give different colors for R & I.
Then, add padding for sessionType
label in the fxml.
Just some aesthetic improvements, not necessary if too rush!
52 (commented on others PR)
Would suggest to abstract:
populateTuitionList(studentList, tuitionList);
sortByDate(tuitionList);
populateUpcomingTuitionListView(tuitionList);
into another function. seems like you're repeating these 3 lines both outside and inside the listener.
53 (commented on others PR)
might want to consider using tuitionList.sorted(...)
instead. Might be cleaner, just like how I did it in calendar. but this is fine as well!
54 (commented on others PR)
If this function checks for whether it's within today, tomorrow and the following day, do we need to pass in the parameters today
and dayAfterTomorrow
? cuz probably can use LocalDateTime.now()
and LocalDateTime.now().plusDays(2)
.
Unless this is generalised to a "check within data range" kinda function.
55 (commented on others PR)
Unimportant feature: maybe can add padding as mentioned above.
56 (commented on others PR)
right... i see where you're coming from. i doubt there's an issue with code quality, just that i personally feel that it's abit odd to be named isWithinThreeDaysRange
and we have to indicate today+2days (dayAfterTomorrow
) date as well haha
if you're ok with it then feel free to merge!
on second thought: MUST the dayAfterTomorrow
be today+2days? will it break if another dev inputs a random date? maybe assertion will be good here then.
57 (commented on others PR)
Probably can run a validation to check if endPeriod
is after startPeriod
? or maybe an assert since this won't be used publicly.
58 (commented on others PR)
Not related to code, but is GetPrev3MonthFeeCommand
, the number 3, within the naming convention? If it's fine then ok! Just afraid they point it out.
59 (commented on others PR)
I would think Converts to the local date time format from supplied {@code Month} and {@code Year}
might be better.
60 (commented on others PR)
I would think if this is used as a generalized "convert from Month & Year to LocalDate" function, then the naming could be something like 'convert to local datetime of start of month'?
61 (commented on others PR)
maybe getMonthFeeByPeriod
? getCurrMonthFee
seems to imply the current month, which is today's month till next month, while this function takes it start period and endperiod. just for clarity!
62 (commented on others PR)
maybe execute_correctMonthlyFee_success()
would be better.
63 (commented on others PR)
I'm not sure if we should hardcode this, maybe run some codes to calculate Alice's fees for feb 2021 then concatenate it with the expectedResult?
I'm just afraid someone amends the TypicalStudent's sessions and this will screw up. What do you think?
64 (commented on others PR)
nice change!
65 (commented on others PR)
seems to be quite a chunky function. im unable to think of any better implementation right now, but making it less 'chunky' can be done for 1.4 right?
66 (commented on others PR)
The words in bracket seems quite distracting to the actual command. I almost thought it required n/ i/
only, perhaps move the explanation down?
67 (commented on others PR)
Same point as above.
68 (commented on others PR)
Not too sure if this is mentioned before, but is time really needed? since the recurring sessions should have the same time for all.
(doesn't affect functionality, but looking at a user experience pov)
69 (commented on others PR)
Not sure if should change to include sessions as well? so 'lists all students and sessions'
70 (commented on others PR)
Would it make sense to check for negative monthly fee here, and as well as in your MonthlyFee.java
?
71 (commented on others PR)
maybe a different object check as well?
assertFalse(year2021, year2020)
72 (commented on others PR)
Actually now that I think about this again, maybe we should build a new temporary student from scratch, add it to the list of students temporarily, then feed it through GetMonthlyFeeCommand
and compare the results with a 'hardcoded' result. Not too sure how it'll improve efficiency though, but just a suggestion! shouldn't be an issue if we continue with this current implementation.
73 (commented on others PR)
was thinking we can build a new student so we can hardcode the results HAHA since ALICE might be susceptible to edits in future. but it's ok, let's keep it this way!!
74 (commented on others PR)
Missing a gap between [n/NAME]
and [p/STUDENT_PHONE_NUMBER]
The sentence for edit_student
seem to truncate on my side, i think there's a way to wrap text (?), refer to screenshot below!
75 (commented on others PR)
Think this concerns the UG as well.
In the individual section, add_rec_session
is:
add_rec_session n/STUDENT_NAME d/START_DATE e/END_DATE b/INTERVAL t/TIME k/DURATION s/SUBJECT f/FEE
In the summary, it's the one you provided. probably gotta decide on one?
76 (commented on others PR)
recurring* typo haha
77 (commented on others PR)
sorry, referring to line 123 only.
78 (commented on others PR)
Some english: when the user first opens** the application
79 (commented on others PR)
Not sure if we should rename voluntary session to free instead? While reading it, thought it was a new kind of session HAHA
Also, not sure if we should justify why we chose 0 - $10,000, feels like we're doing it just not to get penalised HAHA maybe specifying the range is enough. either way works!
80 (commented on others PR)
Actually on second thought after reading your codes below: maybe can rephrase it to, accepts FEE
within an acceptable range of values between 0 to 9999.99 (both inclusive)
81 (commented on others PR)
Probably we can do a 9999.999 check as well for 2dp?
82 (commented on others PR)
thanks for helping!
83 (commented on others PR)
does this and the remaining hashcode test cases somehow increase coverage? hahaha
84 (commented on others PR)
Actually not sure if we should use 'calculating', maybe 'display'?
85 (commented on others PR)
sorry ah, what's this referring to? 'save time by creating multiple sessions', are you referring to recurring?
86 (commented on others PR)
i think maybe: 'so that I can update cancelled tuition session'? haha
87 (commented on others PR)
maybe the so that I can part can change to:
have an overview of my hectic schedules at a glance
88 (commented on others PR)
should we be specific and mention session inputs instead?
89 (commented on others PR)
same comment as above, maybe mention specifically 'session inputs'?
90 (commented on others PR)
actually do we need to create an extension for students don't exist?
91 (commented on others PR)
Also have to verify whether session exist maybe?
92 (commented on others PR)
Same comment as above.
93 (commented on others PR)
i think should be Today
button instead.
94 (commented on own PR)
The chunk (from line 114 to 138) is commented out using HTML >!-- --> tags! So should be irrelevant for now.
95 (commented on own PR)
Yup, I agree. something we can keep in consideration beyond v1.2.
96 (commented on own PR)
Oh and as for the comment out, the chunk (from line 114 to 138) is commented out using HTML >!-- --> tags! So should be irrelevant for now.
97 (commented on own PR)
Commenting out in the middle of list items creates a bit of a weird gap in between. I'll take your suggestion and comment it out at the bottom, so we can restore it easier next time!
98 (commented on own PR)
I think can imagine the listener as something that's running in the "background" and always monitoring the ObservableList>Student>
, so whenever there's any changes to the list of students, the code within the block will be invoked. As for the change.next()
, if there are multiple changes made, they're represented as a 'separate change' (list of changes), so change.next()
loops through it (might not be 100% correct in this part).
The ListView>Session>
is actually bound to the ObservableList>Session> sessionList
, so whenever there's a change in the sessionList, which is shown in this block of code you commented, the ListView will update as well.
(might not be 100% correct)
99 (commented on own PR)
Amended in next commit!
100 (commented on own PR)
Amended in next commit!
101 (commented on own PR)
Amended in next commit!
102 (commented on own PR)
Amended in next commit!
103 (commented on own PR)
Amended in next commit!
104 (commented on own PR)
I think that's how it's supposed to be, just like in JsonAdaptedStudent
105 (commented on own PR)
Will be done in 1.3!
106 (commented on own PR)
No sir, it should be students.deleteSession(student, sessionIndex);
107 (commented on own PR)
Amended in next commit!
108 (commented on own PR)
Amended in next commit!
109 (commented on own PR)
It's activity and sequence diagram! hahaha
110 (commented on own PR)
Oh yes, i also found the indentation weird as well. Will make the change, thanks!!
111 (commented on own PR)
Whoops was copied wholesale 😂 will make the change, thanks!
112 (commented on own PR)
Ok thanks!!
113 (commented on own PR)
ok got it! will make the changes
114 (commented on own PR)
actually used cmpSessionDate
to shorten code 😆
will make the change, for both cmpSessionDate
and a
!
115 (commented on own PR)
got it!
116 (commented on own PR)
got it!
117 (commented on own PR)
got it!
118 (other comment)
looks good to me as well, nice catch, will proceed to merge.
119 (other comment)
Made changes mentioned by @yungweezy @enhao25, merged! 🎉
120 (other comment)
@samleewy I think the comments change and parse method name change, I'll create a new issue so that we can discuss. For now, maybe you can approve this first to fix the trim date bug?
sure!
121 (other comment)
LGTM!
What do you having this condition as "valid command input format" instead? I feel like "command exist" is not very clear 😅
@JonahhGohh ok will change, thanks!
122 (other comment)
Not a code review, but perhaps can link it to your Issue #84 to close.
123 (other comment)
Tom was added first with:
start time: 12:00
duration: 1hour
Samuel Lee was added second with:
start time: 11:00
duration: 2hours
Should conflict, but didn't. KIV.
124 (other comment)
Thanks for the hard work on the Calendar feature. The UI looks amazing and the feature seems to be working well. Can't seem to find any bugs.
One thing to consider is that find_student also filters the calendar view. We might need to mention this in our UG also.
OH RIGHT. the find_student
will filter the calendar view as well.... Doesn't feel ideal 😂 Will see if I'm able to do it separate from it.
125 (other comment)
Thanks for the hard work on the Calendar feature. The UI looks amazing and the feature seems to be working well. Can't seem to find any bugs.
One thing to consider is that find_student also filters the calendar view. We might need to mention this in our UG also.
OH RIGHT. the
find_student
will filter the calendar view as well.... Doesn't feel ideal 😂 Will see if I'm able to do it separate from it.
I added a PR for this #148. I saw that u did something as well ah. But then I just created a method for it so that everyone can use it ah.
@enhao25
ok! will change to your method after the PR goes thru. thanks
126 (other comment)
Github doesn't allow me to add comment on unchanged lines 😦 but i noticed that you passed in
logic
into yourCalendarView
constructor.
Since you are only using logic to get the full student list, how about using the
ObservableList>Student>
parameter in the constructor and usinglogic.getAddressBook().getStudentList()
inMainWindow
.
This also standardizes with the other code in the
fillInnerParts()
method.
@JonahhGohh yep! I made this change in the latest commit together with @enhao25's getFullStudentList()
. If everything's ok then i'll merge!
127 (other comment)
LGTM! Tried testing the calendar feature on my computer and works nicely! Codebase looks good also.
I think this issue was brought out recently in the group chat regarding overlapping sessions. But I think it exist as an issue already and is not part of calendar.
Hence, no issue and approved!
thanks!
128 (other comment)
@enhao25 am guessing this relates to the duration enforcement check that we were referring to.
129 (other comment)
An alternative might be to remove in UG for the "fast typing" criteria? Not sure how that'll affect grading
130 (other comment)
Even though the reporter didn't particularly point out what was not understood, I agree with this.
Perhaps shouldn't use term such as "spawn". And gotta find a way to make them visualise it better. Perhaps through images?
131 (other comment)
I'm not sure if it's allowed in 1.4?
132 (other comment)
Yes it was a "feature" for emails
. I think we should just remove it for safety reasons. will do it!
133 (other comment)
Wanna do a quick test to increase coverage?
done! the report's not showing here, coverage seems to have went up after introducing test case.
134 (other comment)
If possible, please show the appropriate screenshot? thanks! @Winniehyx
135 (other comment)
The team believes the description is clear enough.
136 (other comment)
resolves #230
resolves #231
resolves #232
137 (other comment)
@yungweezy are there plans to address this issue? if not you can close it.
138 (other comment)
Issue's screenshot does not correspond to the issue title. closed.
139 (other comment)
Is this done @enhao25? If yes we can close!
@enhao25
(85 comments)1 (commented on others PR)
Actually just thinking what would happen if we put the time as 23:592. This is because when trying out the iP, I noticed that one of those that I am reviewing failed this test, so you could include 1 more test with this value to ensure that adding extra values to the timing will not cause any unexpected behavior ah.
2 (commented on others PR)
Yeap! I think that the test case should fail with these values.
3 (commented on others PR)
Hmmmm honestly I tot that changing the values for amy bee here will will affect places like the CommandTestUtil.java as well and fails the test case. But seems like it passes the test case. Seems like they are not linked then. But just in case next time there is some error for this, we might need to check back ah.
4 (commented on others PR)
Should we comment out find_session here instead of deleting them?
5 (commented on others PR)
Ohya actually is find_session part of v1.2? Cos now that I think about it, its quite weird for find_session to include the Index. Like it wouldn't make sense for me to look through the whole list of session and try to get the individual index and then run find_session again, cos the information we give from the session list and find_session would be exactly the same. It would make more sense for it to be just find_session s/STUDENT_NAME. But if this is not under v1.2, I think we should comment this out first before we discuss again?
6 (commented on others PR)
As per the above, this seems to follow the find_session s/STUDENT_NAME instead ah, should we comment this out first?
7 (commented on others PR)
Ah ok! Didn't see that the comment header start at line 114.
8 (commented on others PR)
Great!
9 (commented on others PR)
Hi, just want to check as the previous line ": Deletes the student identified by the index number used in the displayed student list.\n" already has an \n, does having an additional \nParameters here cause anything weird on the UI? Might be better to just keep one.
10 (commented on others PR)
Hi, just checking if this is something extra that you did that isn't really related to the UI. Can I check if the purpose of this code is to check if the equals method works as expected?
11 (commented on others PR)
Hmmm using student instead of s, might be better in this case
12 (commented on others PR)
Hmmm is these commented out withsession intended?
13 (commented on others PR)
Looks good! Just wondering if there could be comments here similar to ModelManagerTest.java equals method, to better allow the others reading this code to understand the test cases here better.
14 (commented on others PR)
Hi, just wondering, since the AddressBookParser is in `` in the next line, we could possibility AddressBookParser
here for consistency as well.
15 (commented on others PR)
Haha based on what jonah said, actually why you changed also ah. I tot its part of Logic, isit because you did the delete_student command previously?
16 (commented on others PR)
Hi, perhaps you could copy the diagram over to a folder with your name instead and restore the original file ah.
17 (commented on others PR)
Hmmm I think line 154 to 155 and line 157 to 158 are duplicates ah.
18 (commented on others PR)
O.o damnnn u did both. Haha ok sorry. Let me go approve ah
19 (commented on others PR)
Actually I think this part is abit confusing for me, aliceInTuition when calling new Tuition() has a sessionIndex of 2, however, we assertNotEquals that getSessionIndex() is 2, isit because of the difference between the zero index and one index?
20 (commented on others PR)
Same comment as the getSessionIndex() above.
21 (commented on others PR)
I think there is additional space on to LogicManager
, but small problem ah.
22 (commented on others PR)
Actually you could include ../style.puml instead, so you don't have to make a new copy of the style.puml in your folder ah.
23 (commented on others PR)
Only one comment, I was thinking the indentation for the addSession(withSession previously) was abit weird and should have the same lvl of indentation with withStudyLevel instead. Do you think it would be better if we did that?
24 (commented on others PR)
Actually outside of scope, but this comment here seems abit unnecessary with ////, I think we could just use // instead, so that it won't be flagged as a "bug" during PE dry run.
25 (commented on others PR)
Hmmmm actually using TAG in this case might not be intuitive as we do not have a tag parameter in our entire application. If we are to include this here, maybe a different parameter and including the edit_student in the UG would then be more useful.
26 (commented on others PR)
Using KEYWORDS during find_student
as the example might be better than using tags here.
27 (commented on others PR)
Looks good, however, do remember to add this command over to the TOC and the command summary at the end of the page for consistency.
28 (commented on others PR)
Hi, just wondering, is "to the TutorBuddy" quite werid, I tink its copied over from single session also. I think changing over to "to TutorBuddy" removing "the" would be better. What do you think?
29 (commented on others PR)
Hmmm maybe using "class" here might not be suitable as a class is usually associated with a group 1-many tuition. Just putting as "Or efficient way to calculate your incomes?" might be better.
30 (commented on others PR)
Hi shion! I think you have updated the class at some other places. I think updating it here under class income will be good as well. (E.g. Lesson incomes instead class incomes)
31 (commented on others PR)
Yo actually what is this for ah?
32 (commented on others PR)
Hi, understand the the testing is still a work in progress, but I think it could be better if we didn't use System.out.println() when we are merging to master. Using assertions might be better.
33 (commented on others PR)
LGTM. But was thinking if we can be more explicit that the interval is in terms of the number of days.
34 (commented on others PR)
Hi was just wondering what could does >p> mean. Isit a typo?
35 (commented on others PR)
Hi, just checking, for this implementation, we run super(session) to create a standalone session out, but then it doesn't seem to keep a reference to the created session anymore. Can I check if that is the intended effect?
36 (commented on others PR)
Hmmmm already, actually didn't use super often so not sure how it would work out. We could keep this in mind and when the rest of us work on features that uses recurring session, see if we are able to perform all the actions we want, even w/o keeping a reference to it ba.
37 (commented on others PR)
Actually not sure if other groups will nitpick this, but we could give s1 and s2 a more meaningful name such as sessionDate1 and sessionDate2. Will be longer, but at least we prevent other group from nitpicking these small bugs ah.
38 (commented on others PR)
Hi, maybe we could add a //TODO: tag here, so that we would remember to come back here in the near future and work on this.
39 (commented on others PR)
Also I am just wondering if there could be a way (Probably through a command) to add a recurring session into to application, so that the reviewers can checkout and run the PR to perform manual testing as well, to better understand your implementation. Not sure if you want to work on that first before we reveal and approve this to ensure that the implementation passes some light testing. If not it might be hard for me and jonah to test if our feature works if we couldn't add recurring session inside to the addressbook to test.
40 (commented on others PR)
LGTM, I think "40" is missing a space, to be "40 "
41 (commented on others PR)
Maybe you would want to pull upstream first and merge inside, I believe that choon wei added a functionally that previously adding session that clashes. (E.g. If a session that starts on 2020-01-01 12.00 that last for 120mins, we can't create another session that is between 2020-01-01 12.00 to 2020-01-01 13.59) Although, with recurring session, this is much harder to achieve, because we need to take into consideration from the start to end date, if adding this rec_session will clash with future individual sessions as well. Not sure if you want to push the 2nd part into a separate issue as it seems like quite a big implementation.
42 (commented on others PR)
Ohya one of the possible issue is that I think the storage has no way of identifying now whether a session is a recurring session or a standalone session. I tried creating the recurring session, close the app and open it again, and the recurring session becomes a standalone session now. Might need to take the storage into consideration, either in this iteration, or as a separate issue.
43 (commented on others PR)
Hi thanks for the hard work. One of the bugs I found was that if I were to put a value where the end date and start date doesn't match, instead of showing an error message, an exception occurs. I think for this, it would be better to show some form of error message to the user instead.
44 (commented on others PR)
Hi, so sorry, but I am not sure where the error is.
However, if you run the command:
add_rec_session n/Alex Yeoh d/2020-03-03 t/12:00 k/90 s/Math f/40 b/7 e/2020-03-17
then close the application, open the application again.
Run the command:
delete_session n/Alex Yeoh i/>number of the recurring session>
You will notice that the output will be "Deleted Session: Date: 2020-03-03; Time: 12:00; Duration: 90; Subject: Math; Fee: 40.0" instead of "Deleted Recurring Session: Date: 2020-03-03; Time: 12:00; Duration: 90; Subject: Math; Fee: 40.0; Interval: 7; Last Date: 2020-03-17".
Hence, the although the storage is storing the interval and last session value inside the json file, I think when the system reads from the storage, it creates a session instead of a recurring session. Might need to look into that.
45 (commented on others PR)
Just some minor consistency issue, this could end with a . as per your other javadoc sentences. Using populates instead of populate here might be better according to the java coding standard.
46 (commented on others PR)
Hi, was just thinking that maybe displaying date and then time could be better in this case, just a suggestion ah as it feels more intuitive for me, although is debatable.
47 (commented on others PR)
Hi, was just thinking that maybe capitalizing the first letter for each of the sub section would be better. "the result.." to change to "The result". This is the same for 1 and 2 as well.
48 (commented on others PR)
Nice! Was thinking if it might be good to use >div style="page-break-after: always;">>/div> as stated in https://se-education.org/guides/tutorials/savingPdf.html for us to ensure that the introduction section always starts at a new page. Might be good to include this at before the start of a key section (E.g. Before Intro, Commands and Command Summary)
49 (commented on others PR)
Abit OCD, but I think most of the examples don't end with ".", might be better to remove it as well.
50 (commented on others PR)
Just thinking that edit_student before delete_student might be a better flow. Since a user can add a student, edit that student and then proceed to remove it after.
51 (commented on others PR)
Just wondering if writing the key features in point form would be better to catch the attention of the user.
52 (commented on others PR)
Actually abit OCD, but as per the java coding standard for javaDocs, maybe adding a full stop to all of the javaDoc comments might be more consistent.
53 (commented on others PR)
Hi, was just wondering is using sessionDateComparator instead of cmpSessionDate might be more meaningful.
Replacing "a" for the "a -> a.." to something more meaningful will be helpful for the developers as well.
54 (commented on others PR)
Maybe can use "Must" instead of "must" for consistency.
55 (commented on others PR)
Hi, was thinking that maybe a variable name such as consistentDate1 might be more meaningful here.
56 (commented on others PR)
Hi, maybe using something like "getIntervalTest" might make it more explicate that its a method for testing.
57 (commented on others PR)
Hi, I think you have missed out on writing the description for the return method here.
58 (commented on others PR)
One of my PR changes the method from .addSession to .addSessions instead, we might get some conflict because of that.
59 (commented on others PR)
Similar to the review above.
60 (commented on others PR)
Hi, actually I am abit confused between this isConsistent method compared to the isValidEnd method based on the description. One mention that it returns true if it makes a valid lastSessionDate while the other returns true if it is consistent with the lastSessionDate. The 2 descriptions seems very similar in my opinion.
61 (commented on others PR)
Hi maybe this can be session instead of s. Just worried that using s instead would violate the java coding standard.
62 (commented on others PR)
Maybe it would be better to include this difference in the description as well. Because I think if u didn't tell me this, I would not have known from the description alone.
63 (commented on others PR)
Nice! Seems to work well for recurring sessions with multiple dates. However, I tried to use delete_rec_session on a recurring session with only 1 date and it returns an exception, maybe you want to look into that.
64 (commented on others PR)
Maybe we want to include what we did "By spliting up the remaining sessions into 2 separate sessions.". I have a feeling that this delete_rec_session command will be quite confusing for the users / developers. Will need to explain it carefully and update the UG accordingly.
65 (commented on others PR)
Hmmmm for me this description is quite confusing also. Maybe something like "Removes a single {@code Session} with {@code sessionDate} from the recurring session and splits up the remaining sessions into 2 separate recurring sessions. We identify the recurring sessions to perform this action using {@code sessionIndex} and {@code name}." would be better?
66 (commented on others PR)
Maybe including the description here about splitting up the remaining sessions into 2 (All the sessions that happens before the deleted session are in one recurring session, all sessions after the deleted session are created in another recurring session) might be better?
67 (commented on others PR)
Actually not related to the documentation, but why do we need time here again ah? Cos once we have the student name and the session index, we would have known the time already right? There can only be 1 time right.
68 (commented on others PR)
Looks good! Do remember to include this in the TOC and the command summary as well!
69 (commented on others PR)
Ok sure! Got it!
70 (commented on others PR)
Yeap! Looks better! Thanks thanks!
71 (commented on others PR)
Possible long slap here, the other group might state that this is a code quality violation, so do take note.
72 (commented on others PR)
Same here, possible long SLAP.
73 (commented on others PR)
Image might need to be updated to the one with the monthly fees UI done up
74 (commented on others PR)
I think the message for the help command can be changed to "Displays a help window of the different commands available on TutorBuddy and a link to the user guide."
75 (commented on others PR)
Hi, was just wondering if the ArchitectureSequenceDiagram has been changed to match any command, if yes, do put it into a folder with ur name and rename the image src accordingly! Thanks!
76 (commented on others PR)
Actually I think we do not have to edit the tutorial codes ah. It probably shows up here cos of refactoring.
77 (commented on others PR)
Yeah, I think as per the tutorial yst, having a class diagram of a single class might not add value in this case.
78 (commented on others PR)
Hi! I would suggest adding this to your folder. Maybe deleting the old DeleteSequenceDiagram.png might be good also, if its still in the file.
79 (commented on others PR)
Hi, I was thinking if we could add in some example, "...number of education levels (E.g. Sec 2 / Secondary 2 / Computing / CS1101S)"
80 (commented on others PR)
Hmmmm is "Rationale" supposed to be "Highlight"?
81 (commented on others PR)
Maybe removing the "be" from "should be fall under" would be better.
82 (commented on others PR)
Haha, not sure if it is possible to abstract further. But then as attached below, when grading our project, having reasonable SLAP methods and not having deeply nested method is part of the consideration in grading. So it might be better to try to split up the code and attempt to reduce the nesting here also.
83 (commented on others PR)
Actually the method name of "AddSessions" and the description that we "Set" the session doesn't really match. Maybe changing the description to "Adds any number of sessions to the current student's session list." or something might be better.
84 (commented on others PR)
Maybe we want to include the rationale of why we do it this way, (To avoid the 2038 problem which can found here)
85 (commented on others PR)
Hi, actually not sure where this bug occurs, but when I was testing I noticed there is a weird bug now. As seen below, I added a 1970 session to TutorBuddy, but then in sessions, it displays the date is 1971 instead. Its the same for other values where it +1 to the session. Storage still shows the correct value, so not sure if the +1 only comes in in the UI. Seems to happen in master also, u might want to give it a try.
86 (commented on own PR)
Ok ah I will change the values in the file back to the original code, I have no idea why this file is in our directory also.
87 (commented on own PR)
Updated.
88 (commented on own PR)
Updated.
89 (commented on own PR)
Updated.
90 (commented on own PR)
Waaaa nice catch man! Updated it accordingly already!
91 (commented on own PR)
Ok good catch! Have updated the test to include these 3 cases.
92 (commented on own PR)
Haha alright! Updated
93 (commented on own PR)
Haha LMAO, but I think its fine tou, it allows the reader to understand that its filtered, and can be the full list also.
94 (commented on own PR)
Alright, updated to Listing students' emails based on current list instead and also updated the TOC
95 (commented on own PR)
Haha yeah I tot of before, but then I think at most there will only be 2 commands, one to get monthly fee for a particular month, one to get past 3 months fee. So not sure if it should be a section by itself. Although I think doesn't hurt to change ba. I will make the changes first then.
96 (commented on own PR)
Actually not sure if its ambiguous, I think if we really want to be specific "Student fee for a particular month and year" would be more accurate. Will update to this version first.
97 (commented on own PR)
Nice catch!
98 (commented on own PR)
Took the comment and added the information
99 (commented on own PR)
Nice catch! Updated as required
100 (commented on own PR)
Hmmm ok, seems like ur use the filteredStudentList in your explanation also, so I included them as well ah.
101 (commented on own PR)
Ah ok! Seems logically, updated it already.
102 (commented on own PR)
Ok good suggestion, the only common place for both code base is on model. Hence, I have abstracted out the get fees code over to model. Do have a look, the output should still be the same. Thank you!
103 (commented on own PR)
Ahhh right! I have changed it to 3_month_fees instead.
104 (commented on own PR)
Alright! Change from that to "Shows the totalled fees per month, for this month + previous 2 months" instead.
105 (commented on own PR)
Yeap should be correct. I copied over from https://github.com/nus-cs2103-AY2021S2/tp/blob/master/docs/UserGuide.md. On github, it shows as per the picture as well, however when its in the webpage, it should looks as what we expected.
106 (commented on own PR)
Updated.
107 (commented on own PR)
Hmmmm I followed https://nus-cs2103-ay2021s2.github.io/tp/UserGuide.html ah. I think the reason why they did that is that it is more sequential ah. A person who starts must know how to "get help" before even starting to learn about the commands. After trying out all the commands, he / she can then clear the application and then "start" actually using their own data for the application. Thereafter they can exit the application. This seems to be quite a logic flow. What do you think?
108 (commented on own PR)
Haha yeah ah. But I think if we want to change, we need to update it at alot of places though. So I put it here as a "feature", so people can't dispute with us, saying its a bug ah.
109 (commented on own PR)
Updated
110 (commented on own PR)
Yeap sounds better! Have updated.
111 (commented on own PR)
Anw if you want, we could create an issue, then if we have time then we can work on that ah. If not then we will just go along with this?
112 (commented on own PR)
Haha right! Thanks thanks! Have updated in the latest commit!
113 (commented on own PR)
Haha right! Will remove it! Thanks thanks!
114 (commented on own PR)
Ah right! It will make the code looks nicer ah. Have done so in the latest commit! Thanks!
115 (commented on own PR)
Alright make sense! I just put an assertion here ah
116 (commented on own PR)
Actually this command has been removed, so it should be fine ah.
117 (commented on own PR)
Updated to be getFirstDayOfMonth().
118 (commented on own PR)
Changed to Gets the first day of the {@code Month} and {@code Year} in local date time format.
instead due to the change in name.
119 (commented on own PR)
Yeap! Sounds better!
120 (commented on own PR)
Haha ok! This code is moved to feeUtil, but then hearing ur advice, I have put an assertion that numOfSession >= 0 (Sometimes can be 0 depending on the period given). In this way, if we want to debug, we can just activate assertion, but then it wouldn't return an exception during normal activity.
121 (commented on own PR)
Haha ok sure! Updated.
122 (commented on own PR)
Hmmm ok sure! I have made the amendments, feels like I am doing a calculation outside, and then a calculation inside the command and comparing them. But ok ah, don't think it will ever fail now.
123 (commented on own PR)
Haha nice catch! Changed that in the latest commit liao!
124 (commented on own PR)
O.o hmmmm, we sort of built the ALICE student from scratch also in typical students tou. I am not sure if creating another new student at this point for calculation would have any difference from using existing students for calculation. In regards to hardcoding the answer to check, I am not sure but then I don't really see hardcoded values in test case also, so not sure if its the correct way to do it ah. Thats y eventually I changed to this that seems to follow what the other test cases in AB3 do ah.
125 (commented on own PR)
Yeap sure! Added.
126 (commented on own PR)
O.o right! But its an illegal exception error instead, did that in the latest commit.
127 (commented on own PR)
O.o actually I made some updates, and just check during the parser method before the session is even created ah. See if this version is ok.
128 (commented on own PR)
Nice! Updated in the latest commit!
129 (commented on own PR)
Updated to "TutorBuddy only accepts FEE
within an acceptable range of values between 0 and 999999.99 (both inclusive) as we do not expect a single session to cost more than $999,999.99 or more." as per suggestion.
130 (commented on own PR)
Good suggestion! Have added the check and it is false as expected.
131 (commented on own PR)
Ahhhh yes! Good suggestion! Did that in the latest commit! Will push it up after it has completed the check!
132 (commented on own PR)
Right, this sounds better! Have updated it in the latest commit.
133 (commented on own PR)
Ah right, now that I read again, retrieves doesn't sound right in this case, I have changed to "displays" in the latest commit
134 (commented on own PR)
Ah right! Nice catch. O.o hmmm in this case, we might not need to include the all the different commands for students inside the DG then. I tink the rest of the sections is good, just that the implementation sections could be restructured, but not sure how we should do it also tou. Should I remove those other student's command section first?
135 (commented on own PR)
Haha yeah, I originally did this, then I saw that our previous version had the 2 and 3 separated, so I went ahead with this. Since u agreed that combining is good also, I tink I will do that ah.
136 (commented on own PR)
Ok! But I tink it is still good to specific that its student and session data, hence I change it to 3. TutorBuddy is populated with sample students and sessions data
137 (commented on own PR)
Hmmm also can, I guess people can't say that having more information is a 'bug' ah, so I just put ah, seems safer.
138 (commented on own PR)
Ok updated in the latest commit!
139 (commented on own PR)
Yeap! Sounds good! Have updated in the latest commit.
140 (commented on own PR)
Yeap! Sounds good! Have updated in the latest commit.
141 (commented on own PR)
Ok! Updated in the latest commit.
142 (commented on own PR)
Nice catch! I have updated it in the latest commit.
143 (commented on own PR)
O.o I tink that aileen has mention that calculates in this case is better for the user to understand what the feature is doing. I will just keep it this way if you are ok with this.
144 (commented on own PR)
Hmmmm I think cos we are using a general step that is same across the rest of the use cases also, cos you will see this in other use cases also ah. So we probably don't need to specific what type of inputs, since it should be general enough to be use at other places also ah.
145 (commented on own PR)
Same reply as above.
146 (commented on own PR)
I tink previously step 2 is split into 2, it checks for student info first and then checks for valid input. But then we feel that the "checking" part can be consolidated into 1 single step and just classify it generically as "detects an error", cos when students don't exist, its technically an error as well. Hence this is what we have in the end. Or do you feel that we should still spilt them up again?
147 (commented on own PR)
Same as above ah, cos if we want to add the check if the student / session exist, then we need to do for all liao ah
148 (commented on own PR)
Same comment as above.
149 (commented on own PR)
Yeap sorry man! The "save time by creating multiple sessions" is supposed to be for recurring session, have updated it accordingly.
150 (commented on own PR)
Ok! Sounds better! I have updated it in the latest commit! Thanks!
151 (commented on own PR)
Ok! Sounds better! I have updated it in the latest commit! Thanks!
152 (commented on own PR)
Ok nice catch! Have updated it accordingly.
153 (other comment)
LGTM.
The Student Commands need to be updated after the addition of the Tuition class #40
Ok great! Should we merge this first? Since we are doing this in phrases, I think it makes sense that we merged inside after a functionality is done, compared to merging it when tuition + session + student is done together. I believe choon wei would have to reference this changes to work on the tuition class as well. Delaying the merging could mean that there will be alot of conflicts when we ultimately try to combine everything together.
154 (other comment)
LGTM!
So, this will only be an issue if the user is using a 32-bit system?
Yes I did a rough search and it seems that it is possible that 32-bit system running java might have the 2038 error. Hence I think setting an upper limit to >=2037 would be a good compromise.
155 (other comment)
Tested it and works well!
I like how you compared the dateTime with the compareTo() method, clean af haha.
Regarding the 3 month command, I was thinking of using it for the Home fee section. So not too sure if we need a command for it.
Haha I agree ah! For the 3 month command thingy, I was also thinking that we might not need the command. So haven't added it to the UG yet. Probably can keep the command for testing purposes, and remove it after the UI that uses the 3 month function is done.
156 (other comment)
Ok! I think it shouldn't affect much, so just leaving it as fees should be fine.
157 (other comment)
closes #81
158 (other comment)
Done from https://github.com/AY2021S2-CS2103T-T11-1/tp/pull/118
159 (other comment)
Thanks for the hard work on the Calendar feature. The UI looks amazing and the feature seems to be working well. Can't seem to find any bugs.
One thing to consider is that find_student also filters the calendar view. We might need to mention this in our UG also.
OH RIGHT. the
find_student
will filter the calendar view as well.... Doesn't feel ideal 😂 Will see if I'm able to do it separate from it.
I added a PR for this #148. I saw that u did something as well ah. But then I just created a method for it so that everyone can use it ah.
160 (other comment)
LGTM! utterly minute also debatable so ignore if dont think so, but getFee might benefit from being inclusive on both inputs. looks like its change > to >=. oh but also the caller
Ok ah. The reason why I didn't make it inclusive end is because it is easier to get the months fee. For example to get Mar fee, I can put 1 Mar start, and then plus 1 month to 1 Mar to get 1 Apr as the end.
If it is inclusive, I will have to do it such that the end period is the end of the month, but then some ends at 28, 29, 30 or 31. So its much harder to do that. So for the purpose of monthly fee, I would tink this way is better.
161 (other comment)
Thanks for adding this!
A slight issue is that I was thinking of using this populated data to be UI images shown in the UG.
I think it would be better to show some Individual sessions here instead of all recurring session?
Haha ok! Actually david li has 1 individual session. I have updated one of Bernice's recurring session to session instead. See if its ok now.
162 (other comment)
Haha right! Should change that
163 (other comment)
Yeap! Have solved it already ah! But should probably add the constrait to the UG also ah
164 (other comment)
First part is the issue of the tester that they never read the UG properly. Second part on having a constraint on the fee is valid.
165 (other comment)
Resolves in #176. Only had to add in the constraint to UG.
166 (other comment)
Stated in notes about command format about what would happen when there are multiple value of the same parameter.
167 (other comment)
Not sure if this will be solved after limiting the duration value.
168 (other comment)
Possible limitation of the function?
As per the recommendation, we might want to set this as a known limitation and put it in the UG.
169 (other comment)
We should update the UG to better represent that delete_session also works for recurring session, just that it deletes it entirely.
170 (other comment)
Resolved.
171 (other comment)
It can still be added in if the tutor wants to see it as a past record / use the fee feature.
172 (other comment)
Examples commands are there for new user to try.
173 (other comment)
They are not the same person. One is John Doe and the other person is John, they can be brothers, and are not the same person.
174 (other comment)
Good suggestion to change to the tab after entering the respective commands. Not sure if this is possible.
175 (other comment)
User did not see the UG carefully where we explained about reminders.
176 (other comment)
Don't really know what the person is saying ,but then I tink the description do seems ambiguous. Cos our reminder is for the today's session + next 2 / 3 days session as well, but then I think this description doesn't really describes that.
177 (other comment)
This unknown command is due to add_sessionn/John Doe, by combining them together without any space, the application won't be able to determine what the command is. Hence, the unknown command result is expected.
178 (other comment)
As per testing on my computer, it does show that the student index is invalid.
And also, the image doesn't represent the issue at all. Unable to replicate what the user means.
179 (other comment)
Possibility of having command to switch tab, if that is not considered a feature. If not nothing else we can do at this point.
180 (other comment)
It is "made for freelance tutor" and "optimize for fast typing user". Description seems clear enough already.
181 (other comment)
We do not want to restrict the flexible for study level. So the users can add something like "University" or "CS1101S" if they are TA's in school. Since TA are also technically tutors.
182 (other comment)
Actually I tried also, and somehow the reminders are not working currently.
183 (other comment)
Seems like having a "better" error message now might help us to resolve some bugs.
184 (other comment)
As our program is for any tutors, e.g. primary school / secondary school / music teacher / university TA, it is not feasible for us to limit the scope of study level. However, we could include this constraint in the UG.
185 (other comment)
Same suggestion as before, to navigate to the tab when keying in these commands.
186 (other comment)
Actually idk if this is a good "feature" that we should just include in the UG instead ah. Did @samleewy made it this way when you did the email command thingy? If so, might help to add in to the UG ah.
187 (other comment)
@nowknowing Your suggestion for adding suggestion day (If feasible) might be helpful here.
188 (other comment)
Resolves in #176
189 (other comment)
No login is necessary. Hence having the same email is not an issue.
190 (other comment)
Suggestion for command to bring to the tab.
191 (other comment)
The user probably has an unreal computer resolution. Not sure if it is possible to make it more "scalable" I guess.
192 (other comment)
Resolved in #176.
193 (other comment)
Resolves in #176, such a long duration is no longer possible.
194 (other comment)
Feels more like enhancement to the help window. Although I think the current version is not bad already. I think is possible to not tackle this issue for v1.4.
195 (other comment)
Resolved.
196 (other comment)
Opps I did it in one of my PR #255 cos it was related to #185. Didn't know there was this duplicate. Maybe u can check if it is ok?
197 (other comment)
Resolves with #176
198 (other comment)
Resolves at #176.
199 (other comment)
As a student in primary school might not have an email, it is possible for them to use their parents email instead. Hence, we would allow duplicate email in this case and we would not check for it.
200 (other comment)
Add in as a known limitation under add student.
201 (other comment)
Feature enhancement that is not possible in v1.4.
202 (other comment)
Future enhancement that we can consider beyond v1.4.
203 (other comment)
Future enhancement that we can consider beyond v1.4.
204 (other comment)
Duplicated with #256
205 (other comment)
LGTM
as response to why it doesn't flag,
its cos currently the overlap check is called only through commands.
We have to edit the add(session) methods to call the similar hasOverlap methods, in JsonAdaptedStuent
Ok great!
206 (other comment)
Thanks for the suggestion, however due to the feature freeze, we will not be working on this feature upgrade for v1.4.
207 (other comment)
Thanks for the suggestion, however, all changing tab suggestions are considered features and will not be added in v1.4.
208 (other comment)
Not part of v1.4
209 (other comment)
Right, I did this already! Thanks for pointing this out! Have closed it already.
@samuelfangjw
(82 comments)1 (commented on others PR)
I think this phrasing would be better.
in a university to keep track of people they have crossed paths with. It is optimised for use via...
2 (commented on others PR)
I think putting my full name here will be better! (consistent with the other names)
Fang Junwei, Samuel
3 (commented on others PR)
perhaps we can change the phrasing of the roles for all of us to In charge of ...
. e.g. In charge of documentation, In charge of Integration. Currently the role sections sound a bit weird for all of us.
4 (commented on others PR)
Perhaps Tests instead of test would be better here.
5 (commented on others PR)
typo in MIT Licence
6 (commented on others PR)
We should consider ordering the glossary alphabetically. I think that was the initial ordering.
7 (commented on others PR)
Missing period.
8 (commented on others PR)
I think this is fine for v1.2 but let's add an issue to add support for different date formats, especially since output format and input format are different.
9 (commented on others PR)
Is there a need for taskType?
Seems like a hacky way to keep track of subclass name and might not be best practice. We should instead be looking to utilise polymorphism to distinguish the different classes. If absolutely necessary, this should be an enum with final access modifier so there is no chance to change once assigned.
10 (commented on others PR)
Currently isDone boolean might not make sense, given that we have split task into completable and (possibly recurring) events. This would imply that only tasks that are a Completable should be completable. Perhaps this should go in the completable class instead.
11 (commented on others PR)
I don't believe there is a need for the toString method here since it is overridden in all it's subclasses. The body of this function will never be called. Might be better to make this an abstract method with no body.
12 (commented on others PR)
In the original model discussed, Completable was an abstract class with subclasses todo and deadline (or possibly a deadline with optional date field). Is there a reason for the change?
13 (commented on others PR)
Missing a period.
14 (commented on others PR)
"Interval should be one of: ..."
15 (commented on others PR)
dd-MM-yyyy
16 (commented on others PR)
add requireNonNull(event);
17 (commented on others PR)
should require non null here
18 (commented on others PR)
Is there a need to return new EventList? Would it be better to return this instead. If immutability is desirable we can change it to only be able to access an unmodifiable event list.
19 (commented on others PR)
Add period after each sentence, and perhaps give a short description of the param.
20 (commented on others PR)
put the return inside the try catch block. try { return Interval....}. In general, good to avoid returning outside the try catch block unless necessary as it's easier to read (usually if you have to it might be better to abstract out the try catch block in a method).
21 (commented on others PR)
same here, return inside try catch block.
Let's use yyyy instead of uuuu for better compatibility (with for e.g. simple date parser.)
22 (commented on others PR)
Let's call the encode/decodeDate methods in commons.DateUtil class instead. Feel free to add the date formatter for that one so it matches dd-MM-yyyy.
23 (commented on others PR)
This doesn't display very nicely when printed in UI, let's add some newlines and whitespace.
24 (commented on others PR)
use requireAllNonNull method instead
25 (commented on others PR)
great! for anyone else checking getZeroBased() method checks for negative indexes alr 😃
26 (commented on others PR)
is creating a new project necessary?
27 (commented on others PR)
Would it be better to move this check to TodoList for better abstraction.
28 (commented on others PR)
I've set the observable list to track any changes to the participant list, returning a new project might mess this up. I'll check on my end and change this to a mutable version if needed.
29 (commented on others PR)
Missing check for projectsFolder, but no worries i can correct in my next pr since it's my mistake.
30 (commented on others PR)
blank line
31 (commented on others PR)
blank line
32 (commented on others PR)
blank line
33 (commented on others PR)
blank line
34 (commented on others PR)
blank line
35 (commented on others PR)
might be better to name the test parseCommand_addDto_success since we are only testing the success scenario here. As per https://se-education.org/guides/conventions/java/intermediate.html, we should only leave our the expected behaviour if we are testing for all scenarios.
36 (commented on others PR)
I think it would be better to add a check whether two objects which are equal have the same hashcode. This fulfils the second point of the hashcode contract as stated in https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode().
Also fyi it's not really necessary to check that different objects have different hashcodes (not part of the hashcode contract) but i think it's ok to leave it in this case!
37 (commented on others PR)
Should also check that same object -> same hashcode.
38 (commented on others PR)
check for equals too! this is more impt than not equals as it's part of the hashcode contract.
39 (commented on others PR)
Minor comment, maybe can use the indexes in typical indexes.
40 (commented on others PR)
same here check for equals!
41 (commented on others PR)
same here
42 (commented on others PR)
check equal objects same hashcode
43 (commented on others PR)
here too
44 (commented on others PR)
"The update project command and the update contact command are relatively straight forward."
This line doesn't really add much value, can consider removing
45 (commented on others PR)
typo in projecct.
Also can consider styling it. UpdateProject
command is executed
46 (commented on others PR)
typo "abd"
47 (commented on others PR)
Not very sure what is meant by "We must ensure that the implementation of each individual command are correct.", maybe can rephrase.
48 (commented on others PR)
Demeter's law! Probably find for now since we did similar things in other areas, but I think we should file an issue and 1 shot change all.
49 (commented on others PR)
different deadline here
50 (commented on others PR)
typo here
51 (commented on others PR)
Square brackets are for optional parameters, the parameters here do not seem to be optional during testing.
52 (commented on others PR)
UpdateProjectCommand should be in caps
53 (commented on others PR)
@param index The index of the project..
would be better
54 (commented on others PR)
Typos in command name.
55 (commented on others PR)
Period at end of javadoc.
56 (commented on others PR)
period at end of javadoc
57 (commented on others PR)
This message should be for UpdateProjectCommand.
58 (commented on others PR)
Please use the name of the updated project instead. The toString method of update project does not look good on the UI.
59 (commented on others PR)
Let's also standardise the naming of parameters with the addP command.
60 (commented on others PR)
End sentence with period, class names should be in {@code}
to standardise with other comments as much as possible.
61 (commented on others PR)
Same here
62 (commented on others PR)
This message can be improved, please refer to deleteE command and standardise the formatting with that.
63 (commented on others PR)
was PREFIX_INDEX
used for anything previously?
64 (commented on others PR)
Parameters should be optional, refer to EditCommand. There should be at at least one field provided.
65 (commented on others PR)
index should be non null as well.
66 (commented on others PR)
Please use the Index Class instead
67 (commented on others PR)
Add a method to Project, this line violates demeter's law.
68 (commented on others PR)
projectToUpdate would be a better name
69 (commented on others PR)
should be AddContactCommand
70 (commented on others PR)
should be groupmate in projects
71 (commented on others PR)
groupmates
72 (commented on others PR)
groupmates
73 (commented on others PR)
Groupmate
74 (commented on others PR)
groupmates
75 (commented on others PR)
group mate builder
76 (commented on others PR)
groupmate builder
77 (commented on others PR)
typo should be time
78 (commented on others PR)
time repeated twice
79 (commented on others PR)
If it's weekly maybe better to show the day instead of the date.
80 (commented on others PR)
We look forward to seeing what you accomplish with CoLAB with a clean and inviting UI.
Think this part doesn't flow very well, can't see the link between the two statements. Can we shorten this to We look forward to seeing what you accomplish with CoLAB
and throw the second part somewhere else where we talk about the ui
81 (commented on others PR)
Thinking of moving these commands into their own individual section and create a section for today. While today section will only have one command, we can use that section to explain what today means and what information is shown there.
82 (commented on others PR)
Thinking of moving these 2 sections into projects
83 (commented on own PR)
agreed. just realized the original AB3 does not use spaces consistently, might be worth addressing this in a future pr?
84 (commented on own PR)
agree with this, will make changes and update the pr
85 (commented on own PR)
thanks! @vevek
86 (commented on own PR)
I couldn't get the StackPane to have 0 min height with other methods but you're right, it looks a bit odd here. Let me look into this properly.
87 (commented on own PR)
agreed
88 (commented on own PR)
agreed, will check the other images and relabel them accordingly too.
89 (commented on own PR)
Using the american spelling color instead for consistency
90 (commented on own PR)
resolved by setting minWidth/Height as necessary. This stops the panes from fully "disappearing" when resizing panes.
91 (commented on own PR)
Current resolution updated to 1280x720 for better compatibility
92 (commented on own PR)
Waiting for your PR @vevek, which would have implemented the required types.
93 (commented on own PR)
Not my comments, copied from person haha
94 (commented on own PR)
can confirm no issue here, if target and edited are not the same, and current list already contains new edited project, then the project is duplicated.
95 (commented on own PR)
This was copied over from person class. Has same functionality as RuntimeException.
96 (commented on own PR)
i believe null values will be converted to "null" in json, but i agree there should be a better way.
97 (commented on own PR)
following the structure of addressbook,
addressbook contains personList contains persons.
similarly,
ProjectFolder contains projectList contains projects.
98 (commented on own PR)
good spot should remove the space at the end
99 (commented on own PR)
yeap surprised my checkstyle didn't catch that. thanks!
100 (commented on own PR)
ok i might have been wrong on this, i think null should work. i'll change it on my end.
101 (commented on own PR)
Completable utilises polymorphism. Alternatively, can have an attribute that is null if it's a todo.
102 (commented on own PR)
This was copied over from the AddCommand. I agree with you, maybe we should open an issue and fix all of them at once?
103 (commented on own PR)
Similar to comment above
104 (commented on own PR)
yup good spot.
105 (commented on own PR)
Require non null doesn't return a boolean value. Also I think it's better to leave it as this, seems much clearer to me.
106 (commented on own PR)
This was copied over from AB3, what do you suggest instead?
107 (commented on own PR)
I think the messages have already been abstracted out to one class for messages that are not specific to a class. We should stick to this for now, can consider other implementations in the future
108 (commented on own PR)
Oxford comma is a stylistic choice, I think we should standardise with or without. I'll reword the to prevent ambiguity.
109 (commented on own PR)
Using COMMAND_WORD allows the CommandWord to be changed easily.
110 (commented on own PR)
This test checks that the createFile command does not throw an error when the file already exists
111 (commented on own PR)
Not repeated one for persons one for projects
112 (commented on own PR)
see above
113 (commented on own PR)
dp refers to elevation as per comments, i think is fine for now. If not it'll be DP_COLOR_LOWEST, DP_COLOR_SLIGHTLY_HIGHER, DP_COLOR_SLIGHTLY_SLIGHTLY_HIGHER, which is not sustainable
114 (commented on own PR)
yeap good catch, this should be changed
115 (commented on own PR)
No need, only once we implement edit event list. (YAGNI principle)
I want to try an immutable design for events, todos, deadlines in another PR
116 (commented on own PR)
good call
117 (commented on own PR)
Actually, now that i think it i think it's ok to leave it like this. I feel CompletableDeadlineCard should deal with UI elements (what to display when the item is completed), and Todo class should stick to containing fields related to a todo object (boolean value of whether it's done or not).
118 (commented on own PR)
This so in the future if we want to change how a completed todo is supposed to look we just need to change the UI
119 (commented on own PR)
alright i'll make a quick change
120 (commented on own PR)
Agreed, thanks for being thorough.
121 (commented on own PR)
Changed it to contacts to be more consistent with the other level 3 heading (projects). Do you think this is ok?
122 (commented on own PR)
ID was left out intentionally, copied this method from another handle object. Purpose of this is to compare this handler object to another completable deadline, which doesn’t have an id. I’ll look into changing the naming for these methods to clear things up.
123 (commented on own PR)
This one a bit tricky. I decided on UiCommand since the Ui works with a generic UiCommand (it doesn't know about the subclasses).
124 (commented on own PR)
but not sure which ones clearer
125 (commented on own PR)
How about I edit this to mention calling the overwritten method using polymorphism? Will that be better?
126 (commented on own PR)
Ah ur right, good spot!
127 (commented on own PR)
yes, only can tick off using mark as done.
128 (commented on own PR)
ID is not used in the overview section.
129 (commented on own PR)
sure
130 (commented on own PR)
Card to display UI elements (either tick to empty), deadline class will not do UI related stuff.
131 (commented on own PR)
So each card has 2 constructors, one with an ID (if we need to display the ID so user can select it) and one without, for the overview section where no id is required.
Why not have ID's for both?
I'm afraid users will get confused. I also don't want the users to be able to run commands on tasks in the overview section, as this might lead to confusion.
132 (commented on own PR)
Good spot haha, will update the other occurrences too.
133 (commented on own PR)
@vevek I went ahead and changed occurrences of REPEATABLE to EVENT, I think this makes it clearer.
134 (commented on own PR)
This is handled by throws statement in the method header. Would it be clearer if i explicitly caught and then threw it again?
135 (commented on own PR)
issue will be resolved in #215, together with other commands that have been updated recently
136 (commented on own PR)
Yes, i've made more space for the day label. Tried both, i decided this looks nicer.
137 (commented on own PR)
Spotted this, left it because it was the original implementation. I'll go see if i can change this real quick.
138 (commented on own PR)
fixed
139 (commented on own PR)
Think this will take a little longer to fix (requires changing type of backing list & related methods). I suggest we push this to 1.4 and focus on 1.3 deliverables what do you think?
140 (commented on own PR)
Use setter instead of constructor here so that display panel can be tested in isolation (without being dependent on main window).
141 (commented on own PR)
Changed
142 (commented on own PR)
This is consistent with the other view commands, changed because it looks better next to those. If we want to revert maybe someone can take another look and change it for all.
143 (commented on own PR)
Fixed, problem was some headers have space in between. I've changed all to have space
144 (commented on own PR)
I feel its clear enough from the first line (the description of a deadline, event or todo). Seems unnecessary. Adding it here would mean we have to add this to the other commands as well.
145 (commented on own PR)
I believe we should leave this here and update only after PE.
Reason: not updated in v1.3.2, inconsistent error messages might be a bug.
146 (commented on own PR)
damn it thanks for the save 😦
147 (commented on own PR)
can will add it
148 (commented on own PR)
I rephrased and put as a tip instead, if you still think info is better lmk
149 (commented on own PR)
Was a bit torn on this part. I feel since we rename it's a little more obvious. I didn't want to word this is a negative way, but rather show how this is a feature rather than a limitation. I'll spend a few mins to see if i can reword this.
150 (commented on own PR)
If i put this in the FAQ would it be better?
151 (commented on own PR)
it's not a tip though is a feature flaw and i don't want to highlight it in the features. I feel naming it separately and talking about how we can find contacts using group mate name gives a clear indication that they are separate entities. The parameters they take in are also different and they can check the FAQ if got any questions
152 (other comment)
seems like the ci is failing due to checkstyle issues
ERROR:../docs/UserGuide.md:213: no newline at EOF.
WARN:../README.md:15: trailing whitespace.
153 (other comment)
Just realised you accidentally changed the user guide instead of the readme haha! Might want to edit the title 😃
154 (other comment)
Updated user guide with view and undo/redo command and changed some references of AB3 to CoLAB. See #9.
155 (other comment)
@samuelfangjw Looks great! Please add the changes you have added to features to the table of contents.
Done! Forgot to update the table of contents when resolving the merge conflict. How does the latest commit look?
156 (other comment)
Tutorial PR irrelevant to project.
157 (other comment)
Which images are you referring to? @vevek
158 (other comment)
@vevek XR claims credit for finding 😂
159 (other comment)
LGTM.
haha thanks but it's still a draft pr! i'll make some edits tmr and change the pr status when I have something decent 😃
160 (other comment)
Are you able bring back the v1.1 milestone?
can add to v1.1 (there is a closed tab when you click on milestones). if someone wants to do it now i think is ok to change the milestone to v1.1, else we can just throw it to next iteration.
161 (other comment)
let's add a confirmation message in case users accidentally clear all
162 (other comment)
Will figure this out one of these weekends, need a pc to replicate bug.
163 (other comment)
Need to merge #51 before merging this PR, also need to request to use TestFX library on the forum.
164 (other comment)
latest commit fixes #58
165 (other comment)
Team decided not necessary.
166 (other comment)
Looks good to merge. Minor errors. I suggest adding comments to all the methods now so that it's clearer and won't be a bigger hassle in the future.
Which methods are you referring to? There is no need for javadoc comments on getters and setters. Method with @Override tag inherit javadoc comments from superclass, and there is generally no need to add a javadoc comment unless the behaviour has been modified or there is something of note. e.g. equals, toString, hashcode.
167 (other comment)
I will work on tests and other features over the next few days. If no major issues suggest we merge this soon so other team members can start working on their features.
168 (other comment)
Lowered priority to low as this does not affect correctness of current code and is not time sensitive.
169 (other comment)
Great! Please try to finish at least some of the tests, our codecov score a bit low at the moment. Yes, the UI is not ready yet, I'll do a simple one up later.
I'll take a look at this in a couple of hours, think I saw a few oddities but have to take a closer look.
170 (other comment)
In addition, as pointed out by @Eriksen2411 there should be a blank line between the first line of the javadoc and the params.
171 (other comment)
Ready for review, currently UI a bit lacking but I think it would be better to improve on the UI in another PR. As for tests, a large section cannot be covered now because they involve the UI. Will be able to do it once we merge #61.
172 (other comment)
Tests were failing because tests were adding and modifying the same project list. (our list is not immutable, maybe issue for another time). I've solved this temporarily by creating new project for each test.
173 (other comment)
Ready for review
174 (other comment)
Ready for review
175 (other comment)
General hashcode contract states that
- When hashcode is called repeatedly on an object, should return same result unless object has been modified.
- Two objects that are equal (according to equals method) should return the same hashcode
- Different objects do not have to return the same hashcode, although it's good if it does so.
Wah I never knew there is such a contract. Will do it tomorrow!
For the third point I think it should be the other way round. Objects that are not equal should return different hashcodes as far as possible.
I think it should still be pretty safe to check for different hashcodes for different objects since it should be quite unlikely to collide. Do you think we should remove this check?
Yup, no harm checking since very low chance they collide (int can only represent a finite number of things!)
176 (other comment)
Some minor style issues.
Thanks for pointing this out, wasn't aware there was a style guide for md files. Will look through the style guide again and update.
177 (other comment)
Let's standardise contacts for contacts in the contacts list and group mates for contacts in the project.
178 (other comment)
Updated, please take a look thanks!
179 (other comment)
Currently, I've changed the UI elements to reflect the new groupmates name. However, most of the methods, commands and classes still reflect the participants name. I think better to change in another PR, I've created an issue for this #154.
180 (other comment)
Done for now, will continue looking another time.
181 (other comment)
Maybe 1024 * 768
182 (other comment)
same as #194
183 (other comment)
Removed in #199
184 (other comment)
Resolved, changed to deleteC
185 (other comment)
Thanks! Will work on adding tests in 1.4.
186 (other comment)
This includes tags, some weekly repeatable events so testers can test all the features
187 (other comment)
Is fine to leave it for now.
188 (other comment)
Expected behaviour, not a bug
189 (other comment)
We should specify clearly in UG.
190 (other comment)
Expected behaviour, not bug.
191 (other comment)
Possible Display bug
192 (other comment)
DG bugs not included in PED.
193 (other comment)
Clarify meaning of post.
194 (other comment)
Duplicate of #289
195 (other comment)
update to Undo success
196 (other comment)
Bug supposed to be fix, need to investigate.
197 (other comment)
Standardise, among contacts, groupmates and projects.
198 (other comment)
Display bug
199 (other comment)
duplicate of #289
200 (other comment)
unable to replicate
201 (other comment)
tested with > 100,000 1's
202 (other comment)
Nothing wrong with command
203 (other comment)
display bug
204 (other comment)
Command format is clearly stated in UG.
205 (other comment)
Command format is clearly stated in UG
206 (other comment)
valid date
.
207 (other comment)
Lower bound for phone numbers is 3 digits e.g. 999, 911
208 (other comment)
Change to no contacts to display
209 (other comment)
Apply predicate to contacts when contacts button is clicked
210 (other comment)
change predicate when button clicked
211 (other comment)
Nothing wrong with undo implementation in this case. Expected message shown. However, message could be improved.
212 (other comment)
Already fixed in #281
213 (other comment)
closed in #332
214 (other comment)
the purpose of this example is to show how to use the command, not show that optional parameters are not allowed. the example used should showcase the whole command instead of just part of it.
@nicholastanvis
(78 comments)1 (commented on others PR)
bullet points starting with uppercase letter
2 (commented on others PR)
should we remove the parentheses?
3 (commented on others PR)
"confirm crucial commands with a confirmation message"
4 (commented on others PR)
2a1
5 (commented on others PR)
this backtick should be at the end of line
6 (commented on others PR)
missing triple dash
7 (commented on others PR)
missing full stop
8 (commented on others PR)
and Prompts
9 (commented on others PR)
format should be delete schedule
10 (commented on others PR)
find
11 (commented on others PR)
change back to Prompt: by module/day/week
12 (commented on others PR)
removing the 3 lines starting from this line fixes it
13 (commented on others PR)
for the tick
14 (commented on others PR)
double whitespace 👀
15 (commented on others PR)
task
16 (commented on others PR)
FindTaskCommand
17 (commented on others PR)
FindTaskCommand
18 (commented on others PR)
task
19 (commented on others PR)
tasks
20 (commented on others PR)
you might have forgot updateFilteredScheduleList, i'll merge my pr first
21 (commented on others PR)
might wanna change the usage because we are not deleting by index
22 (commented on others PR)
A
23 (commented on others PR)
the ellipsis at the end looks like it's asking for more parameters but in fact, the TAG parameter is supposed to be spread. i'm more towards explicitly defining [t/TAG] as 0 or more TAG arguments expected
24 (commented on others PR)
as an argument
25 (commented on others PR)
i do not see your activity diagram in developer guide at all. did you forget to include it?
26 (commented on others PR)
what is this for? as well as endTime
27 (commented on others PR)
kiv
28 (commented on others PR)
should we move these messages to commons.core.Messages? similar approach can be used for #94 #95
29 (commented on others PR)
should we add an assert statement here that throws if endDate.isBefore(startDate)
30 (commented on others PR)
um
31 (commented on others PR)
change to return equals(otherContact)
maybe?
don't just check the name, there are people with the same names
32 (commented on others PR)
change to Contact's
33 (commented on others PR)
should we change to [A-Za-z][A-Za-z ]*
?
names shouldn't be alphanumeric because underscores do not make valid names
34 (commented on others PR)
Contact
35 (commented on others PR)
Contact's
36 (commented on others PR)
should we do "\\+?\\d{3,}"
:3
37 (commented on others PR)
contact
38 (commented on others PR)
editedContact
39 (commented on others PR)
editedContact, contact
40 (commented on others PR)
contact
41 (commented on others PR)
contact
42 (commented on others PR)
??? just use UniqueContactList
43 (commented on others PR)
contacts
44 (commented on others PR)
contacts, contacts
45 (commented on others PR)
change to UniqueContactList
46 (commented on others PR)
same as above
47 (commented on others PR)
contacts, contacts
48 (commented on others PR)
contact
49 (commented on others PR)
contacts
50 (commented on others PR)
what is this class name, change to NameContainsKeywordsPredicate
51 (commented on others PR)
check this file thoroughly and use an import statement to shorten this code
52 (commented on others PR)
this is not what i meant... IF YOU REMOVED isSameContact
CHANGE UniqueContactList
ACCORDINGLY
public boolean isSameContact(Contact otherContact) {
return equals(otherContact);
}
please change this method to the snippet above and revert UniqueContactList
53 (commented on others PR)
change variable name
54 (commented on others PR)
"Names should only contain alphabets, spaces and hyphens, and it should not be blank."
55 (commented on others PR)
refer to the comment in Contact.java
56 (commented on others PR)
keep this String, will resolve the conflict in #94 instead
57 (commented on others PR)
i was thinking of moving constants to commons.core.Messages, going to do the same for #94
58 (commented on others PR)
if this is reopened, revert this line. fixed in #100
59 (commented on others PR)
#100 should provide source.startTimestamp()
60 (commented on others PR)
let's use [day/week] so it's uniform with user guide
61 (commented on others PR)
we should check trimmedArgs first before we instantiate a ListEntryCommand. would going with something like this be better?
if (trimmedArgs.equals("day") || trimmedArgs.equals("week") || trimmedArgs.isEmpty()) {
return new ListEntryCommand(new ListEntryFormatPredicate(trimmedArgs));
} else {
throw new ParseException(
String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListEntryCommand.MESSAGE_USAGE));
}
62 (commented on others PR)
resolving, deleting the class will introduce breaking changes
63 (commented on others PR)
will fix in future prs
64 (commented on others PR)
thanks for the helper method, will revamp Entry#setTimestamp
65 (commented on others PR)
will request for more changes, approved for now
66 (commented on others PR)
might wanna change this to MESSAGE_INVALID_ENTRY_INDEX
67 (commented on others PR)
should be "its"
xd
if can, capitalise Teaching Assistant
68 (commented on others PR)
the plural of index is indices
69 (commented on others PR)
should we have DEFAULT_TAGS so we can feed it into the ctor in line 30?
70 (commented on others PR)
what is this line for?
71 (commented on others PR)
based and redpilled
72 (commented on others PR)
wanna do import static seedu.address.commons.core.Messages.MESSAGE_INVALID_...
instead?
73 (commented on others PR)
lovely
74 (commented on others PR)
in this pr, i don't see this method being used anywhere. can i assume that removing this breaks the tests?
75 (commented on others PR)
let's change this to MESSAGE_ENTRY_START_DATE_IN_PAST
76 (commented on others PR)
also use "end date and time", "or time" is kinda weird
77 (commented on others PR)
heh, i look at it like "date and time" is a phrase. anything ig
78 (commented on others PR)
entry list
entries listed
list
choose your poison
79 (commented on own PR)
will modify it as EntryTagContainsKeywordsPredicate
80 (commented on own PR)
sure, will fix
81 (commented on own PR)
wip
82 (other comment)
reopening. missed project description and credits to se-education
83 (other comment)
closed via #11
84 (other comment)
refactor UniqueTaskList to NonOverlappingTaskList
85 (other comment)
obsolete, refer to #80
86 (other comment)
the EntryNameContainsKeywordsPredicate
is broken, will use the one in #97
87 (other comment)
permanently closed
88 (other comment)
meme
89 (other comment)
closed with Contact class refactoring
90 (other comment)
updated regex with Contact class refactoring
91 (other comment)
closed with Contact class refactoring
92 (other comment)
changed to strictly 8 digit long with #181
93 (other comment)
lel why are these changes not done along with #191?
94 (other comment)
closed with #181
invalid issue anyway
95 (other comment)
thank god for equalsIgnoreCase
96 (other comment)
#181
97 (other comment)
#181
98 (other comment)
invalid issue
@nighoggDatatype
(74 comments)1 (commented on others PR)
Please add "by their name". Your sentence is hanging right now
2 (commented on others PR)
literal "abc" should be the constant NAME_FIRST_PERSON
3 (commented on others PR)
please put this in a final variable like final String nonExistantName = "WHATever it is";
4 (commented on others PR)
I think? this is fine, but I'm not certain. Double check best practice maybe?
5 (commented on others PR)
Good good, Nice to see you not having magic literals.
6 (commented on others PR)
Maybe put in a variable with a descriptive name first like String nameOfPersonToDelete
7 (commented on others PR)
Should this be an invalid name, or would rejecting a number suffice for this test?
8 (commented on others PR)
LGTM, although I personally would prefer 'their' instead of 'his/her'
9 (commented on others PR)
it should be delete NAME
, not delete name
. All Caps for variables I think
10 (commented on others PR)
Class is wrong and variable name is wrong
11 (commented on others PR)
AddressBook ab
should be ContactList cl
12 (commented on others PR)
getTypicalAddressBook
should be getTypicalContactList
13 (commented on others PR)
addressBookStorage
should be contactListStorage
14 (commented on others PR)
Method name again
15 (commented on others PR)
readAddressBook
method is wrong
16 (commented on others PR)
method name is wrong and probably wrong for many test case code
17 (commented on others PR)
variable name differentAddressBook
18 (commented on others PR)
comment has reference to ReadOnlyAddressBook
19 (commented on others PR)
value = "addressbook"
is probably wrong 😦
20 (commented on others PR)
addressBook
variable name
21 (commented on others PR)
Class name AddressBookStorage
22 (commented on others PR)
Comment is unchanged
23 (commented on others PR)
method name
24 (commented on others PR)
variable name
25 (commented on others PR)
bad comment
26 (commented on others PR)
variable name addressBookOptional
and method name readAddressBook
27 (commented on others PR)
method getSampleAddressBook
28 (commented on others PR)
method name
29 (commented on others PR)
comment is bad
30 (commented on others PR)
Also method name
31 (commented on others PR)
variable name addressBookStorage
32 (commented on others PR)
getTypicalAddressBook
33 (commented on others PR)
method name
34 (commented on others PR)
saveAddressBook
is bad
35 (commented on others PR)
setAddressBookFilePath
👎
36 (commented on others PR)
method name
37 (commented on others PR)
getTypicalAddressBook
is a thorn
38 (commented on others PR)
method name 👎
39 (commented on others PR)
method name and variable name 👎
40 (commented on others PR)
I think this one and this one alone should be unchanged given that it references an external project
41 (commented on others PR)
More bad method names and variable names
42 (commented on others PR)
comment "Converts this address book into the model"
43 (commented on others PR)
I would prefer if you have hash code account for both carBrand and carType
44 (commented on others PR)
Method variables test1
and test2
should be descriptive, like testBrand
and testType
45 (commented on others PR)
While good to see, is it best practice to have a feature PR and a bug-fix PR mixed together? Worried we might be penalized for bad PR practice
46 (commented on others PR)
Does "+Subaru" produce the array ["","Subaru"]
47 (commented on others PR)
Could replace x
with customerCar
, but its not exactly block worthy this close to deadline. Fix soon during 1.4 please.
48 (commented on others PR)
Could replace x
with customerCar
, like in the other filter.
49 (commented on others PR)
Good catch
50 (commented on others PR)
Should not be default condition. Explicitly check for PREFIX_NOT and if you reach an else branch, throw an exception.
51 (commented on others PR)
Did you OK this with the writer of AddressFilter? Want to just make sure.
52 (commented on others PR)
Is there supposed to be additional spaces here?
53 (commented on others PR)
Please put something here or remove it entirely, for the @return
tag
54 (commented on others PR)
Did you OK this with the writer of CarFilter? Cause this is probably different from the intent of @OhJunMing
55 (commented on others PR)
I suppose that this is better than my current implementation, but after you commit, I will provide a potentially better version.
56 (commented on others PR)
Or at least try to
57 (commented on others PR)
Also, please rename the function levenshteinDistance
to subsequenceDistance
. Its confusing and misleading otherwise.
58 (commented on others PR)
Good job here
59 (commented on others PR)
Also good job
60 (commented on others PR)
Did you mean to change this? I think here, they were trying to align the descriptions
61 (commented on others PR)
This is um... confusing? Can I clarify whether this is a placeholder for v1.4 work?
62 (commented on others PR)
Good job! Very interesting
63 (commented on others PR)
I probably would have missed this myself
64 (commented on others PR)
Small comment, please add a TODO here for me to write new test cases here pls;
Example TODO: Write new test cases for the overhauled command
65 (commented on others PR)
Probably want more test cases if possible. Add a todo here pls
66 (commented on others PR)
Not sure if we need new test cases here or not 😕
67 (commented on others PR)
Good job here
68 (commented on others PR)
Same here.
69 (commented on others PR)
Acceptable
70 (commented on others PR)
LGTM
71 (commented on others PR)
Are these debug code left over?
72 (commented on others PR)
Are we just leaving this debug code in?
73 (commented on others PR)
I mean I suppose we could, but I want to make sure, given the other debug code you left in
74 (commented on others PR)
Is this the solution? Could you explain how this solution works?
75 (commented on own PR)
Will do later
76 (commented on own PR)
Will put the trimming function in the ParseUtil class.
77 (other comment)
Attributes are "Car" and "CoeExpiry"
78 (other comment)
This is meant to fix the issue mentioned at https://github.com/nus-cs2103-AY2021S2/forum/issues/262
@JayChenYJ
(70 comments)1 (commented on others PR)
Perhaps standadise it to ITEM_NAME.
2 (commented on others PR)
Same for here 😃
3 (commented on others PR)
Same for here 😃
4 (commented on others PR)
Our list takes in an optional parameter, so may consider removing it from this line.
5 (commented on others PR)
our list should be able to in an optional field, location.
6 (commented on others PR)
Should consider changing edits to updates 😃
7 (commented on others PR)
Should be deleting an item instead 😃
8 (commented on others PR)
Check google docs for delete method for StoreMando 😃
9 (commented on others PR)
One suggestion I have for these JSON files is that maybe we should rearrange the sequence to match our display sequence to make things more neat and tidy 😃 so instead of the current name, quantity, exdate, location, we put name followed by location and so on based on our current display.
10 (commented on others PR)
Some variable changes are still seen here and there
11 (commented on others PR)
For this part just let Fazil know to change this to standardised locations, because this one he may overlook thinking that it's correct cause Apple Banana etc are what we using for item names.
12 (commented on others PR)
For this when it is showing all items will it also work as normal?
13 (commented on others PR)
It May be too technical for a user guide
14 (commented on others PR)
Perhaps its better to say 'Expiry date of an item is optional'
15 (commented on others PR)
Why is there an additional catch NullPointerException?
16 (commented on others PR)
understand that for this file the sequence in which what is placed first does not matter, but for readability and consistency of our code base we should perhaps standardise it, following the google docs sequence
17 (commented on others PR)
I think "Quantity should only contain numbers..." will suffice, can remove the "numbers" after Quantity
18 (commented on others PR)
This may be a violation of Law of Demeter, cause browserutil calls a method that calls helpwindow's string. Maybe can consider shifting the USERGUIDE_URL to BrowserUtil instead 😃
19 (commented on others PR)
Instead of calling 2 booleans, maybe inside BrowserUtil class create a boolean to check for these 2 booleans, since at this class we don't have to know the details. Maybe can create a boolean called canOpenBrowser 😃
20 (commented on others PR)
Agree with this, but if its functional we can leave this to v1.3 as well. 😃
21 (commented on others PR)
Personally I will prefer trimmedArgs = trim()
Then in the condition, we use equals ignore case instead.
22 (commented on others PR)
What's the set of names we following from now on? For the original ab3 it was ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE. What's the pattern for ours?
23 (commented on others PR)
Agree with kums!
24 (commented on others PR)
Agree with Fazil!
25 (commented on others PR)
I feel that this shouldn't be an exception condition because we should instead just ignore whatever that's not the first arg. So reminder 6 haha should just take it as reminder 6. on the other hand reminder haha 6 shouldn't work but it has been considered in ur try catch method below.
26 (commented on others PR)
Whats the reason for parsing it as long instead of int?
27 (commented on others PR)
With my suggestion below, this will become unnecessary
28 (commented on others PR)
for this whole parsing right, perhaps you may wanna think about changing it to a prefix kinda thing. Say reminder d/3 reminder w/2, with that you will be able to use preambles and also prefix isPresent to do most of the checks here and I can foresee the code to be neater 😃
29 (commented on others PR)
how will the >a name = "delete">>/a> look like in the user guide page?
30 (commented on others PR)
perhaps change to 'NUMBER' instead, because in our user guide only command words are small letters in format I think 😃
31 (commented on others PR)
will 1 day and 1 week work? or even 1 must be days and weeks?
if 1day and 1week work then that's the best. Else here's my suggestion:
change the implementation such that 1 day and 1 week will work.
make it extra clear in the user guide (1 more sentence behind it) to emphasise that day and week will not work. 😃
32 (commented on others PR)
There will be a need to update this part of the user guide because now there is quantity asc and quantity desc 😃
33 (commented on others PR)
also this, it should be expirydate, emphasise to the users too that it is case insensitive. 😃
34 (commented on others PR)
There will be a need to look into this section to double-check, examples will be reminder and sort. 😃
35 (commented on others PR)
Can we add one example for weeks as well? 😃
36 (commented on others PR)
I think u just need the first line to be in if else statement, the rest should be outside as one right? 😃
37 (commented on others PR)
Maybe instead change it to 3 positive path conditions in if elseif, throw in else. 😃
38 (commented on others PR)
maybe change from 'remember items' to 'keep track of items' 😃
39 (commented on others PR)
Should it be 'make the most of StoreMando' or 'make the most out of StoreMando'
40 (commented on others PR)
What will >a name="start">>/a> show in User Guide page?
41 (commented on others PR)
Will this hyperlink still work after u added '3.' for 'features' below?
42 (commented on others PR)
Can we make this example more legit, perhaps change to l/kitchen cupboard 1(somewhere more normal) ... e/2021-04-01(a date that is more updated as of our user guide edited date)
43 (commented on others PR)
Is there any part mentioning that '[]' equals to optional? because even though tag has '...', in edit for example most of our parameters only have '[]' 😃
44 (commented on others PR)
I think this info about the index being positive is not required because it has been stated very clearly in the sentence before this that 'The index refers to the index number shown in the displayed item list.' 😃
45 (commented on others PR)
same issue with the previous examples, which is likely to be the same for the rest of the examples. Please look into this! Thanks! 😃
46 (commented on others PR)
Same reasoning on this just like the previous comment. 😃
47 (commented on others PR)
Why is this not bold anymore? How will it look like in the user guide page?
48 (commented on others PR)
u did the assertion then here no need the if alr right 😃
49 (commented on others PR)
I think SortQuantityCommand shouldn't be taking in a boolean 😃
1 suggestion I can think of is to create 2 separate classes handling asc and desc. I think there is a more elegant way though 😃
50 (commented on others PR)
Can remove this assert because now the number of days can take in any number 😃
51 (commented on others PR)
maybe consider declare 2 final long at the start, so next time if we want to change the day can be easier, currently is like magic number 😃
52 (commented on others PR)
I think better to put like private static final long EXPIRED_NUM = 0 etc 😃
53 (commented on others PR)
are the lines required for proper display? oTHER 💡 etc got such lines?
54 (commented on others PR)
If you are putting a line break then i suggest you give it #### for the sub headers 😃
55 (commented on others PR)
This one no need already. Can change to
TIME_UNIT
must be either days
or weeks
.
day
or week
accepted when number is in the range of [-1, 0, 1]
56 (commented on others PR)
This example abit too specific, by the time people read it it won't make sense already
57 (commented on others PR)
I think some of these test cases are too repetitive, I understand that it is to test for boundaries but i don't think this many test cases are needed. Maybe just boundary for 1/2 months etc. Same applies to other checks in this file 😃
58 (commented on others PR)
I think Prof Damith mentioned something about there's no need to check for different types because it simply will not be the case. I understand that in original AB3 they had some tests checking types but I think we can omit all of such test cases. 😃
59 (commented on others PR)
Yup that is the format we agreed on.
Intro to the feature
Sequence diagram
Steps of implementation
Activity diagram
Design consideration
60 (commented on others PR)
this wont work, need to revert back to original layout
61 (commented on others PR)
should standardise one spacing between each section 😃
62 (commented on others PR)
This part should not be changed, it is not part of the implementation
63 (commented on others PR)
No sequence diagram found for this implementation
64 (commented on others PR)
maybe can consider reduct the usage of 'then' and 'will then'
65 (commented on others PR)
I think can change to GUI
66 (commented on others PR)
put a spacing between portfolio and this sentence, so will be in a new paragraph 😃
67 (commented on others PR)
You should remove Project management section from your md 😃
68 (commented on others PR)
do not put >br> in your code, that is against the coding standards for md files 😃
69 (commented on others PR)
Design considerations for both features have to be added
70 (commented on others PR)
I think instead of saying 'between -366 to 366', 'from -365 to 365' may be better 😃
71 (commented on own PR)
Fixed 😃
72 (commented on own PR)
Resolved. 😃
73 (commented on own PR)
Nope it was not fine, thanks for spotting!
74 (commented on own PR)
Yup I will remove this file now. 😃
75 (commented on own PR)
Better Model class puml is not in use as of now. 😃
76 (commented on own PR)
It looks like this now, the hidden arrows wont be displayed.
77 (commented on own PR)
Thanks!
78 (commented on own PR)
This will need to look into it further in v1.3b, we will take note of this! thanks!
79 (commented on own PR)
Yup thanks Fazil!
80 (commented on own PR)
Understand, will make changes on that! Thanks!
81 (commented on own PR)
Will add more test 😃
82 (commented on own PR)
Alright I will try 😃
83 (commented on own PR)
I think this is fine because I'm calling the itemlist in model itself and not somewhere else right 😃
84 (commented on own PR)
no, it basically takes in all the words in the args, so say " 3 day ", it will become "3" and "days" 😃
85 (commented on own PR)
Will be adding for the team I reviewed for in the next iteration 😃
86 (commented on own PR)
alright 😃
87 (commented on own PR)
alright will change this!
88 (commented on own PR)
Alright, will get this changed!
89 (commented on own PR)
Will fix this 😃
90 (commented on own PR)
I copied this from our module recommendation, not sure which should be the correct situation
91 (commented on own PR)
Ok will do!
92 (commented on own PR)
yes it is still a limitation
93 (commented on own PR)
Alright will update this
94 (commented on own PR)
will do!
95 (commented on own PR)
😃
96 (commented on own PR)
Sure will make the change! 😃
97 (commented on own PR)
will make the change 😃
98 (commented on own PR)
we do have that in the UG alr, it was updated by @kumsssss in the previous UG PR 😃
99 (other comment)
100 (other comment)
The search is case-insensitive, so 'B' matches the 'b' in table of mahjong table.
101 (other comment)
The error message matched correctly according to this feedback.
102 (other comment)
This was designed on purpose, we do not want to restrict the users on such inputs, all we can do is give them a warning message, informing them that the item has already expired.
103 (other comment)
Suspect that the user executed find
on a sublist that did not contain burger, we need to fix this in the UG, informing that commands are being performed on the displayed list and not the full inventory list stored in StoreMando.
104 (other comment)
This was a design choice by the team.
105 (other comment)
Keyword expirydate has been given in command format expirydate
.
106 (other comment)
Yes that is a design choice by the team, items with the same name and location will be treated as the same item, regardless of tags.
107 (other comment)
This is a design choice by the team, we should not restrict the users with such input constraints.
108 (other comment)
Like how it was mentioned in the UG, warning will only be shown if the item differs in letter case.
@Md-Fazil
(66 comments)1 (commented on others PR)
Should the command be find instead of search?
2 (commented on others PR)
Would it be better to name the field expiryDate to date? I think it would not be as ambiguous and would be easier to understand.
3 (commented on others PR)
Instead of first checking if the expiry date format is correct using regex, he parses the input right away and catches DateTimeParseException to determine if the specified input is a valid expiry date. I think it will still work as intended.
4 (commented on others PR)
Should this nonNull check for expiryDate be removed?
5 (commented on others PR)
Should this be "Sorts the items from the inventory" instead?
6 (commented on others PR)
Would it be clearer if we state "sort quantity
will display the items in the inventory in ascending order of quantity."?
7 (commented on others PR)
I think we can provide example usage similar to how the other commands provide it currently as well.
8 (commented on others PR)
I think it is fine to leave it as it is as this is just a custom comparator. Perhaps, the naming of the class can be better.
9 (commented on others PR)
Would this message usage be misleading and give users the idea that both tag and location can be specified? Would it be better if the message usage is [l/LOCATION]/[t/TAG]?
10 (commented on others PR)
Would it be better if it explicitly states "user-specified number of days from the current date..."?
11 (commented on others PR)
Perhaps, you can try checking both conditions for trimmedArgs and numOfArgs in one if block and throw a ParseException to avoid repetition?
12 (commented on others PR)
I'm assuming this is not case-sensitive. Does it mean that "Weeks" would not match "weeks"? If that is the case, we have to clearly specify this in the user guide.
13 (commented on others PR)
I think this way of checking would break if the user keys in "reminder 3" with 2 spaces instead of 1. This way " 3" your argument would be " 3" which would cause a number format exception which would be caught and eventually be thrown as a parse exception. Are we going to be strict about this? Currently, the other commands don't seem to take into account additional spaces in between prefixes and command word.
14 (commented on others PR)
Can you clarify the way you are parsing?
15 (commented on others PR)
I agree with Jay as well. I think it would be less ambiguous and would be standardised across the commands.
16 (commented on others PR)
Does this violate the law of demeter since you are getting an object from item and accessing its field?
17 (commented on others PR)
I believe Item should provide a method that retrieves expiryDate directly.
18 (commented on others PR)
AB3 used address book and it's name interchangeably. In our case, our UG uses StoreMando and inventory as the two terms to refer to the app. Would it be better if you change all the usages of address/location book to inventory instead?
19 (commented on others PR)
As mentioned above, this could be "causing another modified inventory state to be saved into the storeMandoStateList
."
20 (commented on others PR)
My personal opinion is that the welcome message should just be "Welcome to StoreMando!". Just a suggestion to consider.
21 (commented on others PR)
I agree with Kumaran. I think it should be written as "User searches for items that are expiring within the next 3 days".
22 (commented on others PR)
I think this should be written as "User inputs a negative number".
23 (commented on others PR)
Perhaps, I think this step should be removed.
24 (commented on others PR)
I think can it would be better to phrase it "User requests to delete all items in a specific location".
25 (commented on others PR)
I think this should be "prompts the user for a correct location".
26 (commented on others PR)
Would the benefit be clearer if we specify "I want to clear all the items in my room at once so that I do not have to waste time manually deleting all the items in my room"?
27 (commented on others PR)
Should this be "StoreMando prompts the user for the correct input"?
28 (commented on others PR)
Should we be writing this as "with the aim of helping users manage their items effectively and efficiently". Since this is a more description of the project, I think using the same tone as user guide would not be appropriate. What do you think?
29 (commented on others PR)
Similarly, I think we should avoid using first person in this section and write it more formally.
30 (commented on others PR)
I think we should personalize all success messages as a whole to differentiate the individual features rather than returning a generic message for all clear/list/sort command types. Maybe this would be a good place to start and we can improve on this in the coming iteration. What do the rest think?
31 (commented on others PR)
Personally, I think this does not follow the single layer of abstraction principle. Perhaps, one suggestion would be to create a method (ie; clearLocation) in the class responsible for managing the lists and call the method here.
32 (commented on others PR)
Yes, I think this would not work with additional spaces as well using equals.
33 (commented on others PR)
This method name states that parsing an empty argument would throw parse exception but you are testing for parse success. Perhaps, you might want to change the method name.
34 (commented on others PR)
Maybe you can consider adding spaces between prefixes and test all possible valid inputs.
35 (commented on others PR)
Can we abstract it out further? This method calls setItems method of model class and retrieves model's own attribute to pass back as a parameter. I think we can create a method to abstract this out further.
36 (commented on others PR)
Can you clarify how is the parsing is handled? Would this break if there is an additional space passed in?
37 (commented on others PR)
It would be better if we create a method like "refreshExpiringItemsPanel()" to adhere to the SLAP principle in this method.
38 (commented on others PR)
Can you clarify if this would break in the event of an itemList of size smaller than 7 being added in?
39 (commented on others PR)
Is there a way where you can prevent method chaining and check the expiry date?
40 (commented on others PR)
Would it be better if it is "which allows users to view items that are expiring within a certain number of days as specified by the user"?
41 (commented on others PR)
Shouldn't StoreMandoParser
have the grey highlight as well?
42 (commented on others PR)
Should it be "Determines that the command given is a ReminderCommand
"? Also, I think we should standardise the use of string/command to specify user input.
43 (commented on others PR)
I think it would be clearer if we specify "parse the arguments provided in the user command" or something alone those lines.
44 (commented on others PR)
Should we grey highlight method names as well similar to execute above?
45 (commented on others PR)
I think it would be better to break up this line. There seems to be too many things going on in one line.
46 (commented on others PR)
I think it would be better if we include the sequence diagram before the implementation and use the sequence diagram to explain the implementation instead. It would be easier for the reader to understand the implementation.
47 (commented on others PR)
I think StoreMandoParser
should have a grey highlight as mentioned above.
48 (commented on others PR)
It seems as though lines 3 to 7 have an additional space in front which you may have added due to the grey highlight. I think we might need to check if the additional space is actually needed.
49 (commented on others PR)
One suggestion as mentioned above is to include the sequence diagram above the implementation.
50 (commented on others PR)
Should it be "shows how the clear by location feature works"?
51 (commented on others PR)
Is this incomplete? If not, I think it is best to omit the section altogether if there is nothing to add.
52 (commented on others PR)
I think it would be clearer if you state "The overridden execute
method of DeleteCommand
will be called".
53 (commented on others PR)
It would be better if we specify what the actual result would be. In this case, it will be a command result object.
54 (commented on others PR)
I'd suggest including the link of all the PRS that you have reviewed and given input on.
55 (commented on others PR)
Perhaps, the line "You can reach me at the email mohamedfazil@u.nus.edu
" should be in the following line.
56 (commented on others PR)
Should this be "An item can have 0 or more tags."?
57 (commented on others PR)
We will need to update this to include locationlistpanel and reminder panel.
58 (commented on others PR)
Is this limitation still valid?
59 (commented on others PR)
Should this be "Users would be able to retrieve a specific item more efficiently."?
60 (commented on others PR)
Would using find be confusing for readers since we already have a find section before this?
61 (commented on others PR)
Also, I think it is better to state "All items that have already expired or are expiring within the next 7 days are shown".
62 (commented on others PR)
Similarly, we have to mention about expired items being shown as well.
63 (commented on others PR)
Would it be better if we follow the user guide and state "All the items are sorted in chronological order of their expiry date"?
64 (commented on others PR)
I think this should be "expiring within the next 3 days".
65 (commented on others PR)
I think we should also add in a section to explain the difference between similar and identical items. Maybe, we can add a section for that or define them in the glossary.
66 (commented on others PR)
If you have not, I'd suggest to review this section as well. If you have done this and found that no changes are needed, ignore this comment.
67 (commented on own PR)
Fixed
68 (commented on own PR)
Fixed.
69 (commented on own PR)
Fixed.
70 (commented on own PR)
fixed.
71 (commented on own PR)
fixed.
72 (commented on own PR)
Agreed with Wei Hao. I think it is fine to leave it as it is since there is no fixed input format and prefixes can be specified in any order.
73 (commented on own PR)
Fixed.
74 (commented on own PR)
Thanks for the suggestion. Fixed.
75 (commented on own PR)
This follows the original setup. I think it's fine to leave it as it is for now.
76 (commented on own PR)
We can leave it as it is for now as mentioned above.
77 (commented on own PR)
Value was used to standardize across all the fields an item model is composed of. I think it would be more consistent if we leave it this way.
78 (commented on own PR)
I think we can display the warning in red color in our GUI instead of using all caps to warn. I feel it would be friendlier that way.
79 (commented on own PR)
Fixed.
80 (commented on own PR)
I think it is still fine as the class MainWindow has helpwindow as the immediate neighbour and I'm passing the URL as an argument to the displayWebsite method in BrowserUtil.
81 (commented on own PR)
Thanks for the suggestion. Fixed!
82 (commented on own PR)
Upon further thinking, I have shifted it as per your suggestion as it was more practical. Thanks and fixed!
83 (commented on own PR)
Alright, fixed!
84 (commented on own PR)
I think both are fine but I'll change it to make it clearer.
85 (commented on own PR)
The anchor tag will not be displayed and only the hyperlinked quick start will be displayed.
86 (commented on own PR)
I have updated the features section header to contain the anchor tag. Thanks for pointing it out!
87 (commented on own PR)
Yes. This has been included in the existing user guide and I did not make any changes to it. Therefore, it is not highlighted in this pull request as a change.
88 (commented on own PR)
Fixed!
89 (commented on own PR)
I think it is better to be as explicit as possible in the user guide and there is no harm in doing so.
90 (commented on own PR)
As mentioned above, I think it is fine to leave it as it is. Perhaps, we can get the opinion of others as well.
91 (commented on own PR)
The subheaders will appear in bold when displayed in HTML so it will still be fine.
92 (commented on own PR)
Thanks and fixed.
93 (commented on own PR)
Thanks and fixed.
94 (commented on own PR)
Thanks and fixed.
95 (commented on own PR)
Yes, I have changed it.
96 (commented on own PR)
Noted on that and I have fixed it according to your suggestion. Thanks!
97 (commented on own PR)
Noted and I have fixed it accordingly. Thanks!
98 (commented on own PR)
Fixed.
99 (commented on own PR)
Done!
100 (commented on own PR)
Fixed and thanks!
@chesterhow
(62 comments)1 (commented on others PR)
I think we should keep Mainstream OS
in the glossary as mentioned in our NFRs
2 (commented on others PR)
Perhaps it would be more consistent if we used 8 spaces here for indentation as well.
3 (commented on others PR)
Should we revert this back to 8?
4 (commented on others PR)
Perhaps we could make dd-MM-yyyy
a constant string, since it is also used in line 40
5 (commented on others PR)
Same here for HHmm
6 (commented on others PR)
Indentation should be 8 spaces
7 (commented on others PR)
Same here indentation issue
8 (commented on others PR)
Indentation issue as well
9 (commented on others PR)
Indentation issue as well
10 (commented on others PR)
Same here for lines 132, 133 and 136
11 (commented on others PR)
Duplicate opacity styles
12 (commented on others PR)
Duplicate opacity styles here as well
13 (commented on others PR)
Indentation issues on line 22 and 24
14 (commented on others PR)
Not too sure about this, but should this be private static final
?
15 (commented on others PR)
Let's standardise to double quotes for all strings
16 (commented on others PR)
Should be okay to remove the old getMeetingList()
and getDateList()
which returns empty lists right?
17 (commented on others PR)
I think this can be removed?
18 (commented on others PR)
I think we should add spaces around the ->
19 (commented on others PR)
Extra empty line here
20 (commented on others PR)
I think BIRTHDAY
is fine here, or perhaps DATE
instead of DATETIME
21 (commented on others PR)
Could we add a "*" multiplicity to Event
? Might be good to use labels here as well since there are 2 links to Event: dates
and meetings
22 (commented on others PR)
Would be good to standardise the term css
to be always in lowercase
23 (commented on others PR)
Do add a space between the hashes and the title itself, as I'm not sure if jekyll can parse the markdown properly without
24 (commented on others PR)
Add a *
before the example here for consistency with the rest of the UG
25 (commented on others PR)
Would be better if we used the theme's colours here
26 (commented on others PR)
Should be subtract-debt
i believe.
27 (commented on others PR)
Do add a newline after this line
28 (commented on others PR)
Would "provided" sound better here?
29 (commented on others PR)
Copy nit: "Although optimized for Command Line Interface enthusiasts, the intuitive interface allows anyone to get started with it immediately."
30 (commented on others PR)
Copy nit: "This document walks you through the User Interface and Features present in FriendDex".
31 (commented on others PR)
Copy nit: "Your Computer's operating system (OS) needs to be Windows, macOS or Linux, and the OS version you are using should still be supported by the respective companies."
32 (commented on others PR)
"please refer here" sounds a bit strange. Perhaps "please click here"?
33 (commented on others PR)
Since the file is deleted, I think we should just remove this line from the gitignore as well.
34 (commented on others PR)
Maybe use logger instead?
35 (commented on others PR)
I realised your new theme files do not have the .json
extension. Not sure if that's intentional
36 (commented on others PR)
Remember to update the documentation to include the new personStreaks
param
37 (commented on others PR)
I don't think you need to handle this case anymore as I've removed the time
param from the requireAllNonNull
check in Event
's constructor
38 (commented on others PR)
Nit: Extra space here before the full stop
39 (commented on others PR)
Is the %1$s
not needed for invalid date? Should we also remove it then for invalid time?
40 (commented on others PR)
Probably no need for a new variable here. Perhaps just deadline.equals(DateUtil.ZERO_DAY)
?
41 (commented on others PR)
What does this part do? Will this display streaks for people with no meetings yet?
42 (commented on others PR)
Can we rename the param test
?
43 (commented on others PR)
Just realised this test and the previous test is exactly the same.
44 (commented on others PR)
Can reword to "Meetings are records of past events, and should not be in the future. Meeting description should not be empty."
45 (commented on others PR)
copywriting nit: "The Streaks dashboard shows the number of consecutive times you've met your goals of meeting your friends up till today. More information on Streaks is available here."
46 (commented on others PR)
Can you move this to the alert block below? (Line 191)
47 (commented on others PR)
Similarly, place this in an alert block as well.
48 (commented on others PR)
Can we remove the "the" before the dates?
"on the 13th March" -> "on 13th March"
"on the 30th April" -> "on 30th April"
49 (commented on others PR)
This line is a bit fierce.
"A streak is the number of consecutive times you've met your goal of meeting a friend. Your streak increases if you've met a friend before the goal deadline. Simply put, if you have a high streak with a friend, you've been really consistent with meeting that friend! Refer to the Goal Deadlines section for more information on how deadlines are calculated."
50 (commented on others PR)
Is this "will be added" or "will not be added"?
51 (commented on others PR)
Is this double casting necessary?
52 (commented on others PR)
If i'm not wrong this section can be simplified to:
if (current != null && bytes[i] != current) {
break;
} else if (i == magicNumber.length - 1) {
return true;
}
53 (commented on others PR)
Agree with ivan that we should add a space after the super(FXML)
line for consistency
54 (commented on others PR)
This internalIllegalValueException
seems to be used in quite a few places. Can we abstract this exception out?
55 (commented on others PR)
Can remove the /
at the end of the line
56 (commented on others PR)
Can we change this to Adding a person
to be more consistent with the rest?
57 (commented on others PR)
Can reword the error message to "There is no need to add people to \"%1$s\" as everyone is included by default."
58 (commented on others PR)
Can reword the error message to "\"%1$s\" cannot be deleted."
59 (commented on others PR)
model.setGroup
will update currentGroup
already so line 41 is not needed
60 (commented on others PR)
Capitalise Everyone
61 (commented on others PR)
Re-add the new line here before merging! Will break on jekyll
62 (commented on others PR)
Could you add a >br>
here before "Test"
63 (commented on own PR)
Hmmm the idea is that it could be used for any kind of special annual date, not just anniversaries. Any other ideas?
64 (commented on own PR)
We can't simply compare LocalDate
s as we're not taking year into account here, since the events are repeated annually.
65 (commented on own PR)
I'm unable to put them in their respective classes because it requires the Person's name, which is not stored on the Birthday
and Event
class.
66 (commented on own PR)
yeah its just a label now no styling yet
67 (commented on own PR)
I realised in some places I named it UpcomingDates
while in others they were UpcomingEvents
. Actually, I just realised in logic
it's still called UpcomingDates
. I think I'll just revert and switch it all to UpcomingDates
.
68 (commented on own PR)
Ok will do. Anyway I think i'll leave it as UpcomingEvents
for now. Might rename all in another PR
69 (commented on own PR)
Nope. All this does is check if the detailedPerson is the personToDelete and if so, switches the tab to the upcomingEventsTab.
The limitation of such an implementation is that if they are not on the detailedPersonTab, (i.e. streaks tab) the details panel will still switch to upcomingEventsTab.
70 (commented on own PR)
Okay but need to reword. The current description is inconsistent as just one section later we use it for "Java 11
".
71 (other comment)
@Assyarul Has this been resolved in #58? I think we can close this if so.
72 (other comment)
Right, my bad I realised my Mac had "Prefer tabs: always" toggled in my sys prefs. Will update the screenshot
73 (other comment)
I'll work on this
74 (other comment)
Both @ivantjh and I have been using Big Sur throughout the development of tp and have not encountered this issue at all. Unable to reproduce this as well.
75 (other comment)
Intended. There shouldn't be a restriction on what a user can consider as a description of a date.
76 (other comment)
Duplicate of #117
77 (other comment)
Duplicate of #129
78 (other comment)
🤦 our UG example says meeting
instead of add-meeting
@ivantjh
79 (other comment)
Should
AddCommand
always return to the all person view?
Yes. As a user, after adding a new person, the natural intuition is to check that the new person has been added. While we have a confirmation message, it would be better to switch to the all persons view so that users can visually confirm that their new person has been added.
If they were still on the groups view, visual confirmation would not be possible as it takes another command to add the new person to the group.
Should
DeleteCommand
still stick to the groups view?
Yes. Similarly, after deleting a person, the natural intuition would be to verify visually, by comparing the current list of people with the previous list of people they saw. If the person is no longer there, users can rest assured that the person is deleted.
If they were initially on the groups view, with 3 people. They would expect to see a new list of 2 people. Switching them to the all persons view would throw them off slightly as they are now presented with a list of potentially more people.
80 (other comment)
Duplicate of #165
81 (other comment)
This has been resolved by disallowing future dates for special dates.
82 (other comment)
Fixed in #216
83 (other comment)
Fixed in #229
84 (other comment)
Closing as the implementation of this feature might lead to additional bugs, which is not ideal based on our timeline.
@cnlinh
(61 comments)1 (commented on others PR)
It should be optional for radd so can you update it?
2 (commented on others PR)
Ah, I was referring to adding the brackets i.e. [r/ROOM] for optional tag
3 (commented on others PR)
missing javadocs?
4 (commented on others PR)
Missing param description?
5 (commented on others PR)
Missing param description?
6 (commented on others PR)
@throws NullPointerException?
7 (commented on others PR)
@throws NullPointerException?
8 (commented on others PR)
Is to be to
a typo?
9 (commented on others PR)
Missing punctuation and capitalization for "issue"
10 (commented on others PR)
Missing punctuation and @param description should be "Target index of the issue in the filtered issue list to close." (separated from the param name)
11 (commented on others PR)
Missing punctuation and @param description should be separated from param name
12 (commented on others PR)
Missing punctuation and @param description should be separated from param name
13 (commented on others PR)
If possible, please add javadoc for this method!
14 (commented on others PR)
If possible, please add javadoc for this method!
15 (commented on others PR)
If possible, please add javadoc for this method!
16 (commented on others PR)
Missing punctuation
17 (commented on others PR)
Missing punctuation
18 (commented on others PR)
Missing punctuation
19 (commented on others PR)
Missing punctuation
20 (commented on others PR)
Missing punctuation
21 (commented on others PR)
Missing punctuation, param description should be separated from param name
22 (commented on others PR)
Missing punctuation and captialisation of "string" and "if"
23 (commented on others PR)
Missing punctuation and captialisation of "string" and "if"
24 (commented on others PR)
Missing punctuation and captialisation of "string" and "if"
25 (commented on others PR)
Missing punctuation and captialisation of "string" and "if"
26 (commented on others PR)
Missing punctuation and captialisation of "string" and "if"
27 (commented on others PR)
Missing punctuation and capitalisation
28 (commented on others PR)
Missing punctuation and captialisation
29 (commented on others PR)
Missing punctuation and captialisation
30 (commented on others PR)
Missing punctuation and captialisation
31 (commented on others PR)
Missing punctuation and captialisation
32 (commented on others PR)
Missing punctuation and captialisation
33 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name
34 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
35 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
36 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
37 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
38 (commented on others PR)
Missing punctuation and captialisation.
39 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
40 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
41 (commented on others PR)
Missing punctuation and captialisation.
42 (commented on others PR)
Missing punctuation and captialisation.
43 (commented on others PR)
Missing punctuation and captialisation.
44 (commented on others PR)
Missing punctuation and captialisation.
45 (commented on others PR)
Missing punctuation and captialisation.
46 (commented on others PR)
Missing punctuation and captialisation. Param description should be separated from param name.
47 (commented on others PR)
Missing punctuation and captialisation.
48 (commented on others PR)
Missing punctuation and captialisation.
49 (commented on others PR)
Missing punctuation and captialisation.
50 (commented on others PR)
Missing punctuation and captialisation.
51 (commented on others PR)
Missing param tag
52 (commented on others PR)
Missing param tag
53 (commented on others PR)
Missing param tag
54 (commented on others PR)
Missing punctuation
55 (commented on others PR)
Missing param and return tag
56 (commented on others PR)
Missing punctuation
57 (commented on others PR)
Missing tags
58 (commented on others PR)
Missing tag
59 (commented on others PR)
Missing punctuation
60 (commented on others PR)
Missing punctuation
61 (commented on others PR)
Wrong class name?
62 (commented on own PR)
Done!
63 (commented on own PR)
Good catch!
64 (commented on own PR)
Will do in later iteration
65 (commented on own PR)
Done!
66 (commented on own PR)
Good catch!
67 (commented on own PR)
Done!
68 (commented on own PR)
Done!
69 (commented on own PR)
Done!
70 (commented on own PR)
Good point!
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)
Done!
77 (commented on own PR)
Done!
78 (commented on own PR)
Done!
79 (commented on own PR)
Done!
80 (commented on own PR)
There is only one field so field
is chosen
81 (commented on own PR)
Good catch, updated!
82 (commented on own PR)
Done!
83 (commented on own PR)
Updated!
84 (commented on own PR)
Updated!
85 (other comment)
LGTM
@daniellau88
(60 comments)1 (commented on others PR)
Do remove the trailing whitespaces in order to pass the build checks
2 (commented on others PR)
Is this needed?
3 (commented on others PR)
I think would be nice to remove the comma to standardize
4 (commented on others PR)
Additionally, can you help to remove Line 8 as well (I think not relevant)
5 (commented on others PR)
Sozz, i realized the bolding looks a bit weird, would be good to keep the bolding within the same sentence.
6 (commented on others PR)
For this portion, I think would be better to use the one in @weixue123 's branch, so might need to merge it in first.
7 (commented on others PR)
Would be nice to have spacing between CHIM and the full stop
8 (commented on others PR)
Are we keeping this portion? Can refer below for the modified command in @weixue123 's repo
9 (commented on others PR)
Use the static method getCheeseType
instead of the constructor (wanted to make the CheeseType a bit Enum like so we can also use ==
for comparison)
10 (commented on others PR)
Add whitespace
11 (commented on others PR)
Would be good to leave it as private and use the static method
12 (commented on others PR)
Do specify the type of each date, currently it doesn't show what each date represents
13 (commented on others PR)
Same for order
14 (commented on others PR)
Any reason to prefer this over null?
15 (commented on others PR)
Is it possible to increase the padding? The cards seems a bit too packed
16 (commented on others PR)
Would it be possible to use enums instead?
17 (commented on others PR)
add assertion error here
18 (commented on others PR)
Remove debug statements
19 (commented on others PR)
Possible to extend DeleteCommand
to do more. for e.g. help to do the basic checkings such as index out of bounds and so on. If not enough time, its fine
20 (commented on others PR)
(must be a valid phone number)
?
21 (commented on others PR)
use .equals
instead
22 (commented on others PR)
would be good to do new Phone(customerToDelete.getPhone().value)
to ensure that it is comparing by value and not just by reference
23 (commented on others PR)
Would you be double calling the method (because you call it in Delete___Command.java as well). Would suggest that you call it from outside instead of here.
Possible use case is, in the future if we allow deletion of customer with all of the customer's order, the panel should only change to the customer panel and not the order panel
24 (commented on others PR)
Just a suggestion (but up to you), you can consider using "Assigned" and "Not Assigned" instead
25 (commented on others PR)
use .map(x -> x.toString()).orElse("-")
so that it does not throw null pointer exception
sorry forgot to update this in properly in previous commit
26 (commented on others PR)
Additionally, do add isAssigned
to .equals
as well.
27 (commented on others PR)
Do the cheeses need to be updated to have the isAssigned
attribute?
28 (commented on others PR)
yeap something like that
29 (commented on others PR)
seems like a static method because it doesnt seem directly related to the object
30 (commented on others PR)
Would be good to set the panels inside the commands instead.
Was thinking in the future, if we for some reason modify a cheese's ID, and have to update the order too, then the view will be changed to the order panel (instead of the cheese panel)
31 (commented on others PR)
The logic is good 😃 possibly can do 2 things
Sort by maturity date too (to ensure that the assigned cheeses are matured)
Can just use a counter to count the cheeses instead of using decreaseQuantity()
, seems a bit sketchy haha
I think the setCheese
should be done else where maybe in the command (using model.setCheese()
). The getUnassignedCheeses
should only get the cheeses without updating anything yet
32 (commented on others PR)
Additional whitespace here
33 (commented on others PR)
I'm not sure if it would be benefitial for us to set quantity's value to private (because it is already final so we can't rly change it anyways). But if you do have a purpose for it, then I'm alright with it
34 (commented on others PR)
Hmm, curious, does equals
on the hashset not work?
35 (commented on others PR)
I think I found out why (my part also affected by this), have to make sure that all the ids have the same hash. Will be updating in my branch
36 (commented on others PR)
Was thinking that CheeseId should not be doing things for the sake of the stub (i.e. not know of the existence of the stub). Can just specify that it returns the next Id?
37 (commented on others PR)
Add newline before Example
38 (commented on others PR)
Same here
39 (commented on others PR)
Do update the toString
method for cheese (now showing optional.empty
)
40 (commented on others PR)
Currently, there is one issue with this. Steps to replicate:
Use find command to Find Customer B
Delete Customer A
The customer phone number provided is invalid.
I would suggest to use the getCustomerWithPhone
to find the customer instead, filteredCustomerList
is a bit unreliable
41 (commented on others PR)
Instead of doing this, would it be possible to have a method, e.g. getOrdersForCustomer
so that you don't have to change the filter all the time? I'm afraid similar bugs as the issue mentioned before may appear
42 (commented on others PR)
Same as the comment in #37, don't think that we should change the UI portion just to delete the cheeses (although functionaility-wise it is exactly the same, just the organization is a bit different)
43 (commented on others PR)
Would suggest to use the getCustomerWithPhone
method in AddressBook
instead of filtering the whole list
44 (commented on others PR)
Do resolve conflicts
45 (commented on others PR)
Same here
46 (commented on others PR)
this not needed here? seems like a repeat in OrderPhonePredicate
47 (commented on others PR)
Method should be private, you may want to use the getCheeseType
static method
48 (commented on others PR)
Hi, may I know the link for the diagram
49 (commented on others PR)
Also can consider removing the [In Progress]
50 (commented on others PR)
This looks gd
51 (commented on others PR)
Should the sequence diagram contain the strings? it seems like a bit out of place
52 (commented on others PR)
Mini issue: JavaFx is JavaFX
53 (commented on others PR)
Should the sequence diagram contain the strings? it seems like a bit out of place
54 (commented on others PR)
Also the CHEESE_LIST
what is it suppose to represent?
55 (commented on others PR)
Sure, I just pointed out because there seems to be no explanation for it haha
56 (commented on others PR)
I think the first asterick is for bullet point
57 (commented on others PR)
is it java -jar chim.jar
?
58 (commented on others PR)
Any reason to remove?
59 (commented on others PR)
maybe can bold the word all
60 (commented on others PR)
Change Expiry Date and Manufacture Date to caps and ``
61 (commented on own PR)
Will bring up a proposal for this in the meeting
62 (commented on own PR)
My bad, the class should be used in Order
, will add in in next commit
63 (commented on own PR)
3 Things
This portion of code is to test the EditPersonDescriptor
(which is not a part of the model, but only used inside Commands
, hence this should be in the right place
Regarding invalid dates, will add a few in the Dates class
Regarding invalid cheese types, currently there is no way for a cheese to be of an invalid type (because it just needs a name), unless we check for empty String
64 (commented on own PR)
Would be nice to standardize but might not be necessary (will have a lot of existing codes to update)
Will bring it up in meeting tmr
65 (commented on own PR)
I think would be good if it is the 1st case (less bugs when they smoke test)
66 (commented on own PR)
Which would you suggest to drop? If we want, we can just keep expiry and manufacture date (then I can add one more case in the AddressBook to ensure that the Cheese's manufacture date must be after the order's order date)
67 (commented on own PR)
I think this might cause some trouble on our side cause imagine if Order shows all the cheeses that are assigned to it (and also cause order needs to check that the cheese is of the same type).
I think, we can possibly disallow cheese deletion if the cheese has been assigned? (cause I think delete cascading will be bad for this)
68 (commented on own PR)
Will discuss on Saturday
69 (commented on own PR)
I only didn't include the arrows for updateFilteredCheeseList (it returns void), the rest are included
70 (other comment)
The AboutUs image is not working... I think you would need to rename it to laurenlhy.png
(currently its named laurenlhy.png.JPG
)
71 (other comment)
Hi, you can check out the branch telegram-github-notifier
on the master repository. It seems that the build isn't working there as well.
Forbidden: bot can't send messages to bots
72 (other comment)
Actually do you want to squash some of your commits, before merging. But other than that, everything seems fine.
Yea, I think would be good to squash to about 3 commits
73 (other comment)
I rebased the branch, gonna merge it in soon
74 (other comment)
Closed in favour of #20
75 (other comment)
Do remember to modify your code to support the toggling of views once #20 is merged in
76 (other comment)
There is one class of ModelStub with no useful methods, and the rest of variations are extending from it and overiding methods important for testing. We could make it abstract though. What else do you think we can do. The idea is we have two kind of test suites: 1 with using the actual ModelManager and 1 using just the stubs.
I probably can't think of a better way to do it, but I'm afraid in the future it might get a bit messy because of the so many variations
77 (other comment)
So for the architecture diagrams, nothing has changed actually, so I will use the same diagrams as before. For the edit commands implementation, I might add a sequence diagram, but that would be very similar to other commands like Add and Delete. I would feel that an object diagram, to explain the dependencies between the models would be more relevant to my content, but that might be covered under the model designs?
But you would have to come up with something that you have worked with before, so I think would be best to add the sequence diagram
78 (other comment)
Should the sequence diagram specify the arguments?
79 (other comment)
For the EditCommandSequenceDiagram
, do include the command string
80 (other comment)
hihi, do resolve the comments in gdrive too
81 (other comment)
Duplicate of #54
82 (other comment)
Duplicate of #55
83 (other comment)
The findcheese
command can be used instead to filter and count the number of each cheese.
84 (other comment)
New features will not be considered
85 (other comment)
Issue of ID being different from the Index of the list
86 (other comment)
Delete cascading is an expected behavior
87 (other comment)
Do rebase and i think it is good to merge
88 (other comment)
Do rebase the branch, seems like there is some overlaps
89 (other comment)
Same, do rebase the branch. Also check if the other messages are correct
@jlxw48
(52 comments)1 (commented on others PR)
maybe block letters? follow the format of the other fields
2 (commented on others PR)
maybe block letters? follow the format of the other fields
3 (commented on others PR)
can consider removing the extra blank line?
4 (commented on others PR)
I think this JavaDoc comment can be further refined.
5 (commented on others PR)
Can I check why you think it is better to not differentiate code/command line keywords from normal words in a sentence?
6 (commented on others PR)
Would it be better to display all the possible parameters?
7 (commented on others PR)
Do you think it would be better to give the user instructions on how to initialise/use our application? Or are there reasons why you think this should not be here?
8 (commented on others PR)
Could you check if there is an &
delimiter for the subsequent keywords?
9 (commented on others PR)
Would it be clearer to the user if we used markdown to format the keywords here too?
10 (commented on others PR)
Do you think a person should have a tag describing a policy if s/he has no policy number?
11 (commented on others PR)
Do you think it would be more consistent if you ended this line with a fullstop, just like the above lines?
12 (commented on others PR)
Do you think we can use more suitable tags given the insurance agent-client relationship?
13 (commented on others PR)
Would it be more consistent if the policy number format followed that from above? It is not very consistent with the policy number formats written in the Quick Start section, and the Features > Add section (there are 2 different formats in 3 different sections).
Also, there is a spelling mistake for the t/premiunplan
. Do be more careful next time!
14 (commented on others PR)
Do you think it would be good to clarify on the maximum number of flags that can be used in each command execution?
15 (commented on others PR)
As Yong Shen has suggested in my PR, do you think it would be be more intuitive to the user if we rename policies as insurance policies instead, so that the 'i' flag is more suitable?
16 (commented on others PR)
I was wondering if it would be good to clarify if a keyword is bounded by '&' delimiters (if any)? Else, some users might think that keywords are words and mistake a search for 'Hans Bo' to return the same as 'Hans & Bo'.
17 (commented on others PR)
As in the above comment, perhaps we can add in an example where we should find alex david
to show the difference between the 2 types.
18 (commented on others PR)
Just something minor: would be good if in our documentation we can clarify that our search is case insensitive.
19 (commented on others PR)
Would it be clearer if the regex was stored as a constant so that another developer would better understand what you are trying to split by?
20 (commented on others PR)
I realised that this List>String>
is used in all the subclasses. Perhaps we can consider shifting it to the parent class in the future?
21 (commented on others PR)
Just to check, this test checks if the address contains "12345", "alice@gmail.com" or "Alice" right? If so, perhaps it would be better to clarify that the person's address does not contain any of these keywords and thus the match fails? Else, it seems like we are testing for all the fields mentioned.
22 (commented on others PR)
Same comment as the other file!
23 (commented on others PR)
I like that this is so succinct, but others who are less proficient/new to Java might find this hard to digest, since it condenses a few steps into one. Do you want to consider writingn this on separate lines?
24 (commented on others PR)
Do you think it would be more readable if these two strings are abstracted to static final
variables?
25 (commented on others PR)
Do you think it would be more appropriate to name the test to describe that you are testing reapeated unlocks/mutability rather than just "equals"?
26 (commented on others PR)
Would it be more appropriate to name this variable POLICY_ID_CONTAINS_ANGULAR_BRACKETS
rather than POLICY_ID_CONTAINS_CARROT
? Since carrot can refer to ^
too.
27 (commented on others PR)
If I'm not wrong the # symbol is placed after a class name to show that the method following the # belongs to a class. Perhaps it might be clearer to do so such that other developers will know where to find this method?
28 (commented on others PR)
Do you think it would be good to give an example? Not everyone might understand what MM means.
29 (commented on others PR)
Same for this too.
30 (commented on others PR)
Do you think these variables should be publicly accessible by other classes?
31 (commented on others PR)
Might be good to color code too.
32 (commented on others PR)
The links for the colored words do not work.
33 (commented on others PR)
Might want to check with Boon Hong to include a writeup for meetings.
34 (commented on others PR)
Do you think it would be clearer to shift the "E.g. ..." to the next line? Else someone who is looking through it quickly might mistake it to be "for. E.g." to mean "for example". Perhaps can consider using "For example" instead of "E.g.", since this is part of a sentence.
35 (commented on others PR)
Capitalisation issue: "What information...", but "what information..." is shown.
36 (commented on others PR)
The spacing between this bullet and the next is less than the spacing between 2 consecutive bullets in the previous commands.
37 (commented on others PR)
Actually, would it be good to put the table here? Since we are describing the features.
38 (commented on others PR)
Should json be capitalised?
39 (commented on others PR)
I think he already added.
40 (commented on others PR)
Do you want to consider removing the fullstop from the picture caption? Just looks a bit weird to me. If it's fine for youm can leave it in.
41 (commented on others PR)
I think we can add in a line saying that duplicate indices e.g. "1, 1, 1" are not allowed.
42 (commented on others PR)
To be consistent, if we are not putting spaces between examples, we should remove these here too.
43 (commented on others PR)
Perhaps we can use -
instead of - ?
44 (commented on others PR)
I think this should be indented to the 2nd level, if you compare with examples from the other commands.
45 (commented on others PR)
Image should be indented to be aligned with the start of the text of its corresponding text block above.
46 (commented on others PR)
Same for this image; identation issues.
47 (commented on others PR)
Maybe we can bold "may not use multiple attributes"? So that it looks better. Just my opinion
48 (commented on others PR)
The link for the Return to Table of Contents
is somehow indented, when it should be on the outermost indent level. Can you see if you can resolve it?
49 (commented on others PR)
Also same for the find command examples, we can remove the >br> tags if we do not want to leave lines beween bullet points without images.
50 (commented on others PR)
This yellow looks a bit pale. Is there a darker shade of yellow we can use?
51 (commented on others PR)
Should we have a tutorial on how to launch the terminal applications in the current directory? In the event that someone is not tech-savvy, but uses the lock functionality such that they are forced to unlock the application through the terminal.
52 (commented on others PR)
Might be good if the inputs and the mapped commands are in code markdown, rather in quotes.
53 (commented on own PR)
I was thinking that it would be better to link to the User Guide itself. Perhaps I should change the description of the URL. Or would it be better to directly link to Quick Start?
54 (commented on own PR)
Great suggestion! Thanks!
55 (commented on own PR)
I was thinking if I name it getPolicyUrl
, another developer might mistake it to return a String
rather than an Optional
. What do you think?
56 (commented on own PR)
Good point. I've changed it!
57 (commented on own PR)
Good point, I didn't notice that.
58 (commented on own PR)
Each new line is meant to separate the logic from the other lines, so that each "section" gives me 1 variable/object that I would eventually pass into the assert function. I felt that it looks cleaner that way. What do you think?
59 (commented on own PR)
Okay, thank you!
60 (commented on own PR)
How should we define it actually? I was thinking the same thing, but couldn't think of how to define it properly.
61 (commented on own PR)
Okay, changed!
62 (commented on own PR)
Okay, I changed the positive integer line to the following:
Is this clearer?
63 (commented on own PR)
Okay, added!
64 (commented on own PR)
Okay, added!
65 (commented on own PR)
Okay, added.
66 (commented on own PR)
Hmm okay, I think I will be adding a section to talk about the fields that can be added for each contact.
67 (commented on own PR)
Thanks for spotting this!
68 (commented on own PR)
Can you clarify what you mean by this?
69 (commented on own PR)
Okay yes, thanks!
70 (commented on own PR)
FLAG
uses the identifier of each attribute to help the program identify which attribute you are referring to.
For more information about the identifiers for each attribute, refer to What information can we store for each client contact?.
Added the above 2 statements, hope they make things clearer.
71 (commented on own PR)
Okay, I've added the below 2 statements for clarity:
The data file is stored in a zip file inside the data
folder in the same folder.
If you previously set a lock
for ClientBook, the zip folder can be unzipped with that same password.
72 (commented on own PR)
This is a default constructor in the CommandResult class and is not related to the BatchCommand. Perhaps we can suggest to remove it/add a new constructor in the next iteration?
73 (commented on own PR)
Good idea. I've edited to include this change.
74 (commented on own PR)
I searched online what the coding standard should be, and it seems like I should have commented to say that this is a fallthrough case. I've provided the link here if you want to take a look. https://www.oracle.com/java/technologies/javase/codeconventions-statements.html
75 (commented on own PR)
Updated! Thanks for the catch.
76 (other comment)
I will be doing the test for the new command in the next iteration.
77 (other comment)
Finished documentation too, so shall do a proper full PR.
78 (other comment)
Looks good for this week! Except some images are not properly rendered on the website.
79 (other comment)
One more comment: for Insurance Policies, can we also add into the UG saying that they are uniquely identified by the PolicyID and PolicyURL pair? So this means that the user can enter 2 policies of the same ID, but link them to different documents.
This is currently being done in the code.
If you have any alternatives, do let me know so I can update the code accordingly.
80 (other comment)
I noticed in the code that duplicate input for tags are simply ignored. Perhaps in the UG we might want to add that duplicate/repeated input will be ignored for tags and policies? Since these two can accept multiple objects, as compared to repeated address/names/phone numbers, where we simply choose to take the last input.
81 (other comment)
How about "a client cannot own 2 policies with the same policy ID and URL."
Perhaps "... with the same policy ID and URL pair"?
@yaowei-soc
(48 comments)1 (commented on others PR)
Trailing white space
2 (commented on others PR)
Trailing white space
3 (commented on others PR)
!aliasesOptional.isPresent()
-> aliasesOptional.isEmpty()
4 (commented on others PR)
Might want to follow the addressbook initialization
initialAddressBookData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);
initialAliasesData = aliasesOptional.orElseGet(SampleDataUtil::getSampleAliases);
5 (commented on others PR)
Missing javadoc for aliases
param
6 (commented on others PR)
Should we document this unchecked exception?
7 (commented on others PR)
Should we document this unchecked exception?
8 (commented on others PR)
!jsonAliases.isPresent()
-> jsonAliases.isEmpty()
9 (commented on others PR)
Return value of parseTagsExceptLast
not being used and Javadoc missing. May want to consider returning void
?
References found in:
AddCommandParser#L100
EditCommandParser#L129
10 (commented on others PR)
Will need to add PREFIX_REMARKS
from PR #77
11 (commented on others PR)
Duplicate chunk found in AddCommandParser#L84-105, may want to refactor it out?
12 (commented on others PR)
Can be replaced with positions.sort(Comparator.comparingInt(PrefixPosition::getStartPosition));
13 (commented on others PR)
Can make aliases
final
14 (commented on others PR)
May want to make the happy path prominent: https://nus-cs2103-ay2021s2.github.io/website/se-book-adapted/chapters/codeQuality.html#make-the-happy-path-prominent
if (helpWindow.isShowing()) {
helpWindow.focus();
} else {
helpWindow.show();
}
15 (commented on others PR)
Sure!
16 (commented on others PR)
Got it, maybe later on we can implement a sample alias in
17 (commented on others PR)
18 (commented on others PR)
Should be LogsCenter.getLogger(getClass());
19 (commented on others PR)
input
is not used
20 (commented on others PR)
Should this test be ensuring that all items in the list starts with 'a' rather than just index 0?
21 (commented on others PR)
Might want to test to make sure that empty spaces returns an empty list:
[null
, ""
]: non empty list
[" "
, " "
, " "
]: white spaces return empty list (is this the intended behaviour?)
["e"
, "ex"
, ...]: non empty list
I've also realised that the method getAutocompleteCommands
in Logic.java isn't documented.
22 (commented on others PR)
Slight typo here. Other than that, LGTM.
23 (commented on others PR)
Why is there empty line here?
24 (commented on others PR)
Any reason why you decided to keep a List and Map instead of converting the map to List?
25 (commented on others PR)
Might want to use CommandTestUtil.PREAMBLE_WHITESPACE
e.g.
assertParseSuccess(parser, PREFIX_NAME + PREAMBLE_WHITESPACE + "Alice"+ PREAMBLE_WHITESPACE + "Bob", expectedNameFindCommand);
26 (commented on others PR)
Might want to use CommandTestUtil.PREAMBLE_WHITESPACE
27 (commented on others PR)
Might want to use CommandTestUtil.PREAMBLE_WHITESPACE
28 (commented on others PR)
Might want to use CommandTestUtil.PREAMBLE_WHITESPACE
29 (commented on others PR)
Might want to use CommandTestUtil.PREAMBLE_WHITESPACE
30 (commented on others PR)
Unused variable
31 (commented on others PR)
@Test
tag formatting
32 (commented on others PR)
Hmm using .equals
would mean that ["first", "second"] would not be equals to ["second", "first"]. Is this an intended feature?
33 (commented on others PR)
Maybe using .containsAll
would be more appropriate in this case
34 (commented on others PR)
Why is job title removed?
35 (commented on others PR)
Needs a \n
behind
36 (commented on others PR)
Might want to use the unicode char: … (U+2026)
37 (commented on others PR)
Better to use containsAll
. See https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/129/commits/bb6c1b9119e98e5f757b1811b8712731482ac534 with corresponding tests https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/129/commits/3c0d56828bffbc1b266fe65ee53a1f3585137632
38 (commented on others PR)
Better to use containsAll
. See https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/129/commits/bb6c1b9119e98e5f757b1811b8712731482ac534 with corresponding tests https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/129/commits/3c0d56828bffbc1b266fe65ee53a1f3585137632
39 (commented on others PR)
Missing \n
behind
40 (commented on others PR)
Unicode ellipsis?
41 (commented on others PR)
Might want to add a simple test taking clear as an example
@Test
public void parseCommand_clear() throws Exception {
assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD, emptyAliases) instanceof ClearCommand);
assertTrue(parser.parseCommand(
ClearCommand.COMMAND_WORD + " 3", emptyAliases) instanceof ClearCommand);
}
42 (commented on others PR)
Hmm would using streams be better here? (Tag -> String -> Collections.join) Is there a reason why builder is used (for performance?)
43 (commented on others PR)
Might want to check different Set<> equals here. Example:
// different indexes -> not equals
assertNotEquals(DeleteCommand
.buildDeleteIndexCommand(Collections.singletonList(INDEX_FIRST_PERSON)),
DeleteCommand.buildDeleteIndexCommand(VALID_INDEXES));
44 (commented on others PR)
Might want to check different Set<> equals here. Example:
// different indexes -> not equals
assertNotEquals(DeleteCommand
.buildDeleteIndexCommand(Collections.singletonList(INDEX_FIRST_PERSON)),
DeleteCommand.buildDeleteIndexCommand(VALID_INDEXES));
45 (commented on others PR)
Possible code quality issue here, deep nesting: https://nus-cs2103-ay2021s2.github.io/website/se-book-adapted/chapters/codeQuality.html#avoid-complicated-expressions
46 (commented on others PR)
While following the user guide for add
followed by tab, I found out that auto complete only works if I have a space. Might need to highlight that in.
47 (commented on others PR)
Does this mean that the results will not be sorted by similarity anymore? Meaning that the order in which find returns will be based on the original order of the list?
If that is the case, I don't think "dictionary order" would be applicable here since it means alphabetical order. Maybe not mentioning that the items will be sorted will be clearer?
48 (commented on others PR)
It works even with the .md tho
49 (commented on own PR)
I accidentally added this duplicate @ ce88d0f01172233e0097c0b35f3d39f32c7a4180
50 (commented on own PR)
Ah yes, it should be true if it will be shown and false if it should be hidden.
What do you think of rephrasing it like this:
/**
* Returns predicate that determines field control visibility.
* @return predicate that returns true if prefix linked control should be shown
*/
51 (commented on own PR)
Added more test cases @ 1e159f4e080ebf9107aa3e93e24bb7c8b32d70a2
52 (commented on own PR)
Added more test cases @ 1e159f4e080ebf9107aa3e93e24bb7c8b32d70a2
53 (commented on own PR)
This line should be checking for same object
@Test
public void test_predicateEqualsCheck_allEquals() {
...
assertEquals(addressArgs, addressArgs);
...
54 (commented on own PR)
I think it should be in this format. See: https://developers.google.com/style/code-syntax
Maybe I'll update it to { shown | selected| INDEX ... }
what do you think?
55 (commented on own PR)
I think it should be in this format. See: https://developers.google.com/style/code-syntax
Maybe I'll update it to { shown | selected| INDEX ... }
what do you think?
56 (commented on own PR)
I think [-t TAG]...
means you can have multiple tag flags while [-t TAG...]
will mean you can have only one tag flag but multiple "arguments" after that.
57 (commented on own PR)
Updated in latest commit. Do check it out.
58 (commented on own PR)
Updated in latest commit. Do check it out.
59 (commented on own PR)
For this, there is an image indicating that it is highlighted. Do you want it to be listed here?
60 (commented on own PR)
Updated in latest commit. Do check it out.
61 (commented on own PR)
Updated in the latest commits
62 (other comment)
LGTM, but perhaps might want to rename PR to something more appropriate. See #52
63 (other comment)
Git Commit Name Convention
We will stick to conventional commit style, but we will capitalize the first letter after the colon.
Recommended examples:
The general consensus is that if it conveys what this commit does, it's fine.
Git Branch Naming
Naming of the branch doesn't really matter as long as it makes sense.
https://se-education.org/guides/conventions/git.html
If a branch is related to an issue, it is recommended to use the format {issue number}-some-keywords-from-the-issue
Recommended examples:
docs/69-update-readme
feature/22-add-storage-backup
Pull Request Naming Convention
No specific PR naming convention, as long as it conveys information on what that PR does.
Can use conventional commit style or write your own short description.
64 (other comment)
Seems like the changes in PR #65 are working. I have closed the v1.1 milestone since there's no more issues related to it.
65 (other comment)
In ModelManager, should line 107
updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);
of
public void addPerson(Person person)
method
be updated/removed to ensure the filter is persistent even after adding a person?
Other than this, everything else LGTM for
Logic
component.
This line should not affect the filter after adding a new person
66 (other comment)
I realised that the help text for add
command does not include spaces between the flag and the value. I'm guessing the edit
command will have this issue too
67 (other comment)
Sort order for list
changed after doing a find
command. Should list
command show the original order?
68 (other comment)
@oeiyiping will you be updating the diagrams for your changes to Remarks?
69 (other comment)
https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/108
Seems like the config still doesn't work well. Might want to disable codecov/patch
70 (other comment)
JAR released: https://github.com/AY2021S2-CS2103T-T12-3/tp/releases/tag/v1.2.1
71 (other comment)
Fixed in https://github.com/AY2021S2-CS2103T-T12-3/tp/pull/121
72 (other comment)
@justgnohUG are you taking this issue? Seems like it is related to #124
73 (other comment)
Since everyone has already updated their section of the DG for week 10, I'm closing this issue.
You can check your tP progress here: https://nus-cs2103-ay2021s2.github.io/dashboards/contents/tp-progress.html
74 (other comment)
Closing issue since it is implemented in PR #121
75 (other comment)
@darkdestry-t have you completed the assertions? https://nus-cs2103-ay2021s2.github.io/dashboards/contents/tp-progress.html
76 (other comment)
@tanboonji Fixed issue in commit f660e46, do check it out
77 (other comment)
Looks good overall, aside from the following matters:
1. Out-of-bounds index does not return any error message in ABB, and there is no other indication that the input index is invalid.
Might be good to reference the error behaviour in `delete` command for consistency.
2. Some minor docs issues.
3. I feel that it would it be good to include a disclaimer in ABB itself and/or in the UG stating that the `email` command is only valid if the user has an OS mail app, and is logged into a valid account in said mail app. What do you think?
For point 3, I'm not exactly sure that is within our control? I've tried on Windows (logged in), macOS (logged in), Ubuntu (not logged in, Thunderbird installed) and on Ubuntu.
On Ubuntu, it will first open up the default browser (FireFox) and subsequently opening up Thunderbird, prompting me to login.
So I believe that on most OS, if the user is not logged in, the mail client will prompt the user. I feel that I don't have to document that down.
78 (other comment)
Closing since we are not implementing this
79 (other comment)
Closing since we are not implementing this
80 (other comment)
Closing since we are not implementing this
81 (other comment)
Closing since we are not implementing this
82 (other comment)
Closing since we are not implementing this
83 (other comment)
Closing since we are not implementing this
84 (other comment)
Closing since we are not implementing this
85 (other comment)
Closing since we are not implementing this
86 (other comment)
Closing since we are not implementing this
87 (other comment)
Closing since we are not implementing this
88 (other comment)
Closing since we are not implementing this
89 (other comment)
Closing since we are not implementing this
90 (other comment)
Closing since we are not implementing this
91 (other comment)
Closing since we are not implementing this
92 (other comment)
Closing since we are not implementing this
93 (other comment)
Closing since we are not implementing this
94 (other comment)
Closing since we are not implementing this
95 (other comment)
Closing since we are not implementing this
96 (other comment)
Just a suggestion, perhaps for future reference, would it be better to highlight the whole card as seen in the blue highlight of a Person Card?
PS: Interesting usage of JavaFX PseudoClass
I was thinking of doing that, however I feel that it may conflict (visually) with the active state. Maybe we could add in a new icon somewhere to indicate that selection status?
97 (other comment)
While testing @ commit 72cdf3e623021fb07025ad089c1f9dfd58f05bb7, I found some bugs
1: Is the find
command supposed to be deleted in this scenario?
2: Does the autocomplete allow me to cycle through the flags?
98 (other comment)
Resolved in PR #119
99 (other comment)
Fixed in #129
100 (other comment)
Fixed in PR #140
101 (other comment)
May be related to #205
102 (other comment)
May be related to #205
103 (other comment)
Am able to confirm that this issue only occurs on Outlook for Windows.
Clients that are able to handle comma separated emails are:
Mail for Windows 10
Mail for macOS
Outlook for macOS
Outlook for Windows will result in:
The current issue with Outlook for Windows is that is is reliant on semicolons as a list separator (source: https://stackoverflow.com/questions/12120190/what-is-the-best-separator-to-separate-multiple-emails). The only way around that is to manually enable "Commas can be used to separate multiple message recipients" in Outlook settings.
104 (other comment)
Fixed in PR #208
105 (other comment)
I found out that this was documented by removed by https://github.com/AY2021S2-CS2103T-T12-3/tp/commit/5b85d8d7c087364a4887be12dd705d4ad1566e09#diff-b50feaf9240709b6b02fb9584696b012c2a69feeba89e409952cc2f401f373fb
@umergta
(48 comments)1 (commented on others PR)
i agree with yi hsuen. But for final consensus, lets discuss in the meeting as there is no rush to do so
2 (commented on others PR)
Yes I believe so
3 (commented on others PR)
invalid? Since these are AddressBook tests and everything should be related to ModuleBook3.5 now
4 (commented on others PR)
same issue? Maybe the pull from upstream wasnt done properly as the current master has no invalidPersonAddressBook and is invalidTaskModuleBook
5 (commented on others PR)
testing for AB3, not ModuleBook3.5 😕
6 (commented on others PR)
LGTM! but i agree with yi hsuen. should just be a small fix 😃
7 (commented on others PR)
should be "returns a"
Just a small fix
8 (commented on others PR)
Maybe can paraphrase to "sorts the list of tasks according to the deadline of the task. Tasks with deadlines approaching soon are displayed at the top while tasks with no deadlines are displayed at the bottom"
9 (commented on others PR)
maybe next iterations we can avoid null but looks good for now!
10 (commented on others PR)
good catch haha
11 (commented on others PR)
maybe can save the condition in a boolean to make it clearer instead of having the comment? just a small suggestion
12 (commented on others PR)
was gonna say the same but yes lets discuss
13 (commented on others PR)
nice!
14 (commented on others PR)
can we use enum? just a suggestion
15 (commented on others PR)
just a small issue.. can be a bit ambiguous (name can be interpreted as name of task / name of module) so can be more specific. looks good otherwise
16 (commented on others PR)
should follow the given format e.g. deleteTag 1 t/tagName
17 (commented on others PR)
agreed
18 (commented on others PR)
listOfModules (should be plural). Small issue though
19 (commented on others PR)
idk if extra lines in between if blocks are adhering to 2103t standards.
20 (commented on others PR)
not sure if its better to mention the return like this or use '@return' instead. Just a small issue
21 (commented on others PR)
Looking at the other parse methods in the various commands like add, ArgumentMultiMap and tokenize is used instead of this way of split. Although valid, maybe for consistency sake can use that?
22 (commented on others PR)
im not sure if trimming is necessary here as in ModuleBookParser's parse command, userInput.trim() is already called with the matcher. Good to double check there haha
23 (commented on others PR)
Yes i agree with @QY-H00 here. Was going to mention that highly likely law of demeter is violated here. Although, if u think the violation is justified, its fine (according to prof, can justfiy for convenience sake at times). If not, i think its better to add a method in!
24 (commented on others PR)
think there is too much method chaining going on so may be good to change this implementation? Up to u if you think otherwise.
25 (commented on others PR)
I think the naming of the variables can be clearer here!
26 (commented on others PR)
do you think javadocs required here? since they are public methods?
27 (commented on others PR)
unecessary else block?
28 (commented on others PR)
nice catch!
29 (commented on others PR)
I see that u have an array of valid modules in ur ModuleManager class... I think it will be good if we specify the valid modules in the UG.. if not, it might be reported as a bug later on haha
30 (commented on others PR)
referring to this in the comment above!
31 (commented on others PR)
shouldn't each assignment be on the same line?
32 (commented on others PR)
hmm correct me if im wrong, but youll be adding the raw workload of each task to the module? Maybe, as a better indicator for modules, we can calculate the proportion / fraction of the total workload for each module? I think that wll be a more useful number for the user? Maybe the rest can pitch in here too
33 (commented on others PR)
maybe can remove this commented code out
34 (commented on others PR)
nice haha
35 (commented on others PR)
just a minor suggestion, to change 1,2,3 to low,medium, high for clearer communication through code
36 (commented on others PR)
Minor suggestion: can use for-each loop instead but no biggie
37 (commented on others PR)
nice use!
38 (commented on others PR)
wah didnt know this existed haha
39 (commented on others PR)
think would need to add tests in ModuleManager instead later for the removal of these later
40 (commented on others PR)
looks good!
41 (commented on others PR)
think need to change this java doc!
42 (commented on others PR)
nice avoidance of using magic literals!
43 (commented on others PR)
should we mention learning portal here? cuz that is like a subset of what moduleBook3.5 sets out to do?
44 (commented on others PR)
are the numbers here intentionally changed to all 1's??
45 (commented on others PR)
Should be 'Recurs the 1st task in ModuleBook3.5 every two weeks'..?
46 (commented on others PR)
Should this be 'deadline is behind' instead? (or am i confusing myself haha)
47 (commented on others PR)
good catch!
48 (commented on others PR)
oh damn another nice catch HAHA
49 (commented on own PR)
ok will do
50 (commented on own PR)
done
51 (commented on own PR)
Yes. I think there should be a notRecur command to remove the recurrence of the Task. I think i will work on that Monday after clearing other assignments haha
52 (commented on own PR)
resolved
53 (other comment)
closed. Didn't run CI
54 (other comment)
Done. Waiting to merge in master DG after review
55 (other comment)
done
56 (other comment)
no changes for storage. LGTM!
57 (other comment)
Overall LGTM. Just added some comments pertaining to previous ongoing convos.
58 (other comment)
LGTM
59 (other comment)
LGTM
60 (other comment)
Merged upstream repo into current repo for recurring-command:
Failing testcases (that have been commented out):
JsonSerializableModuleBookTest: toModelType_typicalTasksFile_success()
StorageManagerTest: moduleBookReadSave()
JsonModuleBookStorageTest: readAndSaveModuleBook_allInOrder_success()
61 (other comment)
hmm i definitely agree with you that we shouldnt stay in the middle.
When implementing the recur command, I thought it was a good to have a command on its own because:
Personally, i would have more 'one-time' tasks than recurring tasks if im using a a task manager. E.g. we would only have 1 assignment 1 in a module. So for recurring tasks, realistically speaking, it should be made into a command rather than just a normal field like 'workload' for example. This is also a justification we can give for the criticism on 'why does recur have to be a command on it's own' if we get it?
With regards to your 1st problem, I am not quite sure as to why the book will stop updating weekly? If a task is recurring weekly, it will refresh the deadline every week regardless, no? Might need some clarification there haha sorry
The second scenario is actually a v important consideration. One possible implementation can be when a user marks task as done, we can update the deadline (and remove starttime maybe), so that the user can see the next deadline already? what do you think? Another possible solution would be to maybe add a next deadline: field in the task card which is way simpler i think?
For the refresh command, i think it is a bit unsafe to add a new command with only a day left because I think quite a few changes would need to be made? and we only have (only a day at most) to implemement the feature? I am scared that it will be too tight for v1.3 deadline?
Overall, I am still fine with either though cuz for me, both ways work fine and (i think) either way can be justified hahaha
62 (other comment)
looks good!
63 (other comment)
LGTM
64 (other comment)
resolved in previous issue. solved by @QY-H00
65 (other comment)
linked to refresh command?
66 (other comment)
think its been caused here:
the checkArgument in the constructor of the Tag
67 (other comment)
@yhtMinceraft1010X @QY-H00 @figo2127 what do u guys think?
68 (other comment)
ok thanks @yhtMinceraft1010X 👍🏼
69 (other comment)
linked to #136
70 (other comment)
LGTM, but I think the AddCommand still has commented out code.
roger that. Will remove in next commit!
[resolved]
71 (other comment)
refresh command
72 (other comment)
refresh command
73 (other comment)
invalid
@nowknowing
(46 comments)1 (commented on others PR)
Do we keep this? Remarks isn't in our milestone but I suppose we could
2 (commented on others PR)
Should this also be parseStudentCommand?
3 (commented on others PR)
getAddStudentCommand
4 (commented on others PR)
also just curious what is k
5 (commented on others PR)
Should we use the studentIndex-Session index here too?
Actually there's no use of this toString() method currently, right
6 (commented on others PR)
Add session to sth?
7 (commented on others PR)
I guess also do the folder with your name
8 (commented on others PR)
Coming up, will have to edit this to serve Recurring Sessions as well.
TODO for me
9 (commented on others PR)
Im understanding that getPrev3 month is getMonth applied to every student, and for 3 months. I guess it'd be considered less "repeated code" if this method was built on getMonth. possibly using getMonth's methods from within getPrev3?
10 (commented on others PR)
Might be consistent with the other commands if not capitalised. eg "past_fees" / "3_fees" / "3_month_fees"
11 (commented on others PR)
"Shows the totalled fees per month, for the past 3 months." Or something of the sort could be somewhat more accurate.
12 (commented on others PR)
super neat, hadn't thought of putting it at model!
13 (commented on others PR)
MIght be good to mention somewhere its 1-to-1 only
14 (commented on others PR)
1.imo shld mention 1-to-1 here.
2.provide" -> "get"/"receive"/"retrieve"
15 (commented on others PR)
The link here not working on mine
16 (commented on others PR)
As with the following displayed session list
17 (commented on others PR)
This looks like the same thing to me as onSessionDate (but without the assert), with different input.
Perhaps rename both methods to reflect this difference in input, or just let them be overloaded methods
And for the former, call onSessionDate(new SessionDate()) from within
I like you use the word build better than just 'on'
18 (commented on others PR)
Long method. You may want to change filterOneWeekTuitionSession to 3DaysTuitionSession and use the former implementation if that shortens the method.
19 (commented on others PR)
yeah im suggesting you overload the method to allow localDate input
20 (commented on others PR)
i.e.
rename onSessionDate(SessionDate sd) method to buildSessionOnDate(SessionDate sd)
make a
public Session buildSessionOnDate(LocalDate date) {
SessionDate sessionDate = new SessionDate ......
return buildSessionOnDate(sessionDate);
}
21 (commented on others PR)
but i guess not exactly necessary
22 (commented on others PR)
calling recurringInterval.getValue and all the check logic is a bit breaking some rule/principle i believe. student shouldnt have to deal with it. maybe bring component of this method to some new method in RecurringSession.
23 (commented on others PR)
i guess like
list.set(this.shortenToBefore(date), index)
list.add(this.shortenToAfter(date)) --> can utilise firstSessionAfter from within
24 (commented on others PR)
with may be better than change since immutable. but this is debatable
25 (commented on others PR)
try
daysBetween = 8,
interval1 = 3 and interval2 =7 and vice versa.
They should both be true, but this gives false in former case
26 (commented on others PR)
gcd(interval1, interval2) | daysBetween >--> there will be an overlap at some point
this is because ( i think) there exists some overlap if n only if
daysBetween + (interval1 x n) = interval2 x m
The diophantine equation ax+by=c, has solutions if and only if gcd(a,b)|c.
gcd(interva1, interval2) | daysBetween, means daysBetween is divisible by gcd(i1, i2)
27 (commented on others PR)
So i think this should make sense :
public boolean isOverlapping(RecurringSession otherSession) {
if (startAfter(otherSession.getSessionDate())) {
return otherSession.isOverlapping(this);
}
int daysBetween = getSessionDate.daysTo(otherSession.getSessionDate);
if (daysBetween % gcd(interval1, interval2) !=0) {
return false;
}
... followed by time check
28 (commented on others PR)
EH We actually can get the smallest postive n or m i think
29 (commented on others PR)
why's there a otherSessionEndDate for single-session? Doesn't a class start and end on the same date
30 (commented on others PR)
daysFromThisSessionStart
daysFromOtherSessionStart
keep consistent to param name possibly
31 (commented on others PR)
BUG! must be && we keep doing while both conditions are true.
if any one condition false, we get out of while loop
32 (commented on others PR)
Nonsense i said
33 (commented on others PR)
we put this outside the method, at the top of the class?
to use in every other method for test
34 (commented on others PR)
Yea I think like failure cases and all that
35 (commented on others PR)
Improves coverage to do that right i hope
36 (commented on others PR)
oh right! so i guess it has to stay as it is rn
37 (commented on others PR)
Should receive/would receive.
"Would have received" may wrongly suggest to reader that only past sessions would be included in fee calculation
38 (commented on others PR)
my finance better
39 (commented on others PR)
an error
40 (commented on others PR)
i think similar accross
41 (commented on others PR)
Ah yes i agree probably highlight
42 (commented on others PR)
comment should explain what sessionIndex is
43 (commented on others PR)
agree with enhao. possibly can abstract out this else clause
44 (commented on others PR)
add test for this method
45 (commented on others PR)
thanks for making all single recurring change to session too!
46 (commented on others PR)
can use existing methods like buildSessionOn() instead of new Session ....
47 (commented on own PR)
ooh sorry yeah let me just undo the change i simply refactored
48 (commented on own PR)
omg yes sry thanks for pointing out
49 (commented on own PR)
No it's not intended because I didn't (and kind of currently dont) know what problems this may cause.
Not intended as in never questioned it
What problems might this cause/ what recommended way might there be?
Was thinking since its extending Session, the parent's method to access Sesssion contents are inherited
50 (commented on own PR)
no idea myself leemme delete
51 (commented on own PR)
right!
52 (commented on own PR)
yep!
53 (commented on own PR)
Yep thanks. actualy given your comments I think there was also no need for this to be a static method.
Will replace with a .equalTime(SessionDate sessionDate)
54 (commented on own PR)
yep will do this
55 (commented on own PR)
Thanks, did in the coming commit
56 (commented on own PR)
Right ive got to make a RecurringSession json. to save things into if Session instanceOf RecurringSession.
57 (commented on own PR)
Just done so, I think should be working
58 (commented on own PR)
Yeah ive pulled upstream. ChoonWei's method doesn't check for Recurring session so there arent clashes.
Yep will do as a seperate issue
59 (commented on own PR)
Ok found it will fix
60 (commented on own PR)
actually no idea
61 (commented on own PR)
Issue is solved by adding type information in json, as necessary for deserialisation polymorphism.
62 (commented on own PR)
Thanks have added this as a new separate issue
63 (commented on own PR)
ok, in coming commit!
64 (commented on own PR)
no it wasn't wrong. outputs correct either ways because isConsistentDatesAndInterval does the calculation as well.
That ensures days between (date 1, date 2) is >=0
65 (commented on own PR)
but i guess its simpler (less computation) if use startSafter(sessionDate) and more consistent
66 (commented on own PR)
ok will wait for that to merge first then
67 (commented on own PR)
yeah the only difference is if it checks the date vs both date and time
68 (commented on own PR)
Right totally forgot. Will do so in coming commit
69 (commented on own PR)
No man trying to solve merge conflicts w copy and paste led to a disaster
70 (commented on own PR)
Will do so in next commit. when plantUML comes alive
71 (commented on own PR)
I'll just leave it in there n not use the png
72 (commented on own PR)
i edited their architecture seqeunce diagram and overriden it so its deleted
73 (commented on own PR)
nvm not gonna do so now
74 (commented on own PR)
yes i have
75 (commented on own PR)
can use it one day in the components perhaps
76 (commented on own PR)
i think i actually screwed up with my master branch at some point, so will just redo/copy paste over the relevant changes when I manage to pull from our shared master.
Actually you've made all these changes alr right.
Like the images you show under Logic component. will just delete these changes here
77 (commented on own PR)
Good catch, I tried on the master branch this seems to be a problem from there
78 (other comment)
I don't mean readme. i mean't the aboutUs page
79 (other comment)
- There seem to be missing the switch case for
delete_session
inAddressBookParser.java
, which makes the command inexecutable.
- I added the switch case myself locally and tried to execute the command when the student has no sessions, seems to throw an exception,
IndexOutOfBoundsException
, which was out of the application. Maybe you could test it and let me know if you face the same issue too?
Other than the above, the rest looks good! thanks!
I think I've fixed it.
Still have issues with building TypicalStudent with StudentBuilder.addSession(). Which is why testCases are commented out.But this at the moment is another matter.
80 (other comment)
Would it be better to integrate the Session class diagram in the Model component? I think it would add more value there instead of being a standalone. (We can show the association with the Student class there)
Also, would it be better to make each feature distinct instead of combining it into "Session" feature to preserve the current formatting?
You are probably right about the Model component; it would be good to be together with Student. I think i'd take SessionClassDiagram out of the DG for now.
About the feature:
I did this because creation then a deletion does not each sound like a different feature (if feature is the word used) rather only difference in the command, which may not even need 2 seq diagrams like there already is, i felt. we shld discuss
81 (other comment)
@yungweezy not an issue cos The newly trying to add session should occurs on fridays, it indeed is overlapping. But we can edit ug to specify it’s any overlap, across students as well
anyways
I think if we change implementation to the specific overlap version (in pr from me) can error message when the overlap will first be
82 (other comment)
I don’t think should cap the tuition fee
83 (other comment)
Will ask hi how he did it
84 (other comment)
LGTM. Although I think u bundled up the entire session command to be a section itself. Student we might not be able to do that, given that we have abit too much command for the student feature already.
Ive reverted to all that was originally in junwei's so unbundled it
@zatkiller
(44 comments)1 (commented on others PR)
Remember to change the prefix to what we discussed
addTask title -d description
2 (commented on others PR)
Just want to check if there is a need for this class or can we store the description as a String within the Task?
3 (commented on others PR)
Same question as Description Class. Should we store it as a String instead?
4 (commented on others PR)
Are we supposed to update the person list?
5 (commented on others PR)
Also might need to change the comment here, other than this small issue can merge
6 (commented on others PR)
Should this variable should be renamed to MESSAGE_INVALID_PERSON_DISPLAYED_NAME?
7 (commented on others PR)
Lets standardise the naming to be XXXMemberCommand to make fixing easier
8 (commented on others PR)
Think we can rename this file to DeleteMemberCommandTest to standardise the file naming
9 (commented on others PR)
I think we should make a Util file for the names and import them instead of hardcoding the value here. This makes it easier for maintaining. For example, the TypicalPersons java class in the testutil directory is an example of what I mean
10 (commented on others PR)
Same issue about hardcoding values
11 (commented on others PR)
I thought names should not have prefix?
12 (commented on others PR)
Should we follow the format of the actual phone number -p 95652233 (with spacing)
13 (commented on others PR)
I think we should follow our prefix convention using -. For e.g. -a
14 (commented on others PR)
I think this should be changed to invalid name, try including some alphabets mixed with numbers
15 (commented on others PR)
I think you forgot to change this
16 (commented on others PR)
I think you might be missing the task status for the Card
17 (commented on others PR)
I think here we can return the created LocalDate?
18 (commented on others PR)
Typo?
19 (commented on others PR)
Nice refactoring!
20 (commented on others PR)
Is this a variable name? If its not should we standard the comments of hey matez to Hey Matez? to HEY MATEz?
21 (commented on others PR)
Same thing here, should we standardize according to our app name?
22 (commented on others PR)
Same question here
23 (commented on others PR)
Same question here
24 (commented on others PR)
Same question here
25 (commented on others PR)
I think you missed this folder. But can merge after changing
26 (commented on others PR)
typo lol
27 (commented on others PR)
Here too
28 (commented on others PR)
should be hey matez not address book
29 (commented on others PR)
Shouldn't this be HeyMatez?
30 (commented on others PR)
Should be UndoTaskCommandParser
31 (commented on others PR)
Should be LogicManager
32 (commented on others PR)
I don't think Model is needed here if you import it
33 (commented on others PR)
Same here
34 (commented on others PR)
Same here for Messages
35 (commented on others PR)
Same here
36 (commented on others PR)
If we need to we should import the Predicate directly
37 (commented on others PR)
Same here, we should import Messages.MESSAGE_INVALID_COMMAND_FORMAT
38 (commented on others PR)
Same here
39 (commented on others PR)
Same here
40 (commented on others PR)
Same for this file
41 (commented on others PR)
Should be Find instead of finds? Same for displays?
42 (commented on others PR)
I think @code refers to the class? Not sure about this
43 (commented on others PR)
Typo?
44 (commented on others PR)
did we limit it to just alphabets?
45 (other comment)
Close PR due to extra commits
46 (other comment)
PR Merged. Modifed and Reused Person class. PR #65
47 (other comment)
Just have 1 small thing to check on, which is the updating of updatedPersonList when we are updating tasks. The rest LGTM
48 (other comment)
Add task status to edit of task
Updated UG
Add space behind prefixes to enforce spacing
49 (other comment)
Update UG and Javadocs
Update jar filename and log filename
50 (other comment)
No longer implementing feature
51 (other comment)
Renamed addressbook.json to heymatez.json
52 (other comment)
Not implementing
53 (other comment)
Not implementing
54 (other comment)
Not implementing
55 (other comment)
Tag Class converted to Assignee Class
56 (other comment)
Settled by Tasha
57 (other comment)
Not for merging. For Task Grading Only
58 (other comment)
Not for merging. For Task Grading Only
59 (other comment)
Not for merging. For Task Grading Only
60 (other comment)
Not for merging. For Task Grading Only
61 (other comment)
Not for merging. For Task Grading Only
62 (other comment)
Not for merging. For Task Grading Only
63 (other comment)
Not for merging. For Task Grading Only
64 (other comment)
Not for merging. For Task Grading Only
65 (other comment)
Duplicate with # 206
66 (other comment)
Not an issue
67 (other comment)
Missing the in front of task index
68 (other comment)
Will only put for some
69 (other comment)
State in UG for allowance of number (allowing of nicknames). Phone number bug overlap with # 203
70 (other comment)
To state in UG that certain command such as edit / delete only applies to current displayed list
71 (other comment)
Related to # 225
72 (other comment)
State naming criteria in UG
73 (other comment)
Listed in our UG "For features which use the INDEX field, the INDEX you specify must be a valid number displayed on the list of tasks.". Can consider ignoring @rachelljt
74 (other comment)
Update UG to make it clear. Delete only on filteredList to prevent accidental delete without user realizing
75 (other comment)
Update UG to make it clear. Delete only on filteredList to prevent accidental delete without user realizing
76 (other comment)
Fixed after changing prefixes
77 (other comment)
Change result message to no tasks found. Only findTasksFor on full name match
78 (other comment)
Check and update Introduction
Check and update Feature List
Check and update Quick Start
Check and update Features command Format
Check and update Feature Instructions
Check and update Data Storage
Check and update FAQ
Check and update Command Summary
Include screenshots
79 (other comment)
Check and update diagrams for Architecture Design
Check and update UML Diagrams (There is some update to original AB3 UML)
Check and Updating of User Stories
Check and Updating of Use Cases
Check and Updating of NFRs
Check and Updating of Glossary
Check and including Code Snippets (If required)
@garyljj
(42 comments)1 (commented on others PR)
should be [-t TAG...]
2 (commented on others PR)
same here, should be [-t TAG...]
and im not sure whats that special char. but if its intentional then no problem!
3 (commented on others PR)
Cancel, not a typo
4 (commented on others PR)
For the ... , are multiple tags searches allowed? Doesnt seem to be allowed atm
5 (commented on others PR)
rename to sortPersonList since not the filtered list being sorted
6 (commented on others PR)
suggestion:
This one our userguide currently is "tags" too but would "tag" be better?
7 (commented on others PR)
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Lists all tags and the count of persons tagged in the Hippocampus. "
8 (commented on others PR)
Prefer like that haha but this one up to you
model.getAddressBook()
.getPersonList()
.forEach(p -> p.getTags()
.forEach(t -> tags.compute(t, (k, v) -> v == null ? 1 : v + 1)));
9 (commented on others PR)
boolean noNameAndTag = noName && noTag;
10 (commented on others PR)
want to use .contains for search tag too?
11 (commented on others PR)
just to standardise with other parser classes if you want haha
ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_FIND);
Optional<String> keyword = argMultimap.getValue(PREFIX_FIND);
if (keyword.isEmpty() && argMultimap.getPreamble().isEmpty()) {
return new TagsCommand(tag -> true);
}
12 (commented on others PR)
Add new line
+ "person tagged in Hippocampus.\n"
13 (commented on others PR)
Swap error message
} catch (DateTimeException err) { // date in wrong format
throw new IllegalValueException((Birthday.MESSAGE_CONSTRAINTS));
} catch (IllegalArgumentException err) { // birthday year exceeds current year
throw new IllegalValueException(Birthday.MESSAGE_YEAR_CONSTRAINTS);
14 (commented on others PR)
IllegalValueException was correct haha
IllegalValueException is the one caught by storage. Or else an invalid date in the save file will not be handled and program will terminate
throw new IllegalValueException(Birthday.MESSAGE_CONSTRAINTS);
15 (commented on others PR)
I think she was following the wording of constraint for address field. Do yall think it would be good to change that too? or we can leave both too
16 (commented on others PR)
I believe the ==
check here was intentional cos it is checking the exact object (the static string).
Otherwise LGTM
17 (commented on others PR)
For marking event as done (in the event branch)
I simply used list.contains()
since that uses .equals()
to check.
May be slightly less efficient time complexity wise, but could be more readable. Which do yall prefer?
If prefer this then LGTM, i can update the other
private DeleteContactCommand createDeleteContactCommand(String args) throws ParseException {
String[] strIndexes = args.split("\\s+");
List<Index> indexes = new ArrayList<>();
for (String s : strIndexes) {
Index index = ParserUtil.parseIndex(s);
if (!indexes.contains(index)) {
indexes.add(index);
}
}
return new DeleteContactCommand(indexes);
18 (commented on others PR)
Here can just leave it as DATE
.
Since to the user, event date is basically a date (unlike birthday where they are extra restriction).
Or if decide to keep, put it as one word EVENTDATE
, or else it seems like 2 arguments
+ "[" + PREFIX_DATE + " DATE] "
19 (commented on others PR)
Might have missed out this? Not sure if it affects other stuff, but after i changed it looked better haha
.list-view {
-fx-background-insets: 0;
-fx-padding: 0;
-fx-background-color: derive(rgb(243, 229, 231), -10%);
-fx-border-color: white;
-fx-border-width: 1;
}
20 (commented on others PR)
Alternative to probably make it simpler and slightly more efficient
private void checkIfHasTags(Person personToCheck) {
Set<Tag> personTags = personToCheck.getTags();
for (Tag targetTag : targetTags) {
if (personTags.contains(targetTag)) {
editedPersons.add(personToCheck);
return;
}
}
}
21 (commented on others PR)
Toggles between Dark and Pastel theme
22 (commented on others PR)
* Constructs a {@code GuiSettings} with the default height, width, position, and theme.
23 (commented on others PR)
* Constructs a {@code GuiSettings} with the specified height, width, position, and theme
24 (commented on others PR)
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Toggles PartyPlanet's theme between Dark and Pastel.";
25 (commented on others PR)
commandResult = new CommandResult(String.format(MESSAGE_SUCCESS, "Pastel"), false, Theme.PASTEL);
26 (commented on others PR)
Optional: can be private?
private void setThemePastel() {
27 (commented on others PR)
Optional: can be private?
private void setThemeDark() {
28 (commented on others PR)
Missed out in initial suggestions
* Toggles the theme of PartyPlanet between Dark and Pastel.
29 (commented on others PR)
This makes sort_upcoming unable to work with asc/desc.
Isit intented? If so then just remember to document
Same for list
30 (commented on others PR)
Make sense! just making sure it isnt an oversight
31 (commented on others PR)
This makes sort_upcoming unable to work with asc/desc.
Isit intented? If so then just remember to document
Same for list
32 (commented on others PR)
Oops comment was meant for PR 180, shifted over
33 (commented on others PR)
Suggestion to use setOnKeyReleased
then no need use a generic event handler.
Also to combine duplicated event handlers
commandTextField.setOnKeyReleased(e -> handleUndoRedo(e));
history = new InputHistory();
}
/**
* Handles key combination releases.
* Exceutes undo command if CTRL + Z shortcut is used
* Exceutes redo command if CTRL + SHIFT + Z or CTRL + R shortcut is used
*/
private void handleUndoRedo(KeyEvent event) {
if (undo.match(event)) {
try {
commandExecutor.execute("undo");
} catch (CommandException | ParseException e) {
setStyleToIndicateCommandFailure();
}
} else if (redo1.match(event) || redo2.match(event)) {
try {
commandExecutor.execute("redo");
} catch (CommandException | ParseException e) {
setStyleToIndicateCommandFailure();
}
}
}
34 (commented on others PR)
if (orderType.isEmpty() || comparator == SORT_EVENTDATE_UPCOMING) {
if (!stringSort.isEmpty() && comparator != SORT_EVENTDATE_UPCOMING) {
stringSort += "in ascending order. ";
}
return comparator; // default
35 (commented on others PR)
if (orderType.isEmpty() || comparator == SORT_BIRTHDAY_UPCOMING) {
if (!stringSort.isEmpty() && comparator != SORT_BIRTHDAY_UPCOMING) {
stringSort += "in ascending order. ";
}
return comparator; // default
36 (commented on others PR)
* To retrieve existing values, use the autocompletion workflow specified [below](#autocomplete-tab).
37 (commented on others PR)
stringFind += "\n\u2022 Requires exact event remark: " + String.join(", ", allRemarks);
38 (commented on others PR)
stringFind += "\n\u2022 Requires partial event remark: " + String.join(", ", allRemarks);
39 (commented on others PR)
Note that _
is part of \w
and thus allowed too
40 (commented on others PR)
The static block here seems unnecessary. I get that is following the format of the lines above. Perhaps can refactor that too
public static final EEditCommand.EditEventDescriptor DESC_CNY = new EditEventDescriptorBuilder()
.withName(VALID_NAME_CNY)
.withDate(VALID_DATE_CNY)
.withRemark(VALID_REMARK_CNY)
.build();
public static final EEditCommand.EditEventDescriptor DESC_EASTER = new EditEventDescriptorBuilder()
.withName(VALID_NAME_EASTER)
.withDate(VALID_DATE_EASTER)
.withRemark(VALID_REMARK_EASTER)
.build();
41 (commented on others PR)
To avoid "magic numbers"
expectedModel.setEvent(model.getFilteredEventList().get(INDEX_FIRST_EVENT.getZeroBased()), editedEvent);
42 (commented on others PR)
Same as above
expectedModel.setEvent(model.getFilteredEventList().get(INDEX_FIRST_EVENT.getZeroBased()), editedEvent);
43 (commented on own PR)
Maybe is just the phrasing confusing. So in the latest commit I phrased the main info as
If provided with tags
Delete every person who is tagged with the specified tag.
If the person is tagged with another tag, only the specified tag will be removed. The contact will not be deleted.
Then for these examples, I left it as
delete -t colleague -t cs2103
deletes contacts with tag "colleague" and contacts with tag "cs2103"Cos the happy path is to delete the contact. Then ONLY IF it is tagged with another tag then the contact is not deleted.
44 (commented on own PR)
Did not change, discussion is below
45 (commented on own PR)
Edited but phrased a little differently, check latest commit
46 (commented on own PR)
public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted the following persons: %1$s";
47 (commented on own PR)
Yup makes sense!
Edited, info in comment below
48 (commented on own PR)
Could not find a simple way to make tags the outer loop for containAllTags()
.
So kept persons as the outer loop for both All and Any, for readability.
However, made use of TagsContainsExactTagPredicate
as suggested for better abstraction (demeter law)
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)
Also update userguide to include this command
56 (other comment)
Yup I considered this but thought it was too inefficient to scan through all whole list to see if all tags specified exists.
Perhaps I can add some kind of static set in Tags to keep track of all tags that currently exists
57 (other comment)
I implemented a similar feature in my IP so I can probably PR later and see if yall like it
58 (other comment)
Actually, since year not really important for a birthday, maybe we can store it in a MonthDay object instead. Then no need request year input at all.
59 (other comment)
Perhaps can also change display of bday in a form of "11 Dec 99" instead of the current 1999-12-11.
60 (other comment)
Alternatively, idea to put the logo as a background. Altho tbh I dont have much idea how to do it haha
61 (other comment)
Added a min height so for aesthetic purposes
62 (other comment)
Is partial search not going to be the default?
63 (other comment)
Yup that might be better. Since we implemented partial in the first place cos it would be more commonly used.
Even if decide to keep it as exact by default, i think would be good to minimally make it non case-sensitive.
64 (other comment)
I think we agreed that memory not really a concern atm since undo history doesnt carry over across sessions.
But i think no harm adding later on!
65 (other comment)
Yea I dont mind. I feel like even ~10-15 undo is probably more than enough.
But i think wait til event branch is integrated with the history too
66 (other comment)
Throwing error is one way, and the ~easy way out~ other way would be to simply document this behavior feature (i.e. only the last sort prefix given is used), just like for the
add
command. Which do you prefer?
"If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specify -p 12341234 -p 56785678, only -p 56785678 will be taken"
Yup our UG already states this case. So alls good!
67 (other comment)
Implemented --exact
and --any
as suggested above
delete -t a -t b
deletes any contact that has tag a
or b
delete --any -t a -t b
same as no flag
delete --exact -t a -t b
only delete contact with BOTH tag a
and b
Currently contains bug stated in #162 . Will follow the solution of list
68 (other comment)
closed as branched out from wrong branch
69 (other comment)
Split checkToBeDeleted()
into
containsExactTags()
when --exact
flag used
containsAnyTags()
otherwise.
Methods above no longer modifiesdeletedPersons
list. Addition to deletePersons
carried out in execute()
70 (other comment)
not a bug
71 (other comment)
Final functionality as follows
Before: delete -t TAG [-t TAG]
was "delete all contact with specified tag, unless they have other tags"
Now: delete -t TAG [-t TAG]
delete contacts (in filtered list) that has the provided tag
delete -t a -t b
deletes anyone who has both tag a
AND tag b
, and display persons deleted
If no one deleted, return message These tags do not exist in persons listed. No person removed.
Flag --any
If this flag is specified,
delete --any -t a -t b
deletes anyone who has EITHER tag a
OR tag b
, and display persons deleted
If no one deleted, return message These combination of tags do not exist in persons listed. No person removed.
72 (other comment)
Tested, works well. Note the cosmetic issue:
Latest commit throws error for this issue, updated PR message above
73 (other comment)
Perhaps we can do this one-shot during our upcoming meeting.
sounds good!
74 (other comment)
Optional for @pyuxiang Can update DATE
and BIRTHDAY
with all valid formats (since we allow many different ones)
75 (other comment)
Rephrase message slighty
"All requirements above met." -> "Results meet all requirements above."
"At least one requirements above met" -> "Results meet at least one requirements above."
76 (other comment)
To also check output of
tags
list, whenlist
command is invoked.
@pyuxiang , for list
tags will not be case-sensitive right?
Only enforcing for delete -t
and edit --remove
to avoid unintended deletion.
However, for list
still case-insensitive for convenience of searches
77 (other comment)
Duplicate of #240
78 (other comment)
Rephrased error message as suggested by @pyuxiang
79 (other comment)
The same behavior persists for
add
andeadd
as well, are we fixing those?
@pyuxiang Unfortunately for those commands i think is inevitable. Cos wouldnt make sense to not show the contact that u just added.
unless, one way could be to retrieve the predicate and .or()
the added user?
Maybe create an issue if we decide that this is a bug
80 (other comment)
Im not really sure for the full range of accepted domain types. But some suggestions.
For smtp.google.com.
, is ending with a .
valid? if not can domain regex to "[\\w-]+(\\.[\\w-]+)*$"
Enforces that .
must be surrounded with one or more \w
a.b.c
allowed
a.b.c.
, .a.b.c
rejected
For false positive -
. isit cos -
need to be surrounded by letters, if so can "((\\w+(-\\w+)*)+\\.?)+$"
This enforces that -
need be surrounded by \w
. basically using same idea as above
a-b.com
allowed
a-.com
, -a.com
not allowed
If combine both condition above, "(\\w+(-\\w+)*)+(\\.(\\w+(-\\w+)*)+)*$"
81 (other comment)
The new message is clearer, though do we want to standardise with the other invalid index message? eg. 0 and 20 are both "invalid indexes" but show different error messages. But both works lah
Technically not same case leh, cos 0 is not valid index (same case with -1
, abc
etc) but 20 is a valid index that is not in the addressbook.
Thats why 0 causes "index invalid" but 20 causes "person index provided is invalid"
But idk maybe can somehow make clearer haha
82 (other comment)
By specification if I recall correctly, just cannot start with hyphen. Also not too sure what the email address domain part includes a hostname (for the mail server) - if it's a pure domain name, then hyphens are not even allowed. Also dunno if a single period is allowed.
Essentially just playing very very safe here in case someone want to find fault with our validation. If we want, can add a
[^\W_]
right after the@
to enforce alphanumerics.
Makes sense. i think either "(\\w[\\w-]*\\.?)+$"
or "([^\\W_][\\w-]*\\.?)+$"
works. whichever u feel more readable. i didnt test tho haha
Edit: oh wait got diff. first one allow u to start label with _
, second one doesnt. Use whichever is more appropriate
83 (other comment)
For this, i think the easiest fix is to just update the UG that a max value for INDEX
is 2147483647
@kumsssss
(42 comments)1 (commented on others PR)
could change contacts to household items
2 (commented on others PR)
I also think it should be changed back to VALID_NAME_AMY for now just for consistency.
3 (commented on others PR)
Since this test is a returnsFalse, maybe you shouldn't include an assertTrue inside. Perhaps you could write that in a separate method?
4 (commented on others PR)
Maybe warning can be in all caps?
5 (commented on others PR)
U could try using assert throw like in the test right below this. U could also specify what the Exception you are throwing actually is.
6 (commented on others PR)
Could add some tests since you removed these 😃
7 (commented on others PR)
I think u can use the above two lines to print the number of items listed. One has the s in items while the other doesn't to differentiate between single and multiple items being returned.
8 (commented on others PR)
maybe you could say within the next 7 days instead of in 7 days.
9 (commented on others PR)
similar to the previous one, maybe you could say expiring within the next 2 weeks
10 (commented on others PR)
u could try using equalsIgnoreCase() like I did for sortCommand
11 (commented on others PR)
I feel it should be StoreMando since we referring to our app.
12 (commented on others PR)
The table still displays fine right??
13 (commented on others PR)
Should these be like UniqueItemList instead of UniquePersonList? Maybe can change this in the future.
14 (commented on others PR)
I think we can just delete this file also right? If not, can just remove the Level 3
15 (commented on others PR)
What does this look like?
16 (commented on others PR)
I think can change this back.
17 (commented on others PR)
Can just delete the test. Don't need to comment it out
18 (commented on others PR)
"User wants to search" or "User searches" maybe? Instead of saying expiring soon, can say expiring within the next 7 days or next 2 weeks?
19 (commented on others PR)
should be 3a right?
20 (commented on others PR)
same for this
21 (commented on others PR)
it should be 1b for this i think
22 (commented on others PR)
can change this back to location? thx!
23 (commented on others PR)
if user keys in command "clear", will he get the message "All items in the specified location (if any) are cleared"? Personally, i feel like it should say "Inventory has been cleared".
24 (commented on others PR)
i think this won't work if item location is like "Kums room" and the command is "clear Kums room". Maybe you can try it out and see if it works.
25 (commented on others PR)
the item location has a lot of white spaces in between Kums and room.
26 (commented on others PR)
Should a test be added for this?
27 (commented on others PR)
can add same expiry date also just to make it clearer.
28 (commented on others PR)
Maybe you could remove it if there's nothing to include
29 (commented on others PR)
I think keep it generic as list
feature should be fine.
30 (commented on others PR)
Since you have the sequence diagram here already, you shouldn't have it on top as well like Jay mentioned.
31 (commented on others PR)
list got no index right? i think should say validity of the user input.
32 (commented on others PR)
same as before i dont think its validity of index.
33 (commented on others PR)
Perhaps it could be phrased as "If the device is connected to the Internet, StoreMando will automatically open the User Guide in a new browser."
34 (commented on others PR)
I think we can suggest to double click then if it doesn't work, user can alternatively open their terminal in the directory where the jar file is and enter the command java >jar file name>-jar
35 (commented on others PR)
I think you can remove this header. There's another one at line 1001
36 (commented on others PR)
ohh okok then follow the recommendation
37 (commented on others PR)
i think itll clearer to say for example, "at least 7 days" instead of "for 7 days".
38 (commented on others PR)
for this I feel you should use within instead of in
39 (commented on others PR)
Maybe could use chronological order instead.
40 (commented on others PR)
Maybe you could consider just having this variable declared in the individual subclasses of the SortCommand as they're each used by only one of the subclasses.
41 (commented on others PR)
I feel like this overlaps with line 656. Maybe can consider removing it?
42 (commented on others PR)
I can't comment above but perhaps you should do this for add and edit too for the quantity limit if you are doing it for reminder.
43 (commented on own PR)
I felt like the VALIDATION_REGEX does not help to check if the date given by the user is a valid date. So, I used LocalDate instead to check if the date is valid, which can be seen in the subsequent lines. Hope this clears things.
44 (commented on own PR)
I will add it back. expiryDate will not be null anymore.
45 (commented on own PR)
I chose to do it this way as I cannot guarantee Long.parseLong(test) will not throw a NumberFormatException. So, I made sure test is made of digits before I check if it is a non-zero value.
46 (commented on own PR)
Ok. Changed as stated.
47 (commented on own PR)
alright!
48 (commented on own PR)
ohh ok i get it. I'll change it. Thanks!
49 (commented on own PR)
Oh yea I'll remove it! Thanks!
50 (commented on own PR)
alright will change it!
51 (commented on own PR)
oh yea my bad
52 (commented on own PR)
sure will do!
53 (commented on own PR)
ok will change it
54 (commented on own PR)
if I'm not wrong, it only takes in days and weeks as TIME_UNIT. I just went to check the reminderCommandParser. I think we can leave it as it is now and change later if we make changes to the feature.
55 (commented on own PR)
alright will do so!
56 (commented on own PR)
ok!
57 (commented on own PR)
yes it will still work
58 (commented on own PR)
alright will do so!
59 (commented on own PR)
ok will make the changes
60 (commented on own PR)
ok changed it!
61 (commented on own PR)
they will all appear in the same line so I don't think it matters
62 (commented on own PR)
yes i changed it. thx!
63 (commented on own PR)
ok! I've made the changes
@JonahhGohh
(42 comments)1 (commented on others PR)
Slight change in phrasing:
* The user should take no longer than 1 hour to learn the different functionalities of TutorBuddy from the user guide.
2 (commented on others PR)
Maybe can change it to like that to be more specific?
* A user with above-average typing speed for regular English text (i.e. not code, not system admin commands) should be able to use most of the functionality in TutorBuddy faster using commands than using the mouse.
3 (commented on others PR)
We do not actually need this file. It is from the tutorial for tP from week 6. I don't even know why this is here. But I guess the change is harmless.
4 (commented on others PR)
Actually, I was thinking more on the lines of public Tuition(Student student)
.
I think passing all parameters of student will make the abstraction level of Tuition class 1 level too low.
5 (commented on others PR)
How about
'Student student = new Student(name, phone, email, address, studyLevel, guardianPhone, relationship);
Tuition tuition = new Tuition(student);'
6 (commented on others PR)
Should we name this DeleteStudentTuitionCommand for more consistency?
Similar to the AddStudentTuitionCommand, we are operating on a tuition object here and not a student object.
7 (commented on others PR)
Instead of returning a new Tuition object when we call edit_student, what about returning a student and replacing the student in the Tuition object?
Because the command name is EditStudentCommand which does not really make sense to return a new Tuition object.
8 (commented on others PR)
I was thinking of tuition.getStudent().getName()
but I guess this works well. This is just a design consideration but you can check out "Law of Demeter".
9 (commented on others PR)
TuitionTest replaces StudentTest. What tests should we have here now?
10 (commented on others PR)
What is this hashCode() function for?
11 (commented on others PR)
I think the javadoc comment here should change?
12 (commented on others PR)
Woops, I was using my iPad to review just now, and I might not have seen the code accurately. No issues!
13 (commented on others PR)
Oh ok, let's leave it then!
14 (commented on others PR)
Do you mind explaining the listener part and what the change.next() does? I a bit catch no ball 😅 .
Also, which is the part that calls the view to update the session list every time a session is added?
15 (commented on others PR)
Good suggestion! The isValidSessionDate() should assertFalse correctly to this test case.
16 (commented on others PR)
Since we have the isValidSessionDate() check now, we do not need this try and catch block anymore since it is a guarantee that we will receive a valid dateValue and timeValue in our SessionDate constructor.
There are a few changes to other files regarding this issue as well. I will do the changes once this PR is merged.
17 (commented on others PR)
Is this method needed?
Can we use the showStudentAtIndex method for our session command test cases or do we need to find the exact session in the session list?
18 (commented on others PR)
Ok! 😄
19 (commented on others PR)
Should this be AddressBookParser
instead?
20 (commented on others PR)
Hmm, since you mentioned that the AddStudentCommandParser
creates both a Student
and a AddStudentCommand
, would it be better to also mention that the AddStudentCommand
executes with the Student
object?
21 (commented on others PR)
Should be "Clears all entries in the program: clear
"
22 (commented on others PR)
Is the "Tip:" meant to be bolded?
or is this the intended outcome:
23 (commented on others PR)
ohhh ok nice
24 (commented on others PR)
Sounds good. I'll change it on my end.
25 (commented on others PR)
Here the command should be add_recurring_session?
26 (commented on others PR)
Maybe can add a javadoc comment for a description of the CalendarCard class?
27 (commented on others PR)
Same as above, missing javadoc comments
28 (commented on others PR)
Did you forget to remove this? 😄
29 (commented on others PR)
I think can do what Samuel did and abstract this out to an addListener() method.
I think it makes it look neater. I will probably do this for my components as well.
30 (commented on others PR)
Is the removal of t/TIME gonna be done by 1.3 or is it a 1.4 thing?
31 (commented on others PR)
not too sure if this condition is needed since this is already checked in hasSession()
method.
Same for the other boolean condition below.
32 (commented on others PR)
maybe can explain that in the javadoc comment?
33 (commented on others PR)
For line 127, should we put this between a >div markdown="block" class="alert alert-info">:information_source:>/div>
?
34 (commented on others PR)
What do you think of rephrasing it to "Calculates and displays" ?
Feels to me that "retrieves" does not really explain it well enough here?
35 (commented on others PR)
On line 249,
"Filters the student and session list to only include student(s), and their respective session(s) whose student name contains any of the given keywords."
36 (commented on others PR)
Is this part an err? Doesn't seem to describe the GetMonthlyFeeCommand.
37 (commented on others PR)
What do you think about combining 2 and 3. I feel like they are the same since check whether the user exists is part of the input validation?
If so, then 2a and 3a below can also be combined to just
2a. TutorBuddy detects and error in the input.
2a1. TutorBuddy displays an error message to the user.
Use case ends.
38 (commented on others PR)
How about:
39 (commented on others PR)
Would adding "and a link to our user guide" be good here? Or is it too much information?
40 (commented on others PR)
If you agree with this then maybe can standardise to other use cases as well also.
41 (commented on others PR)
How about changing "see how well I am doing financially" to "manage my financials better"?
42 (commented on others PR)
For line 407, How about changing it to:
As a potential user, I want to see the app populated with sample data on the first run so that I can try using the features easily
43 (commented on own PR)
Thanks for the catch. I think I might have accidentally refactored all names without noticing. Please see the updated commit.
44 (commented on own PR)
Ok, I will add 23:002 and 23:592. So to double confirm, 23:002 and 23:592 should throw a SessionException, right?
45 (commented on own PR)
Yup, thanks for spotting that, it should be k.
@nowknowing it's the prefix for duration (can be seen in the CliSyntax class in the Parser package).
I chose "/k" because "/l" was already used for STUDY_LEVEL in add_student.
If y'all have a more intuitive prefix letter, do suggest!
46 (commented on own PR)
I use the sessionDate.equals() here instead of session.equals() because I think you created an equals() for Session class already right? @samleewy
47 (commented on own PR)
I guess i could improve it by bringing the targetSessioDate in the outer loop, since there isn't a need to declare the targetSessionDate in every iteration.
48 (commented on own PR)
Ok, thanks for the suggestion. I will add some comments to the test cases to make it clearer. 👍
49 (commented on own PR)
HAHA omg 🥴
50 (commented on own PR)
Thanks for spotting, will make a change to this.
51 (commented on own PR)
What do you think of making it like this?
Returns true if session {@code Session} exists in any of the students in the unique student list
I think this takes away the ambiguity of referring to either the session variable or the Session class.
52 (commented on own PR)
Good point! Can you give an example of how you would phrase it? I'm not sure how best to change it.
53 (commented on own PR)
Yup! I agree with what you said, idm changing to what you suggested instead. Personally, I think code clarity is more important than uniformity in this case.
54 (commented on own PR)
Thanks, good catch!
55 (commented on own PR)
Done!
56 (commented on own PR)
Yup a lot of inconsistencies now. I was thinking of just quickly merging all the UG PRs then I will go through again to standardize.
57 (commented on own PR)
Good suggestion, I will use that! 😄
58 (commented on own PR)
I think we can just keep 'user' for now, and standardize it later once everyone merge? Because I think some parts of the document might have used 'user' also.
59 (commented on own PR)
Got it, I will make the change. Thanks for spotting!
60 (commented on own PR)
Can idm also!
61 (commented on own PR)
ok!
62 (commented on own PR)
Ok updated!
63 (commented on own PR)
Yup it is hardcoded. No worries, I will be working on displaying this info immediately after this is merged since the recurring_session is also merged alr.
64 (commented on own PR)
HAHA ya... T_T I tried damn long to make it go to the extreme right but I just couldn't do it. Maybe I'll create an issue for anyone who wants to try 😆
65 (commented on own PR)
Kinda followed the original StudentCard from AB3.
I think we just keep it? 😅
66 (commented on own PR)
Good point, ill add it in
67 (commented on own PR)
nice catch!
68 (commented on own PR)
Good catch!
69 (commented on own PR)
hmmm because I put commas at the end that's why it's left like this.
or should i just remove the commas?
70 (commented on own PR)
Added!
71 (commented on own PR)
I decided to remove the commas and capitalize
72 (commented on own PR)
ok!
73 (commented on own PR)
I personally think it looks neater displaying all in one paragraph 😅
74 (commented on own PR)
seems to work. ill refactor all to this format
75 (commented on own PR)
i googled and it says both also can but "indexes" is a more English way while "indices" is a more latin way haha
76 (commented on own PR)
actually right, i tried to use your onSessionDate() method but because I needed to pass SessionDate in as input, i found it very troublesome to use it. My this build method has the added benefit that it uses the time info of the recurring session, so i don't have to retrieve it, create a new SessionDate and then pass it into the onSessionDate() method.
77 (commented on own PR)
Yes i'll try and clean this method up
78 (commented on own PR)
ohh ok, that's a good idea! I will change it to this.
79 (commented on own PR)
hmmm, but i'm kind of using these variables above as well.. if i create them in the method then I'll have to create them twice..
80 (commented on own PR)
yes, the way I created is hardcoded to only show 3 days. If they change it, then the program will be buggy. I will add the assert statements thanks!
81 (commented on own PR)
oh yes thanks for catching this. I think we should have it as START_DATE instead of just DATE
82 (commented on own PR)
this large chunk of code here is to allow wrap text because TableView does not support wrapping at the parent level and I need to go down to the children
83 (commented on own PR)
Are we adding more tests to DeleteSessionCommandTest?
84 (commented on own PR)
hollup if we abstract this method and put it at the top of the class, then won't we be using the same edited addressbook for other test cases as well?
85 (commented on own PR)
Sure!
86 (other comment)
Removed. I was actually intending to replace the github logo, but the github logo makes more sense in this case.
87 (other comment)
Add test cases for time 23:002 and 23:592 and both throws a SessionException as expected.
88 (other comment)
I also noticed all the commands that @enhao25 changed to name it as ____StudentCommand got reverted. Is it intentional?
89 (other comment)
So there will only be 1 TuitionCommand which is the AddTuitionCommand right? The rest like list, delete, find, etc are still StudentCommands?
90 (other comment)
I will add test cases for AddSessionCommandTest and AddSessionCommandIntegrationTest later today #61.
Should not cause any issues.
91 (other comment)
closes #49
92 (other comment)
Yeap LGTM. Just 1 small comments on adding comments to the equals method. Previously in the group, I think shion also mention that changing the session to store student instead of having student store session could be a possible idea. If we somehow decide to do that, not sure if some of the test case needs to be changed. However, at this point, it might not be time efficient to change, might need to discuss this future when we meet tmr, to see if there is a point in doing that. Else, looks good
I think regarding this, wouldn't it be better to just have these test cases now and modify them later if we were to introduce the functionality?
93 (other comment)
@samleewy I think the comments change and parse method name change, I'll create a new issue so that we can discuss. For now, maybe you can approve this first to fix the trim date bug?
94 (other comment)
I think having at "Fees" is fine.
95 (other comment)
LGTM, tried out the new UI and its looks great to me. Only has some minor suggestions for you to consider. We could possibly change the reminder to show for the next 3 days instead of the next week instead, once calendar is up, as it wouldn't make sense for both to show the dates for the next 1 week ah.
Can change also, but the main difference is that the calendar should show the week (Mon - Sun), whereas the reminder shows one week from today.
Added benefit for having a Calendar is that it would allow the user to have a sensing of the frequency of tuition sessions for a particular week.
But I agree with you that reducing the period to 3 days improves the functionality of the Calendar.
96 (other comment)
To add on:
add_rec_session n/STUDENT_NAME d/START_DATE e/END_DATE b/INTERVAL t/TIME k/DURATION s/SUBJECT f/FEE
vs e/
and b/
at the back for the actual command message for add_rec_session
97 (other comment)
Oh ps didn't click on the latest commit 😅 . Let's merge then!
98 (other comment)
Good idea 👍
Should we do it for the Home page as well?
99 (other comment)
I think I can try to truncate the fields to fit the size of the box.
100 (other comment)
Will update this in the UG to state that all names are case sensitive
101 (other comment)
It is stated in the user guide that the user can use the help command or press >kbd>f1>/kbd> to view the command usage.
This is also not a Feature Flaw.
102 (other comment)
#240
103 (other comment)
Ok will update the image and the Reminder description accordingly.
104 (other comment)
I think this one can add an explanation to UG to make it clear.
105 (other comment)
All changing tab suggestions are considered features and will not be added in v1.4.
New issue created to inform the user to change to the tuition tab to see updates from commands. #267
Closes #202, Closes #197.
106 (other comment)
LGTM! Thanks so much for your contribution to the project! Especially the UI, really well done! 👍
Thanks! 🥰
Great work by you as well!!! 💯
@tjtanjin
(41 comments)1 (commented on others PR)
I think there might be some settings in your editor that are automatically modifying whitespaces/newlines of the code because this is actually a tutorial file.
2 (commented on others PR)
Same as the above comment, awkward whitespaces in the method header comments.
3 (commented on others PR)
Can consider removing this since we are not checking for duplicate endpoints or it might eventually get flagged as dead code.
4 (commented on others PR)
Find command was only applied to names in AB3 but ours is likely to include all fields in the search. The test here may be referenced for implementing tests for our version of the find command.
5 (commented on others PR)
Might want to be careful of this. Our application might not need this additional check as even having the same method/url may not mean they are the same if the data being sent is different (i.e. data in request body in a POST request)
6 (commented on others PR)
To add on, I think it's possible to check for duplicates but in this case every single field (including tags) would need to match (unlike just name and address in the original AB3).
7 (commented on others PR)
I think the check has been performed in isValidMethod
below 😄
8 (commented on others PR)
I think there's a good chance more tests will be breaking given how the header
and data
attributes have not been implemented yet. At the same time, I am also hesitant about commenting out all the test cases.
The consideration I have is that making several small fixes to pass them might be easier compared to having to make a single big change to all test cases at the same time. Depending on the implementation for header
and data
, ensuring the test cases pass now may prevent further complications down the road. Just a thought 😄
9 (commented on others PR)
Should there be a newline here?
10 (commented on others PR)
Might be good to populate the sample data in the correct format even though currently they are just stored as string when entered e.g for data it would be '{"key": "value"}'
11 (commented on others PR)
Just a small point but the comments are not updated here.
12 (commented on others PR)
Maybe instead of listing find command twice can differentiate the 2 ways to use it while listing it just once because on first glance it looked like a duplicate (similar to how run was listed).
13 (commented on others PR)
Might help to mention that this is the second format since the previous one said 2 formats.
14 (commented on others PR)
I think the match for ftp
and file
are not necessary since they are not protocols we support.
15 (commented on others PR)
Minor typo here 😛
16 (commented on others PR)
Need to update the links here 😄
17 (commented on others PR)
Need to replace instances of AddressBook
and Person
😄
18 (commented on others PR)
Minor thing but "an Address
" might sound better :3
19 (commented on others PR)
Links here need to be fixed.
20 (commented on others PR)
Should the Person
reference be replaced with Endpoint
instead of Method
?
21 (commented on others PR)
Looks much cleaner now! 😄
22 (commented on others PR)
Minor typo for endpoint
here.
23 (commented on others PR)
Same typo as above.
24 (commented on others PR)
Should it be find
command instead?
25 (commented on others PR)
Using an add
might sound more correct here.
26 (commented on others PR)
Just a suggestion but you may want to consider using the >kbd>
tag so that the keyboard input are nicely formatted like this: >kbd>ctrl>/kbd> + >kbd>up>/kbd>
27 (commented on others PR)
Nit picking at this point but some bullet points have full stop and some don't :3
28 (commented on others PR)
Actually would it be better to use an actual url that works here? Just in case people actually paste this url to try and because it doesn't work, they flag it as a bug ._.
29 (commented on others PR)
Good catch!
30 (commented on others PR)
Since the method name has changed perhaps the parameter name should be updated as well
31 (commented on others PR)
Might want to consider moving this to the miscellaneous section. The commands section currently fits into exactly one page and this extra tip will awkwardly carry over to the next page.
32 (commented on others PR)
Parameter table in user guide now uses URL
instead of Address
, might be good to standardise here as well.
33 (commented on others PR)
Double quotations need to be escaped with \
so that it shows up correctly on the jekyll page. The whitespace between colon and value should also be added to be consistent with the header format.
34 (commented on others PR)
Might be better to include whitespaces between :
and one
, two
and three
to be consistent with the header formatting.
35 (commented on others PR)
Just noticed this but can help to remove the 's
after user
.
36 (commented on others PR)
person
needs to be replaced with endpoint
here (occurring at a few other places as well).
37 (commented on others PR)
Same user
issue as above (and in a few other places as well).
38 (commented on others PR)
For the case of a shorthand would these 2 fields better be reflected as optional? It was raised as a bug report when highlighted as compulsory previously.
39 (commented on others PR)
I think the issue for this is #526, in which the user brought up a valid point that reading the tip as it is makes the highlighting seem mismatching (since the compulsory prefix did not appear in the example that immediately followed it). I think arguments can be made both ways so safest option might be to split things up like in the find
command although the difference for run
is not as complex.
40 (commented on others PR)
Do you mean metrics? 😛
41 (commented on others PR)
I think we can put v1.4b since this is the final milestone 😄
42 (commented on own PR)
Just to leave an update here:
The team has had an internal discussion and reviews will be left open to all members of the team (except the PR author) for now. This is slated to change as the project grows and the codebase becomes more complicated.
43 (commented on own PR)
I actually considered this! Then I saw that the other files were not doing it this way so I thought to just follow what's already there as closely as I could :3
44 (commented on own PR)
This was required to address the error raised: not on FX application thread; currentThread = Thread-4
45 (commented on own PR)
I agree the animation should be further improved down the line 😄
46 (commented on own PR)
Thank you for catching that, it's fixed! 😃
47 (commented on own PR)
There's no check for header to be in json format. As an example, the header will be added in this format: -h "Content-Type: application/json"
. That said, when retrieving the individual key and value, I noticed that this was what I got: ["Content-Type: application/json"]
. Hence, I trimmed the brackets and quotations to obtain the key and value. Ideally, the headers should be processed before being stored but until then this will still work 😄
48 (commented on own PR)
Great suggestion, changed this in the latest commit! 😃
49 (commented on own PR)
Reduce the spacing between the title (guide) and the subtitle (version number) xD
50 (commented on own PR)
I am outside so can't update this now. I'll merge first so anyone hoping to work on the UG can go ahead and then fix the typo in another PR 😃
51 (commented on own PR)
There... Was a previous method? xD Yea I agree what I did is actually not ideal, given more time (if we're serious about v2.0) we can clean this up in the future. On that note @JulietTeoh if you want to see how the error messages look like on the smallest window size (800 x 600) you may refer to the latest UG sent in our telegram group.
52 (other comment)
Great photo! @tjtanjin By the way, there is this slight distortion on the center-right edge of the photo, not sure if you have noticed it. If you don't mind I will go ahead and approve it.
On close inspection, I realized that you added this
[[homepage](https://tjtanjin.com/)]
in front of theGithub and portfolio
links. While I have no issues with the inclusion, I wonder if moving it to the back ofGitHub and porfolio
will make it more standardized? This is because not everyone might be adding their homepage link. What do you think?
I like the suggestion for shifting homepage link to the back, have updated it accordingly 😄 With regards to the image I will source for a better one at a future date but this should suffice for now 😅 Thanks!
53 (other comment)
Resolved with #75
54 (other comment)
@tlylt Thank you for taking the time to scour through the changes 😄 It is indeed a lot of updates at once and I should have provided more context in the PR message. Regarding the points you raised, here are some of the missing context (which have now been included in the original PR message as well):
The refactoring was done partly through IntelliJ and partly by hand, and during the refactoring by IntelliJ, certain imports were automatically changed (such as the one involving Messages
and CollectionUtil
that you mentioned). I have previously combed the files in general but a few of these change in imports were not caught (though the latest commit should have caught all if not most of them).
The change of seedu.address
to seedu.us.among
was a result of a brief discussion but it has not been cast in stone, so please feel free to suggest alternatives to the package names 😄
Finally, this PR changes only names and terminologies with no update to the logic at all so test cases would still need a separate update eventually :>
Hopefully these help provide more context 😄 I'll proceed to merge the PR for now and we can do a future PR to rectify stuffs if necessary, thank you!
55 (other comment)
Closed as checks failed to run when github actions went down earlier.
56 (other comment)
Resolved by #95
57 (other comment)
The image seems broken, could you double-check?
Thank you for pointing that out 😄 It's fixed now 😄
58 (other comment)
Addresses #112
59 (other comment)
Addressed by #111
60 (other comment)
The
SendRequest
class perhaps can be more aptly named asRequest
? Given that we are indeed modeling a thing that is calledRequest
and the wordSend
seems redundant.
Just my 2 cents, other than that LGTM
Ok I renamed the logic classes under endpoint
and renamed the execute
method to send
as well which sounds more apt: new GetRequest(endpointToSend).send();
Merging it since the changes are small 😄
61 (other comment)
@tlylt I tinkered around with this as well. Unsure if there is any lag reduction but I imagine we can play around with the initial text to set in the box to mask this from the users. The counter is just a placeholder, I will likely replace it with Processing Command...
(the dots will change between having 1 to 3 dots to reflect progress). Just 2 key points I wish to bring up:
Firstly, although it works, the current code implementation feels rather messy because I had to wrap Platform.runLater
a good 4-5 times around codes. If you had a better way to implement this, I'd love to hear it. If it helps, the reasoning behind my many uses of Platform.runLater
is to deal with an error saying not on FX application thread; currentThread = Thread-4
Secondly, I did the UI threading within the MainWindow#executeCommand
but this would mean that sometimes, even the fast commands like add
and remove
will see a quick flash of the counter (the pseudo progress indicator currently). Resolving this within MainWindow
would look very messy as well. I am also still looking for a way to improve this.
I will tidy up and abstract parts of the code as much as I can tomorrow and try my best to make a PR before the team meeting so that we can further discuss this.
62 (other comment)
Great job, while you are at it, could you reduce the 5-second delay that emulates the wait time of an API response 🥺
Curious:
- how did you fix the lag?
- if we are disabling the user's ability to input while running the request, wondering if it will be better if we still show what he entered in the command box and clear it after the request is done? Not sure if this is the case already... for discussion only
I'll make a PR really soon to remove the wait time :3
Shifting Platform.runLater
above the sleep code removed the lag (which came from the initial 1 second sleep)
Yup the entered command stays in the command box when frozen 😄
63 (other comment)
Not sure if I am getting this right, the request is cast to HttpPost for all the requests?
The setEntity
method is unable to be called on HttpUriRequest
and hence the casting. Whether this casting will be universal will be looked at again when more methods are added. If there is a need to then further abstraction needs to be done here 😄
64 (other comment)
Resolved in #145
65 (other comment)
Note:
User header input needs to be enclosed in quotations for example: -h "Content-Type: application/json"
.
Need to remove above mentioned quotations before storing.
Important:
The second change directly affects the parseHeaders
method within HeaderUtil.java
. When updating this, change the following line:
headerString = headerString.substring(2, headerString.length() - 2);
headerString = headerString.substring(1, headerString.length() - 1);
66 (other comment)
I think this is a great suggestion, since v1.2 is being wrapped up let's do it in v1.2b 😄
67 (other comment)
Addressed ever since Person
was morphed into Endpoint
.
68 (other comment)
Addressed in #125
69 (other comment)
interface as in the screen?
I think this is referring to the endpoint list on the left panel.
70 (other comment)
Sample endpoint 3 periodically returns an empty result with the following error:
"JavaFX Application Thread" java.lang.StackOverflowError
There is no known way for the user to directly cause it as of the time of writing this. It seems completely random. What is worth pointing out is that sample endpoint 3 returns a
very long json result
which is also reflected in the extra 1 second it takes to load the result into display.
This seems to be a performance issue and we should consider how to address this as soon as possible.
Have tried a few times and wasn't able trigger it, if it is a peculiarity with regards to this API, perhaps we should remove it as of now.
I think it's alright we can leave it there and hopefully it will appear again (happened twice to me so far) so that we can look at it. I am thinking to catch the stackoverflow error but not sure if that's actually legitimate.
71 (other comment)
Would this compromise the command line friendliness since it involves using the mouse to hover?
72 (other comment)
Might have a potential fix to this. Will look at using appendText
in ResultDisplay
and update again.
73 (other comment)
Another update, I tried both appendText
as well as ListView
instead of TextArea
in our ResultDisplay
. In all cases, the lag still features prominently and because the bug is not deterministic, I am also unable to tell if either of them actually fixes anything. With all that said, I have come across quite a number of threads discussing about the performance of JavaFX and in particular, it seems TextArea
is not good for very lengthy strings. In fact digging deeper there's quite a lot of criticisms for JavaFX performance. With all that said, I will likely opt to catch the stackoverflow exception.
Note: I cannot tag prof damith here but I'll find time to clarify if this can actually be considered a bug of ours. If truly it is because JavaFX is unable to support such lengthy input without crashing, then hopefully it might be considered an inherited bug.
74 (other comment)
If the length of response is a concern, perhaps we can check the response length and limit that to a reasonable number such that we display a proper error message when the length exceeds that.
My concern is that this might be considered a bug as if we consider the fact that our application causes "loss of data" when calling an endpoint. Will really need to clarify soon.
75 (other comment)
Yup this is not high priority so we can try this out and discuss some time later.
76 (other comment)
Ok nvm I misinterpreted this. List command does seem useless given how our list is always showing, but without list, if you do a find command and get a subset of endpoints you have no way of going back to seeing all endpoints again. This is unless find command supports a wildcard search or defaults to showing all endpoints if no arguments are given but at this point it seems easiest to just keep list.
77 (other comment)
Closed in #232
78 (other comment)
Resolved in #166
79 (other comment)
Possible duplicate of #148
80 (other comment)
Looks good! As discussed, it would be even better if the background image scales with the screen size as well 😃
81 (other comment)
This behavior is also seen in CURL
so I think it will be a good enhancement 😃
82 (other comment)
@tlylt @ong6 Is this discussion still ongoing or can it be closed?
83 (other comment)
Currently if a field is blank it states No Data
, does that resolve this issue? @ong6
84 (other comment)
Closed by #259
85 (other comment)
I did a quick skim of the files and it seems that the whitespace removed from the likes of PREFIX_METHOD
are instead being introduced in the strings they are being concatenated with. Am I overlooking anything?
86 (other comment)
LGTM!
Do you want to also change the example commands at the top and the command summary at the bottom? If not, I can do it 😃
Thank you for catching those, I have updated them with a commit 😄
87 (other comment)
I did a quick skim of the files and it seems that the whitespace removed from the likes of
PREFIX_METHOD
are instead being introduced in the strings they are being concatenated with. Am I overlooking anything?
Hi the only thing in the PR that affects code is the prefixs being changed in CliSyntax.java. For the add, edit and run, I just made the error command messages more readable, for example: from
"add -xget -usomeurl -hsomeheader" to
"add -x get -u someurl -h someheader"
Okie @ong6 introduced the whitespace in PREFIX_METHOD
in this commit 5 days ago so I think's best for him to do the review.
88 (other comment)
@ong6 May I clarify on what the updates for the above commands are in the user guide? I missed this and just merged a user guide update :X
89 (other comment)
Resolved with the function to add endpoint and send them again simply by calling an index.
90 (other comment)
Resolved with the current result display showing API responses.
91 (other comment)
Resolved with the application currently having a very simple design and clear information for endpoints.
92 (other comment)
Resolved with the functionality of send
command.
93 (other comment)
Resolved with the API responses being returned in result display and being stored in imposter.json
.
94 (other comment)
Resolved with the current capabilities of the application to allow easy testing of APIs.
95 (other comment)
Resolved with the current API calls returning a response time.
96 (other comment)
Resolved with the support for tagging of endpoints.
97 (other comment)
Resolved with the show
command displaying responses from the last run of an API call.
98 (other comment)
@tjtanjin the run and send test lowly unreliable they sometimes pass sometimes fail on my comp and I couldn't even commit my work on sourcetree.
Strange if it's inconsistent, if it happens again can create an issue for it and then paste screenshots of the error messages easier to debug 😄
99 (other comment)
Resolved since all features are now supported conveniently through command line or keyboard shortcuts.
100 (other comment)
Resolved in #280
101 (other comment)
Resolved with the enhanced find and tagging functionality for endpoints.
102 (other comment)
Duplicate of #8
103 (other comment)
@AY2021S2-CS2103T-T12-4/developers Just a note that this also remains an important issue with regards to the aspect of UI refinements for v1.3.
104 (other comment)
I think it's not stated obviously but the background is suppose to differ from theme to theme and both dark and light theme has a plain background currently 😅 To clarify the bug for light theme is obvious once you only have like one endpoint left in the left panel.
105 (other comment)
@tlylt Very detailed help prompt, looks ready to be merged! 😃
106 (other comment)
The endpoint associated with this error returns a response body of length above 800000 and infrequently crashes in JavaFX when setText
is called. There seems to be no better way to improve performance for this in JavaFX (have tried ListView
, staggering the setting of text etc). As this lies with performance issues in JavaFX, it is more practical to address this in our requirements where we "cap" the length of response body for a reasonable performance of the application to be less than 100000.
107 (other comment)
Thanks and sorry for the conflicts!!!!
All good xD Thanks 😄
108 (other comment)
Refer to latest issue at #310
109 (other comment)
Resolved with the now more detailed error messages.
110 (other comment)
Seems similar to what @ong6 suggested in issue #312 except his was for the clear command. Might want to entertain possibilities of solving both these issues at once.
111 (other comment)
Resolved with the current features of our application.
112 (other comment)
Yup I agree that makes sense can update it 😄
113 (other comment)
Is this going to be added in the form of a new feature?
114 (other comment)
If this gets added before the night can update the UG as well? 😄
115 (other comment)
Resolved as current application provides sample APIs.
116 (other comment)
With the guides and application near completion, ease of use has been achieved.
117 (other comment)
Possibly discuss the progress on this task in the afternoon meeting. From my perspective, I think the UG styling & structure are of decent quality, largely thanks to @tjtanjin. If all features are finalized, perhaps everyone could go through the UG at least once again just to make sure no stones are left unturned.
There were some new points brought up after the UG today. They are mostly small details and should not be a lot of work. I agree that everyone should go through the UG at least once again, before the mock PE.
118 (other comment)
There seems to be some issue with macos builds on github actions. Merging this for the moment seeing as tests passed for ubuntu and windows so that I can continue work on the UG.
119 (other comment)
Merged in case additional urgent fixes to the UG are required before PE dry run.
120 (other comment)
Resolved by #463
121 (other comment)
Just putting a note here for now:
The reason for the above difference in error messages is due to how the requests
library handles these 2 URL. The former contains alphabets and thus the library attempts to resolve the IP address it is referring to so that it can connect to it, throwing an UnknownHostException
. The latter contains only numbers and the library treated it as an IP address to connect to directly (aka no need to resolve hostname) but also fails to establish a connection, throwing a ConnectException
. This error mis-match can be easily fixed since the former is merely a more specific error message than the latter. The decision to standardise using the latter as the common error message is to be discussed with the team during the weekly meeting.
122 (other comment)
Just a note:
The DG mentions that this application is able to support up to 100k length from the response body. This artificial limitation is due to JavaFX's textarea being terrible at handling large input. The Youtube link above returns nearly 500k lines though sadly, the DG is not included in this PE-D. That said, let's forcibly trim the response output if it exceeds 100k in length.
123 (other comment)
Just a note:
A protocol needs to be specified for the request to be carried out. The closest example that can be drawn is that typing google.com
in the browser address bar automatically gets prepended with https
.
124 (other comment)
Just a note:
The space between each prefix is necessary for differentiating between the end/start of different parameters input. The missing space between address field
and -d
above would naturally mean that the entire string there gets interpreted as part of address and thus prompting the error above. Finally, this error message also accurately points the user to where the error is (the address field) which would be more than enough for the user to notice the missing space.
125 (other comment)
Just a note:
This is an inherited bug from AB3 but still needs to be fixed.
126 (other comment)
Just a note:
All screenshots were taken to be of the same size to make the UG more user friendly (no images of varying sizes that can throw people off while reading the guide). I suppose a clearer message mentioning this might help.
127 (other comment)
Just a note:
Unlike a command example, these JSON
data do not perform any actions as they are merely representations of data. The descriptions of this data would be good to have but unlikely bug-worthy. This is especially because the appendix was added to provide brief information relevant to APIs and the UG explicitly states at the beginning that users should still learn these relevant information from proper tutorial contents first.
128 (other comment)
There is actually nothing wrong with the above command format, except that the application tried to establish a connection to 1
but failed because there is no such server for it to connect to, explaining the error message given above.
129 (other comment)
The find command did exactly what it was suppose to do and informed the user that 0 endpoints could be found. Having an additional message to prompt the user to list all endpoints again would be a nice to have, but not having it does not really come off as a bug.
130 (other comment)
Just a note:
It might help reduce the clutter if the example was removed.
131 (other comment)
If a protocol is not specified, the http
protocol is automatically added. This needs to be made clear in the UG.
132 (other comment)
Addressed in #535
133 (other comment)
Great suggestion, a link to the JSON format appendix should be added in the first instance of the word JSON
. That said, this is more of a nice to have and not a bug as the JSON format is still sufficiently linked and explained in the rest of the document.
134 (other comment)
Just a note:
JAR file needs to be ran at least once and with data modifications for the folder to appear. It also makes sense that if the application has not even been ran then that there should be no data. This should apply to most if not all tP projects. That said, the UG can go a step further to clearly state this.
135 (other comment)
Addressed in #536
136 (other comment)
The format for adding multiple headers involve the use of multiple -h
tags, not with a comma. This will be better highlighted in the UG but is not an issue with the feature itself.
137 (other comment)
Just a note:
@AY2021S2-CS2103T-T12-4/developers This has to do with the "whitespace after prefix" issue we brought up in tutorial.
138 (other comment)
The space is actually present in the error message above (copy paste to verify) and if users follow the exact same format, there would not be an issue. Not entirely sure that this needs to be explicitly mentioned given that many other areas such as prefixes also make use of this whitespaces for distinction in their examples.
139 (other comment)
Just a note:
This was discussed within the team before and the consensus reached is that endpoint with the same URL, method type, header and data might be used for different purposes (identified with a tag). Let's say the tag represents a project that the endpoint belongs to. In this use case, differentiating endpoints with tags would be relevant to keep endpoints organised for different projects.
140 (other comment)
Recommended for user to maximise the window.
141 (other comment)
The protocols used are different.
142 (other comment)
May we check what platform this is being tested on? Copy pasting the add command
works for our team.
@tashawan23
143 (other comment)
I am thinking would it be better if we also add in either a
...
or awe truncated it due to limitation in JavaFX
at the end of the text, on top of mentioning it in the user guide?
Otherwise LGTM.
Sounds good, I'll include this in another UG PR to avoid merge conflicts since others are probably working on the UG at the moment 😄
144 (other comment)
I will update this together with #522 once UI updates are complete 😄
145 (other comment)
Correct me if I am wrong but the response field should still be there except that it may or may not contain values (depending on whether that endpoint has been ran before).
146 (other comment)
@tlylt Is the allowed range mentioned anywhere in case this gets raised as a bug
147 (other comment)
Note: need to remove the information of those data (from textarea) that has now been moved into the tags.
148 (other comment)
Try stashing your changes and running add
, edit
and show
. They reveal more details than the send
and run
commands such as header
, data
and tag
. show
is suppose to show every single detail of the endpoint whereas send
and run
only shows the endpoint and response fields. The current changes removes these details from the textarea, giving the impression that everything is the same.
149 (other comment)
In case it was missed out, the appendix for this and Effort
are already included in the DG but still needs quite a lot of touchup.
150 (other comment)
@ong6 The diagram/information are largely accurate but just some very minor considerations for Add/Find
implementation:
For the sequence diagram, the return arrow from AddCommand
has the label u
even though it should more appropriately be a
. That said, the name given to the AddCommand instance should also be a
, if we were to follow the style of the addressbook.
This phrasing sounds a bit off "Upon the users entry of the endpoint", perhaps something simpler like "When the user adds an endpoint" will sound better.
The URL used in the add command section differs a lot (a total of 3), let's stick with one perhaps just google.com
so that it's easier for others to read. In particular, the URL mentioned in the steps does not match the one shown in the sequence diagram.
Capitalisation in the Find
activity diagram is inconsistent.
May want to add in design considerations for Find
command since its function is quite complex.
That's all 😄
151 (other comment)
Hello! I apologise for appearing uninvited, I was really curious about the status of my bug reports. With regards to the editing of the data file, I actually came across this page stating the tP constraints. One of the constraints listed was Constraint-Human-Editable-File
, which seems to imply that the application needs to fail gracefully when an invalid data file format is found.
Thus, I am not sure if specifying that users cannot touch the data file might violate this constraint. Perhaps it is best to clarify with the prof first? :3 I would personally be interested to know as well 😛
@candyhy
(40 comments)1 (commented on others PR)
Maybe you can consider correcting imports with *
? Could be why your code failed the style check.
2 (commented on others PR)
you could actually just add your new property details to TypicalProperties file under testutil rather than editing the default values of property builder
3 (commented on others PR)
Should it be property book instead of address book here?
4 (commented on others PR)
Remember to update the javadocs here too
5 (commented on others PR)
Remember to update the javadocs here too
6 (commented on others PR)
haha think it shouldn't matter but for future reference I think u should just add it to the TypicalProperties file ba 👍
7 (commented on others PR)
a suggestion bc I don't think its good to initialise the variables to null:
Name name;
Contact contact; etc
8 (commented on others PR)
consider use of split function for more concise code?
9 (commented on others PR)
oh I see, because the toString may not contain the variable. ok nvrm then haha
10 (commented on others PR)
okk I see that u updated the function to use length function 👍 I just found the '13' and other indexes to be random
11 (commented on others PR)
Should this be combined into one line?
12 (commented on others PR)
Should this be combined into one line? 120 characters per line does not apply to DG
13 (commented on others PR)
Should this be combined into one line?
14 (commented on others PR)
Should PersonListPanel
be updated to PropertyListPanel
and AppointmentListPanel
?
15 (commented on others PR)
should "the person whose name contains the keywords" from the original address book be removed?
16 (commented on others PR)
don't think your eclipse setting files should be included
17 (commented on others PR)
I see, ok
18 (commented on others PR)
are your diagrams to be inserted later?
19 (commented on others PR)
these too
20 (commented on others PR)
should this be 'undo'?
21 (commented on others PR)
are these to be added later?
22 (commented on others PR)
How about 'the property list will now be in descending order based on price'?
23 (commented on others PR)
I think this doesn't sound very user friendly? A user may not know what a parameter is
24 (commented on others PR)
should we explain what does Option, Sales and Purchase Agreement, and Completion mean?
25 (commented on others PR)
Don't think the user will know what does status refer to
26 (commented on others PR)
is this supposed to be [PROPERTY_TYPE]
instead?
27 (commented on others PR)
think the 'Both done at the same time' is unnecessary? If anything, maybe 'simultaneously' will be better
28 (commented on others PR)
I meant line 265 266, there's this [remarks]
, this that supposed to be the case?
29 (commented on others PR)
I think can keep the part act the first property having highest price at the book though, although the phrasing for the first half is good now
30 (commented on others PR)
do u think ClientBuilder
should be used for this?
31 (commented on others PR)
same for this
32 (commented on others PR)
should PropertyBuilder
class be used?
33 (commented on others PR)
should AppointmentBuilder
class be used for this?
34 (commented on others PR)
are these supposed to be commented out?
35 (commented on others PR)
this too
36 (commented on others PR)
ok
37 (commented on others PR)
not sure if its cut off or the significance of new
keyword is unclear
38 (commented on others PR)
u mean one input? I think its unclear what one per query refers to
39 (commented on others PR)
Valid date or should it be deadline?
40 (commented on others PR)
probably a small issue and both are ok but it think deadline
makes more sense since you are checking for a valid deadline
?
41 (commented on own PR)
fixed!
42 (commented on own PR)
fixed as well
43 (commented on own PR)
Fixed, thanks!
44 (commented on own PR)
fixed
45 (commented on own PR)
done
46 (commented on own PR)
Fixed as well:)
47 (commented on own PR)
Nope, if you guys are agreeable with the new LightTheme Ui, I will go ahead and delete DarkTheme.css
48 (commented on own PR)
I would say it's not impossible but the purpose of adopting a light theme was to allow the greying out of expired property and appointments to be somewhat observable yet inconspicuous. The grey effect in the already Black/Grey DarkTheme would probably not achieve the same effect. However, if you guys are keen on a dark theme, I can consider a DarkTheme design in a subsequent update- maybe keep the DarkTheme.css file for now
49 (commented on own PR)
oh yes ok will update this
50 (other comment)
Code style issue at ../src/test/java/seedu/address/logic/commands/RemarkCommandTest.java:40: no newline at EOF.
51 (other comment)
hey, I've fixed the bug that doesn't display postal code. However, about price, have to consult junwei on this because he is adding the price of the property as client info actually, not as part of property attribute itself
52 (other comment)
not implemented, to be considered after v1.4
53 (other comment)
54 (other comment)
@candyhy what do you think of this 🤔
I think it is too colourful, better to keep it minimalist. That purple doesn't go with the blue either
55 (other comment)
can I also suggest keeping the text wrapping fixes and changes to Ui as separate pull requests? cos I think its imperative to fix the text wrapping but the Ui may not be satisfactory yet
56 (other comment)
can I also suggest keeping the text wrapping fixes and changes to Ui as separate pull requests? cos I think its imperative to fix the text wrapping but the Ui may not be satisfactory yet
created a separate pr for text wrap!
cool thanks! 👍
57 (other comment)
@candyhy what do you think of this thinking
I think it is too colourful, better to keep it minimalist. That purple doesn't go with the blue either
what colour would you suggest?
I think its better to keep the background white/black. shouldn't have more than 3 colours in a Ui in my opinion
58 (other comment)
Updated StorageClassDiagram
59 (other comment)
Storage
interface should extendPropertyBookStorage
,AppointmentBookStorage
andUserPrefsStorage
too
will update this too
60 (other comment)
new StorageClassDiagram
61 (other comment)
ohya can u upload your diagrams here for everyone to see?
@weixue123
(39 comments)1 (commented on others PR)
Need to update the documentation here
2 (commented on others PR)
Update documentation
3 (commented on others PR)
Add a vertical spacing here? - the auto-formatter should take care of this
Same issue with ManufactureDate, CompletedDate and OrderDate
4 (commented on others PR)
If Order has a cheeseType property, then I would assume that one order should only have one type of cheese. Then, I think there should be some checks to ensure this?
An alternative would be to let an Order have multiple cheese types. If so, then we will have to remove the cheeseType property.
5 (commented on others PR)
Update documentation
6 (commented on others PR)
Add documentation
7 (commented on others PR)
Is this class used anywhere yet?
8 (commented on others PR)
I believe these should be placed under testutil instead (not logic/commands/CommandTestUtil.
Also, it will be great if we tested invalid dates and cheese types as well.
9 (commented on others PR)
Standardize all comments to start with capital letter?
10 (commented on others PR)
Should we rename FindCommandParser to FindCustomerCommandParser? In order to be consistent
11 (commented on others PR)
Currently some funny things are happening to the customer list after we make the findcustomer command with an empty field following a valid prefix, for example, after inputting "findcustomer n/".
Perhaps we can consider using ParseException to handle the above case as well?
12 (commented on others PR)
I think we should have two cheeseIds in this completed order? Since its quantity is 2 and we should not have been able to complete it with only one cheese.
Changing the quantity to 1 will work too
13 (commented on others PR)
I think we need to account for the case where the input cheeseId no longer exist.
For example, suppose we have order with OrderId 3 that has been fulfilled with cheese with CheeseId 3.
The user first deletes the cheese with CheeseId 3.
The user proceeds deletes the order with OrderId 3, which brings us to the code block above.
The above for-loop is unable to find the cheese with ID 3, since it has been deleted previously.
this.targetIndex is set to Index.fromZeroBased(1), the default value.
The wrong cheese is deleted.
14 (commented on others PR)
I think we should "unfilter" the order list here? That is, calling model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS). This is so that we can iterate through the complete order list when finding orders to cascade-delete.
This is so that when the findorders feature is implemented in the future (which will cause the order list to potentially be incomplete), this command can still work fine.
15 (commented on others PR)
Think we can "unfilter" the cheese list here before iterating through it! Rationale below (in another comment).
16 (commented on others PR)
We might not be able to use Index.fromZerobased(0) as the base case representing that a cheese is not found.
In the below for loop, if the matching cheese is in index 0, then we will need to use Index.fromZeroBased(0) as the targetIndex.
So, need to either change the base case or the loop below.
17 (commented on others PR)
The two ways when handling invalid data file:
Data file not in correct format -> warning -> start with an empty address book.
Data file not in correct format -> IllegalArgumentException -> app does not start.
Should we standardize this to one method??
18 (commented on others PR)
I think we can add in a case to handle when the user keys in an expiry date but not a maturity date when adding a cheese.
Anyway, since we are at this topic: I was thinking, we may want to consider dropping certain attributes from the models. For example only, since we have only 1 week left to add features, I think we may not have the time to implement features that deal with the cheeses' manufacture date, maturity date, etc.
We can always leave the clean up to v1.4, so it's just something to think about now? Should discuss more during Saturday's meeting.
19 (commented on others PR)
I think it's okay if the cheese ID does not currently exist?
Consider the following scenario:
User adds a new cheese (CheeseID = 1, CheeseType = Gouda, Quantity = 1)
User adds a new order (OrderID = 1, CheeseType = Gouda, Quantity = 1)
User completes Order 1 with Cheese 1.
User deletes Cheese 1 (we currently allow this to happen without changing the order to which the cheese was assigned).
User close the app.
User reopens the app and runs into an IllegalArgumentException because CheeseID 1 no longer exist.
20 (commented on others PR)
We can also check to ensure that an incomplete order's cheeseIds is empty.
If not, the app can start without errors or warnings even when there's an order in the data file like this:
21 (commented on others PR)
I think disallowing cheese deletion after it has been assigned sounds good - it will be just like IRL where you can't throw away a cheese after assigning it to an order, for example.
22 (commented on others PR)
This one you and Li Quan can decide? or you want to wait until Saturday to discuss also can.
And then, actually a cheese manufacture date don't necessarily have to be after an order's order date right? Are you referring to the order's completed date instead? If so then sounds good!
23 (commented on others PR)
kk
24 (commented on others PR)
I think this line of documentation regarding tags doesn't apply to EditCheeseCommand?
25 (commented on others PR)
I think the parameter name should be editCheeseDescriptor??
26 (commented on others PR)
Should PREFIX_CHEESE_TYPE, PREFIX_QUANTITY and PREFIX_PHONE be in square brackets too? Since they are optional
27 (commented on others PR)
Same issue with doc here!
28 (commented on others PR)
Do also update the UG and the DG (use cases)
29 (commented on others PR)
The last line sounds a little confusing, is it possible to rephrase it? (the "as opposed to implementation within the different Command
classes" part). or we can simply omit it if it's not important?
30 (commented on others PR)
Trailing white space
31 (commented on others PR)
Add --- divider and remove [In Progress]
32 (commented on others PR)
Do add the --- divider and remove the [In Progress]
33 (commented on others PR)
Is the diagram missing some return arrows?
Also, I think we should standardize, as a group, whether to include the argument strings in our sequence diagram
34 (commented on others PR)
Is there supposed to be a sequence diagram here?
35 (commented on others PR)
Do clean up the documentation a bit (typos, punctuations, etc.)
Also, take note of the trailing white spaces:
36 (commented on others PR)
Class diagrams LGTM
37 (commented on others PR)
May I confirm if this is the case for our project? I tried running the JAR file but couldn't find the data folder anywhere. The storage works perfectly though.
38 (commented on others PR)
I think ORDER_DATE can only be today or earlier
39 (commented on others PR)
okay got it thanks
40 (commented on own PR)
Okay i just removed the bolding entirely, thought it was unnecessary (dk why I typed it this way, must have missed it).
41 (commented on own PR)
done!
42 (commented on own PR)
ahh I get what you mean. Made the change
43 (commented on own PR)
It's quite hard to make changes to the UI and test them in this current branch, the reason being we cannot yet create observable lists of orders or cheeses.
Is it okay to merge this branch first? Then I can create another branch, rebase on the new storage branch and work on the UI right away.
44 (commented on own PR)
Ignore last ^. I'll rebase on the new storage management branch and work from there.
45 (commented on own PR)
Noted, will address this before tmr (monday) morning
46 (commented on own PR)
Noted, will address this before tmr (monday) morning. Will probably be adding a class to Model to reflect the screens to show.
47 (commented on own PR)
mb, fixed liao
48 (commented on own PR)
mb, forgot to change the methods' and variables' names after copy-pasting - fixed
49 (commented on own PR)
I did it using plant UML leh (same as in AB3) so you will have to pull the branch to see it. I will paste them here so it's more convenient to review.
50 (commented on own PR)
I realized how ugly the panels and cards diagram is - gimme a min ill make some edits.
51 (commented on own PR)
52 (commented on own PR)
okay noted
53 (commented on own PR)
It's supposed to be the enum representing which list to show. Actually we may not need to spell it out in the sequence diagram.
54 (commented on own PR)
The updated sequence diagram.
I think we can leave the "listcheeses" argument in? I referred to AB3's developer guide and this seems like the style they are following
55 (other comment)
loooks good to me!
56 (other comment)
Duplicate of #121
57 (other comment)
Duplicate of #117
58 (other comment)
Fixed in #116
59 (other comment)
Fixed in #117
60 (other comment)
Fixed in #117
61 (other comment)
Fixed in #117
@xiinweii98
(38 comments)1 (commented on others PR)
If I remember correctly, the "As a" part don't have to be a user. So in this case maybe we can do: "Cake Collate/Program". But, I tried to find this in the lecture notes/textbook and couldn't find it.
So, maybe we can omit the "So that"/benefit part instead of "(obvious)", since it was mentioned in the notes benefits can be omitted if they are obvious.
2 (commented on others PR)
The full-stop in the benefit part caught my eye haha. Maybe standardize across the DG~
3 (commented on others PR)
Maybe instead of "track", "execute"? Or something along that line.. Because we aren't really tracking the deletion, just actually removing it from the database.
4 (commented on others PR)
Noticed a "/" at the end of the benefit part.
5 (commented on others PR)
Maybe "re-adding" or "adding"? haha
6 (commented on others PR)
Noticed full-stop here as well. Same for a few below this~
7 (commented on others PR)
Noticed you used capital "V" for "View". Maybe standardize and use small caps. Same for the benefits part in line 264 and 267 "My" and "Details".
8 (commented on others PR)
Maybe can leave out the benefits part too.
9 (commented on others PR)
why got another add nub
10 (commented on others PR)
Not sure if the AB3 allows for 2 p/
I think it does but maybe to make it clearer in the UserGuide, just put one phone number
11 (commented on others PR)
Can you add a full stop haha
12 (commented on others PR)
Need to change "person", same for line 29
13 (commented on others PR)
Maybe needs changing/removed
14 (commented on others PR)
Assuming you're asking a question?
I think it would be good to have a way to differentiate or find out if two HelpCards are the same, regardless if we ever use this equals method.
15 (commented on others PR)
Same thing, need to change "persons", same for line 29, 48
16 (commented on others PR)
Maybe add a brief javadoc?
17 (commented on others PR)
Hmm, just from looking at the files changed, I can't figure out why you abstracted out fillPersonListPanel()...
18 (commented on others PR)
Same thing here, but I am guessing because of some dependencies you needed to setRoot(root) before you setController(this)
19 (commented on others PR)
May I know why you are deleting this? Is it because this method is not used?
20 (commented on others PR)
Hmm.. By right the data shouldn't change while the user is in the help panel. But it wouldn't harm to insert redundancies so that the program won't break if for some reason data was changed during the transition. So, I would recommend using this fillPersonListPanel() to populate the personlist panel.
21 (commented on others PR)
Ahhh, I see. We were told cyclic dependencies are bad practices in 1101 right? While its a bad practice I think it is still used haha if you take a look at w8 topics the first video for drawing class/object diagrams, they have cyclic dependency also: box and lid.
Maybe if you want to, you can change the resetMainWindow method in MainWindow to a static method then use a static call in HelpCommandPanel. Not sure if that is still cyclic dependency lol. Else if you really want to resolve it I guess you need an association class.. So, goodluck!
22 (commented on others PR)
"orders" ? instead of "persons"
23 (commented on others PR)
Same thing here, "orders"
24 (commented on others PR)
😮 why is this here? Thought it is supposed to be changed by Pavitra's PR
25 (commented on others PR)
If you're changing such that user can choose the range of dates then you should remove "is within 3 days of the current date" right.
26 (commented on others PR)
You can maybe merge this two if you are not trying to differentiate the reason why there is a parse failure (since you are throwing the same exception). In a way the error message will be less meaningful but it is what the original coder(s) did too for AddCommandParser etc. We discussed this briefly during our last meeting when @pPris brought it up. I think for now we are KIV-ing and maybe changing it if we have time.
27 (commented on others PR)
Should be "order"
28 (commented on others PR)
Same for other usages of "people" and/or "person" for this file
29 (commented on others PR)
Remove this if its not used? 😃
30 (commented on others PR)
He probably needed the request here to create an order item lol. Although it is possible to overload the Order constructor.
31 (commented on others PR)
Maybe for extensibility. Having a prefix in place now means in the future if we want to add another prefix it can be easily done.
Maybe so that user can input more than 1 request per command. Without the prefix, the user may have to use the command twice to input 2 different requests.
I think it's fine leaving it as it is now 😃
32 (commented on others PR)
"diabetus" is on purpose or typo? lol
33 (commented on others PR)
Remove this boi
34 (commented on others PR)
CommandException should be removed
35 (commented on others PR)
Just wondering why you use .value here while you used .toString() in L41?
36 (commented on others PR)
To test "no parameters" you should include all other required fields and only leave out the parameters. I'm guessing you mean to test for the prefix here? Since you are testing index below
37 (commented on others PR)
Same for this, you should only leave out index and include prefix.
38 (commented on others PR)
Remember to remove the cost column~
39 (commented on own PR)
Yup definitely! If I recall correctly Benson's details will be used specifically in some tests. So since you are adding a field as well, take note of those specific test cases that tries to extract Benson's details ya. Probably don't have to do anything about it if you didn't miss anything ~
40 (commented on own PR)
Good catch! Will do.
41 (commented on own PR)
Yup, there are. Nice catch again:)
42 (commented on own PR)
Uhm because I wanted to let the user be able to search for a date using any of the format they use when they add the order + if they input the day/month/year only. Though now that I look at it I probably can do away with day/month/year since they are already included in the 4 formats provided haha. Also, yeah probably can create a method in deliverydate to get formats.
43 (commented on own PR)
Yeap my initial concern was I didn't want to let user be able to use this prefix at all thats why I only create it in the code. Just remember I can create the prefix but not set it as a prefix argmultimap accept haha thanks
44 (commented on own PR)
"or" search is done by the "all/" prefix which concatenate all the fields in an order to search the keywords against. So that becomes like alloforder.contains(keywords)
45 (other comment)
Add a OrderDescription class to seedu.address.model.person and edit the Person class to reflect added field.
46 (other comment)
LGTM~
47 (other comment)
LGTM 👍
48 (other comment)
LGTM 💯
49 (other comment)
LTGM
50 (other comment)
LGTM
51 (other comment)
LGTM
52 (other comment)
LGTM
53 (other comment)
LGTM
54 (other comment)
LGTM
55 (other comment)
LGTM, can always add more next time.
56 (other comment)
LGTM 👍
57 (other comment)
LGTM ~
@stein414
(37 comments)1 (commented on others PR)
This seems different from the ab3 alternative format provided. Maybe using the provided format would be better? Do let me know if I am mistaken.
The referenced link is here: https://se-education.org/addressbook-level3/DeveloperGuide.html#design-consideration
2 (commented on others PR)
Perhaps the details not choosing the alternative could be added to be clearer why it was not used in the end
3 (commented on others PR)
This is a small one but maybe add a space between valid and '''
4 (commented on others PR)
Maybe reword the second sentence as it feels a little weird to read.
5 (commented on others PR)
Perhaps abstract the 3 into a variable to avoid magic numbers
6 (commented on others PR)
The tests cases seems extensive. Good work
7 (commented on others PR)
Maybe a enum like "CommandType" would make more sense as it is somewhat overcrowding the constructor. The check could be against the enum value instead if needed
8 (commented on others PR)
The naming seems ambiguous
9 (commented on others PR)
This javadocs probably should be residents instead of persons
10 (commented on others PR)
Person -> Resident
11 (commented on others PR)
Perhaps use DuplicateResidentRoomException
instead
12 (commented on others PR)
Perhaps change the resident references in this file to resident rooms (both in comment and code)
13 (commented on others PR)
resident -> resident room
14 (commented on others PR)
Resident -> ResidentRoom
15 (commented on others PR)
Resident -> ResidentRoom
16 (commented on others PR)
Removing probably no need to sort again but I think it is ok to have it here too since it probably does not affect performance much at this scale
17 (commented on others PR)
Probably better to use the static variables from the typical rooms class
18 (commented on others PR)
Maybe just don't catch it?
19 (commented on others PR)
Maybe just don't catch it?
20 (commented on others PR)
I think maybe adding 1 more test case value beyond the upper and lower bounds would make this more complete
21 (commented on others PR)
I think this should be at the top of the file to be clear what happens
22 (commented on others PR)
Probably no need to do this in Remove
since removing from a sorted list keeps the list sorted
23 (commented on others PR)
$categor
-> $category
24 (commented on others PR)
Maybe add 1 more space before />
25 (commented on others PR)
Maybe expand the CLI and GUI into Command Line Interface (CLI) and similarly for GUI. Not sure if this affects the PPP too.
26 (commented on others PR)
Will this be consistent in display error messages with the incoming fix for INDEX
?
27 (commented on others PR)
Add the spaces before the last |
28 (commented on others PR)
Add the spaces before the last |
29 (commented on others PR)
This is very small, but do you want to use 4.
?
30 (commented on others PR)
This might need a little rephrasing as we decided on a slightly different error message
31 (commented on others PR)
The INDEX
at the end of the sentence needs the `` too
32 (commented on others PR)
Javadoc needs param and return too but can be added in a future PR
33 (commented on others PR)
Thanks for updating my tests cases too
34 (commented on others PR)
do -> does?
35 (commented on others PR)
Maybe change to "each with its corresponding allocated room, if any"?
36 (commented on others PR)
remove "is"
37 (commented on others PR)
Maybe add the space after '>li>' and before '>/li> for the newly added point
38 (commented on own PR)
full stop is next line after predicate
39 (commented on own PR)
I will leave this to Colin
40 (other comment)
The inconsistency is due to the need to distinguish room.RoomNumber from issue.RoomNumber
41 (other comment)
I would like to discuss if the command history should also include failed commands. I think there is merit to mimic the same behaviour where the invalid command can be access via up and down arrow keys so that a Power User can edit the invalid command rather than retype it all.
If we do go down this path, I think a possible implementation is that each history entry will keep a field to keep the corresponding command used. Thus, if the field is null, it indicates an invalid command, otherwise it indicates a valid command.
42 (other comment)
I would like to discuss if the command history should also include failed commands. I think there is merit to mimic the same behaviour where the invalid command can be access via up and down arrow keys so that a Power User can edit the invalid command rather than retype it all.
If we do go down this path, I think a possible implementation is that each history entry will keep a field to keep the corresponding command used. Thus, if the field is null, it indicates an invalid command, otherwise it indicates a valid command.
Hmm, thanks for the suggestion. SunRez currently does not consume the user's input when a command is invalid, so a power user can already edit an invalid command easily.
I see, that makes sense. In that case, the suggested feature seems to be not needed.
43 (other comment)
Reopening as issue commands are not covered yet.
44 (other comment)
Note that auto format affected more lines than necessary
45 (other comment)
Duplicate of #203
46 (other comment)
Duplicate of #180
47 (other comment)
Duplicate of #89
48 (other comment)
I decided to just allow that and provide that in the constraint message. Will update the documentation later.
49 (other comment)
Hmm, if that is the case, then I think narrowing the valid formats would be better. i.e. MM dd hh (enforce double digits always)
50 (other comment)
Will KIV for future implementation in UG or DG
51 (other comment)
Will update UG to document requirements
@swayongshen
(37 comments)1 (commented on others PR)
Would it be possible to link directly to the quick start section as well?
2 (commented on others PR)
Do you think "clients' contact details" will be more suitable?
3 (commented on others PR)
Would it be better to have a static constant for each direction?
4 (commented on others PR)
Would it be better to have static constant for each direction?
5 (commented on others PR)
Is using "sorts" instead of "sort" better as it follows the convention used by the other commands?
6 (commented on others PR)
Do you think that we could use 'insurance policy' instead of 'policy' because it would be more intuitive for the i/ tag that we are using? At least for this section. It seems fine when we are talking about the policy
command.
7 (commented on others PR)
Maybe you forgot to change some information after copying them from find
command.
8 (commented on others PR)
Is there a use for this logger?
9 (commented on others PR)
Just to clarify Policy_ means even if different insurance companies have different ways to label their policies, they should all be labeled starting with Policy_? E.g. company A labels policies P#12345, company B labels policies Life#7900, the respective policy ids in ClientBook would be Policy_P#12345 and Policy_Life#75900.
10 (commented on others PR)
Would it be better to name the method getPolicyUrl? The if-present characteristic of it is represented by the fact that Optional is used.
11 (commented on others PR)
Perhaps a grammatical error here? Is there a reason why the original comment was changed?
12 (commented on others PR)
Would it be good to also update the user guide to reflect this required format?
13 (commented on others PR)
associated with a selected client?
14 (commented on others PR)
Maybe "delete client contact" instead, to be consistent with add and edit.
15 (commented on others PR)
"hence" sounds redundant when the line is read.
16 (commented on others PR)
Could use INDEX
instead of "The index", to clearly indicate that you are talking about INDEX
in the command.
17 (commented on others PR)
This line suggests that only 1 optional attribute can be added, while one of the example below shows multiple optional attributes being used. This can be confusing to the reader.
18 (commented on others PR)
Did not state explicitly what the flags are used for. The usage is clear to us as we are the developers.
Also, would it be better to list the flags in a table? Idk
19 (commented on others PR)
A suggestion would be "The delimiter &
between keywords allows you to search for Clients using multiple keywords."
20 (commented on others PR)
Can draw similarities with list function. E.g. "Similar to the list command, optional attributes can be added to show only certain attributes in the search result"
21 (commented on others PR)
Aside from the example on sorting by name, do you think an example on sorting insurance policy is needed?
22 (commented on others PR)
Maybe "After setting a password, the application" or ClientBook instead of application.
23 (commented on others PR)
ClientBook's ClientBook password
24 (commented on others PR)
ClientBook's password is removed.
Suggestion: Future launches of ClientBook will not require a password?
25 (commented on others PR)
Currently the json is stored in a zip file regardless of whether it is locked. If its locked then there's a password to the zip file.
26 (commented on others PR)
A suggestion: "schedules a meeting on a particular date and time with a client in Clientbook"
27 (commented on others PR)
Is this line consistent with what is said for other similar features that require an index?
28 (commented on others PR)
Do you think having at least 1 screenshot to display the expected response will help the reader?
29 (commented on others PR)
This is missing in the user guide.
30 (commented on others PR)
Do you think the field name should be renamed to meetings to reflect that multiple meetings can be inside? Please also update other similar namings in this file.
31 (commented on others PR)
Could you abstract/SLAP some part of this to reduce the length?
32 (commented on others PR)
Although this is the default implementation by AB3, would it be better to do the typecasting only once?
33 (commented on others PR)
Do you think it is better to follow the existing convention? I.e name the list meetingList
just like policyList
.
34 (commented on others PR)
Does this imply that delete meeting deletes all meetings? Could you explain this implementation vs deleting just 1 particular meeting?
35 (commented on others PR)
Not sure how this works but does it validate the date? E.g. if I put 30 Feburary will it reject? It is up to you to decide if it is needed.
36 (commented on others PR)
Does this mean you did not update the test case to accomodate meetings?
37 (commented on others PR)
Is this meant to be in the production code or just a debug line?
38 (commented on own PR)
Done
39 (commented on own PR)
Have changed Tag into InsurancePolicy @ line 24. Will be keeping the JavaDoc comment to follow the JsonAdaptedTag class from which I adapted the code.
40 (commented on own PR)
Appreciate the feedback! However that was the format that came with the incumbent code e.g. DeleteCommand's equals().
41 (commented on own PR)
Yes, the original intent is for unlock command to work even without CURRENT_PASSWORD if ClientBook is not locked. However, in hindsight this is confusing for the user and I have changed CURRENT_PASSWORD to be a compulsory argument in the UG.
42 (commented on own PR)
That is a great suggestion actually.
One possible way would be to encrypt a password file using a secret key within our code which when the program runs, will be decrypted and stored in program state and encrypted immediately.
The user can then enter lock without any parameters to lock using the old password.
However, I do feel that the effort to return ratio is rather minimal as it does not make our program any more tailored for our user than what already exists.
43 (commented on own PR)
Good point there, I was looking at the same API a few days ago too. The methods ZipFile.isEncrypted() and ZipFile.extractAll() did not specify which type of ZipException was thrown. The try blocks are separated because I was using the second exception to return false, while the first try block was used to catch the error thrown when checking if the zip file is encrypted.
44 (commented on own PR)
It was to make it clear during usage that there is no password involved as someone reading it may interpret as entering an empty password.
45 (commented on own PR)
Fixed.
46 (commented on own PR)
Thanks for the feedback! Turns out String.split() will return an array with 1 element when the string is an empty string. A similar problem in UnlockCommandParser has also been fixed.
47 (commented on own PR)
I agree, I have updated the method's name to improve clarity.
48 (commented on own PR)
You are right. Actually carrot probably refers to just ^. Will be changing to what you have suggested.
49 (commented on own PR)
I believe the test name is correct because I'm testing the equals method to be successful when two UnlockCommand
with the same currentPassword
fields are tested to be equal.
50 (commented on own PR)
That's a comment from the code base, no idea.
51 (commented on own PR)
I think so too. Haha
52 (commented on own PR)
Fixed.
53 (commented on own PR)
Fixed.
54 (commented on own PR)
Where? Because there is already an entry for meet
in this feature summary.
55 (commented on own PR)
done.
56 (commented on own PR)
fixed.
57 (commented on own PR)
Most of the commands have 1 line of spacing between consecutive examples, except for find
command because it has many examples. Is there a specific command that you are referring to?
58 (commented on own PR)
Sounds good.
59 (commented on own PR)
fixed.
60 (commented on own PR)
Sure it will be helpful in the case where someone who is not tech-savy actually uses our application but there won't be such a scenario because the only people who will be using ClientBook are the PE testers.
61 (commented on own PR)
Fixed
62 (commented on own PR)
Changed to Graphical User Interface
63 (commented on own PR)
its used as complement to the word minus and not standalone so I used brackets instead of code
64 (commented on own PR)
Done.
65 (commented on own PR)
Done.
66 (commented on own PR)
Done.
67 (commented on own PR)
I feel that it may be too much bolding around the area.
68 (commented on own PR)
Fixed.
69 (commented on own PR)
Done, also updated the red color to be darker.
70 (other comment)
No idea why gradle build fails on Github when it passes on my system.
71 (other comment)
lgtm
72 (other comment)
Thanks for the review. Will be merging it
73 (other comment)
Some of the links can be updated to point to our repo. Currently they are pointing to ab3's repo.
74 (other comment)
I recommend you clone this https://github.com/swayongshen/tp/tree/add-lock and do some general testing.
75 (other comment)
I have implemented the new feature of saving the old password. When the user calls the lock command to set a new password, the password will be stored in an encrypted file named keystore in /data/.
After unlocking ClientBook, the next time the user tries to lock ClientBook without a password, the old password will be decrypted from the password file and added to the state of the program and the password file will be encrypted immediately.
76 (other comment)
LGTM! Perhaps you might want to add this in to the User Guide too?
You are right, I have added it to the features
section as well as created a Summary of Keyboard Shortcuts
section.
77 (other comment)
Cleaned up UG in time for PE dry run. Tasks left:
Group and color code features
Clarify whats identifier and attributes
Also need to improve purpose of each feature/command. Currently quite pointless.
78 (other comment)
Edit command also has similar behavior which needs to be fixed.
79 (other comment)
One more comment: for Insurance Policies, can we also add into the UG saying that they are uniquely identified by the PolicyID and PolicyURL pair? So this means that the user can enter 2 policies of the same ID, but link them to different documents.
This is currently being done in the code.
If you have any alternatives, do let me know so I can update the code accordingly.
How about "a client cannot own 2 policies with the same policy ID and URL."
I noticed in the code that duplicate input for tags are simply ignored. Perhaps in the UG we might want to add that duplicate/repeated input will be ignored for tags and policies? Since these two can accept multiple objects, as compared to repeated address/names/phone numbers, where we simply choose to take the last input.
Added "if duplicate X are entered in a command. only 1 will be added to the client" in the attributes and identifier table.
80 (other comment)
How about "a client cannot own 2 policies with the same policy ID and URL."
Perhaps "... with the same policy ID and URL pair"?
I think even though what you've suggested sounds clearer to a technical person as well as PE testers, it could be unclear to a non-technical reader like Serene.
@wongkokian
(37 comments)1 (commented on others PR)
I think it would be better if you could sort the user stories by priority.
2 (commented on others PR)
I think the numbering for this extension should be 1a1.
3 (commented on others PR)
I think this use case should resume at step 3 as the list would still be shown even after the error message, so ClientBook does not have to show it again.
4 (commented on others PR)
A suggestion would be "2a. The list of matched clients is empty."
5 (commented on others PR)
Same here. A suggestion would be "2a. The list of matched clients is empty."
6 (commented on others PR)
Would be nice if can add a screenshot of how the feature works.
7 (commented on others PR)
Would it be possible for the success message to output the attribute that was specified as well? Like "Listed all clients with address attribute as filter."
8 (commented on others PR)
A suggestion will be to do "if (!isAttributeSpecified()) {".
9 (commented on others PR)
One suggestion would be to use switch statements.
10 (commented on others PR)
Same here. Suggestion to use switch statements.
11 (commented on others PR)
Suggestion to name this isFirst to isFirstAttribute to make it more understandable.
12 (commented on others PR)
Same here for the isFirst boolean as mentioned above.
13 (commented on others PR)
I think there is a typo here. Should be "...client management tasks faster than traditional...".
14 (commented on others PR)
Would it be better to define what is "home folder"?
15 (commented on others PR)
Instead of "jar file" maybe you can put "clientbook.jar" with a markup to be more specific?
16 (commented on others PR)
Adds a client named John Doe along with his details to ClientBook.
17 (commented on others PR)
Index has to be within the range of the list as well.
18 (commented on others PR)
Maybe can include an image for the "list -policy" command, since the "list -phone -policy" one already has one.
19 (commented on others PR)
Also can add "An optional attribute option can be added to show the list of matched clients with only the specified attribute."
20 (commented on others PR)
The image format is different from the other images (e.g. the title bar not shown).
21 (commented on others PR)
I think it is okay to remove the OR search part because I think the user might not understand what it is.
22 (commented on others PR)
Same here, about the index being in range of the list.
23 (commented on others PR)
I am not sure if these 2 lines should be in this policy command section. Feels like it should be stated in the add/edit command section where the policies are added/edited.
24 (commented on others PR)
Same here with the index within range.
25 (commented on others PR)
Will be good if can describe how the sort by policy command displays the list. Maybe add an example.
26 (commented on others PR)
I think there is a typo with "exclamation".
27 (commented on others PR)
How about "Copy the file to the folder where you want to store the ClientBook application and your client information."?
28 (commented on others PR)
Yeah, this is much clearer!
29 (commented on others PR)
Yeap, that works too!
30 (commented on others PR)
Like a screenshot of what happens when you perform "sort -i -dsc".
31 (commented on others PR)
I think this part is missing the "FLAG/KEYWORD [& MORE_KEYWORDS]..." part.
32 (commented on others PR)
I think this key should be excluded from the merge.
33 (commented on others PR)
I think its better to show the format as "[i/POLICY_NUMBER... [-MODE]]..." or something like that because the mode only needs to be specified when there is a policy number provided. Correct me if I am wrong.
34 (commented on others PR)
Would be nice if you can mention how the user can do a replace, which is by not including the "-MODE".
35 (commented on others PR)
Not a big issue but it would be good if the conditions in the if-else statements can be abstracted to make reading it easier.
36 (commented on others PR)
I think theres a typo here for "Deletes".
37 (commented on others PR)
Will be good if the Ui image can be updated to reflect client contacts that have some policy URLs, meeting details and relevant tags.
38 (commented on own PR)
Yeah, I just followed the original AB3 convention and used their way of expressing booleans like this. So I don't think I will be changing it as doing so will also mean changing the naming convention of all similar booleans in the existing AB3.
39 (commented on own PR)
Thanks for pointing this out! I have made the changes.
40 (commented on own PR)
Yup, I intended for it to check the name only, so I have changed the method. Thanks!
41 (commented on own PR)
I have inserted assertion errors in the methods you mentioned. Thanks!
42 (commented on own PR)
Thanks for the suggestion! I have renamed the object to make it less confusing.
43 (other comment)
LGTM 👍🏻
44 (other comment)
Closes #9
@yungweezy
(35 comments)1 (commented on others PR)
I think maybe we can use student
instead of stu
to improve readability
2 (commented on others PR)
Possibly change the use of 'acc' and 'el' here too
3 (commented on others PR)
The change.next()
method controls the position of an iterator that goes through the discrete changes in the Student List. Whenever there is a change the listener catches these changes and triggers the contents of the onChanged
function. The while loop will terminate after all tracked changes are iterated. Here's the API
4 (commented on others PR)
Yeah, I believe the "calling" to update the ListView is abstracted away in the implementation of ObservableLists in JavaFx under the Observable collections.
I think the reason why we're using ObservableLists is properly summarised in this article.
A ListView
bounded by List
will not update upon changes, but a ListView
bounded by ObservableList
will.
5 (commented on others PR)
Correct me if i'm wrong, is this a particular coding standard I do not know of?
6 (commented on others PR)
Might not need to check for same sessions?
7 (commented on others PR)
{@code name}
8 (commented on others PR)
I believe this.value
would be better? 🤡
9 (commented on others PR)
I believe this.fee
would be better? 🐔
10 (commented on others PR)
Lazy efficient way, I like! 👍🏼
11 (commented on others PR)
I believe this.value
would be better? 🐷
12 (commented on others PR)
whitespace missing after @JsonProperty
13 (commented on others PR)
Are we leaving these commented out?
14 (commented on others PR)
This removeSession
method seems to be very destructive. Could this probably be student.getListOfSessions().remove(sessionIndex)
? 💥 💣
15 (commented on others PR)
Oh shizzle mah nizzle. Roger doger!
16 (commented on others PR)
Hahaha, wait I placed them in brackets because I'm not sure which term we should go with 😄
17 (commented on others PR)
Maybe a typo here? 😅
18 (commented on others PR)
Not sure if capitalization of session here would make a difference.
19 (commented on others PR)
Not sure if capitalization of session here would make a difference since it is referring to the class Session in the javadocs.
20 (commented on others PR)
Right I guess Java 11 is more appropriate here, unless the distinction isn't that obvious on the page.
21 (commented on others PR)
Sounds good, we should merge the individual changes first.
22 (commented on others PR)
Agreed, dd MMM YYYY
would be more reader friendly.
23 (commented on others PR)
Is this perhaps TuitionCard.fxml
for consistency?
24 (commented on others PR)
Not sure if it's just on my end but i notice the clear
not showing up as intended.
25 (commented on others PR)
Not sure if it's just on my end but i notice the STUDENT_PHONE_NUMBER
and GUARDIAN_PHONE_NUMBER
not showing up as intended inside of the block.
26 (commented on others PR)
I believe line 121 has an extra indentation.
27 (commented on others PR)
Works fine for me, probably some browser issue?
28 (commented on others PR)
True, also this could possibly make use of the ℹ️ notation we have included.
29 (commented on others PR)
Do you want to throw an error if numOfSession
is less than 1 instead, easier for debugging in the future.
30 (commented on others PR)
python? hahaha 😆
31 (commented on others PR)
Just checking if this should be caught earlier on, before checking if overlap.
32 (commented on others PR)
Might want to add the command deleteSession
in UniqueStudentList
.
33 (commented on others PR)
I am not entirely sure if the inclusion of the seedu.address
and model
boxes adds much value here. Maybe the rest can look into this too!
34 (commented on others PR)
Hmm is this change here intended? 🤔
35 (commented on others PR)
For the architecture sequence diagram, perhaps we can change it to a more generic example that @enhao25 sent on the group so that we don't need to update if we were to change commands formatting, and to use this diagram to show the interactions that occur for all commands. ☕
36 (commented on own PR)
Agreed, I will make the necessary changes.
37 (commented on own PR)
Agreed, I will make changes on the next commit
38 (commented on own PR)
Will need to write test cases for Students!
39 (commented on own PR)
I will check again if there are conflicts with test cases. But the reason for the change was to fix a formatting for the study level field because currently some of the entries differ, eg. "P5", "Sec 2", "JC 1. I understand the consideration for possible less trivial cases like "Uni CS3230", but I believe we should standardise the format, at least for pre-generated data.
40 (commented on own PR)
Did you mean line 80?
41 (commented on own PR)
Possibly for use in the future to differentiate session objects, since we do not assign unique ids to sessions yet. If this is not needed I can remove it!
42 (commented on own PR)
Yes, I wanted to check if the same student with different list would assert to be equals, however I had forgotten to change BOB
back to Alice
nice spot!
43 (commented on own PR)
Yes you are right, I will resolve in the next commit!
44 (commented on own PR)
ohmilorde thanku
45 (commented on own PR)
Placeholder for next iteration where we add student names into session, will remove for now.
46 (commented on own PR)
I would think so, so that we know the two panels are in sync and the first session will always be from the first student in the list. What do you think?
47 (commented on own PR)
Good point 😊 Will make changes!
48 (commented on own PR)
Yes correct, this is because of the OneBasedIndex
that is returned in getSessionIndex()
. I will add in a comment to make this clearer!
49 (commented on own PR)
Answered in previous comment!
50 (commented on own PR)
Thanks for spotting, will update.
51 (commented on own PR)
Hahaha, yes I am aware, just thought that I might need to change it next time so might as well copy first. Will remove later on if it is not needed!
52 (commented on own PR)
Were these from AB3? Okay I'll remove the extra forward slashes.
53 (commented on own PR)
Thanks for spotting! 🙏🏻 arigathanks
54 (commented on own PR)
Gotcha
55 (commented on own PR)
True! I'll add in more comments to explain the functionality!
56 (commented on own PR)
Good spot! Forgot about this, will add the corner case in. Thanks!! 😁
57 (commented on own PR)
Okay sure, will change it!
58 (commented on own PR)
Okay, I'll explore this later!
59 (commented on own PR)
Have made changes under the method Student
that does the operations.
60 (commented on own PR)
Postponing this to be completed by Friday. Issue tracked in #158.
61 (commented on own PR)
Yes agreed, added to #158
62 (commented on own PR)
Yes not needed, but was trying to use the abstraction of a SessionDate
to feed through. Will try having a dummy Time
for 1.4.
63 (commented on own PR)
Gotcha, will amend! Thanks.
64 (commented on own PR)
Think it would be safer to postpone this to 1.4, because I'll need to abstract away from SessionDate
or use a dummy time in SessionDate
65 (commented on own PR)
Oh crap forgot about that thank you!
66 (commented on own PR)
I briefly included it on line 378. Do you think it is better if I brought it up to line 365?
67 (commented on own PR)
Updated #158 for this. Thanks all.
68 (commented on own PR)
Okay I went ahead to add the extra description on line 364. Let me know if this works.
69 (commented on own PR)
Are you referring to line 58? I am aware of that and have thought about it and decided to add it in as well since it wouldn't make sense for me to just check for the range strictly between sessionStartDate
and sessionEndDate
and have the method named hasOverlappingSession()
, though a change in method name to hasOverlappingWithinSession()
may be possible. Let me know what you think.
70 (commented on own PR)
I have decided to leave it for now, because if I were to remove equality checks, we would have to modify some logic in our test cases. So any test cases that are of the exact same time, should not be used for the test in overlap. A little counterintuitive, but yeah let me know what you think.
71 (commented on own PR)
Will make changes!
Thanks
72 (commented on own PR)
Will do in 1.4! Thanks!!
73 (commented on own PR)
Thank you good sir and mdm, I will make the necessary changes 😃
74 (other comment)
Duplicate commit
75 (other comment)
A sketch of the UML with a Tuition class that contains both Student and Session class.
Realised it doesn't add much value to @JonahhGohh's UML but here's a glimpse if anyone's interested.
76 (other comment)
I also noticed all the commands that @enhao25 changed to name it as ____StudentCommand got reverted. Is it intentional?
It is intentional if we were to follow the current implementation of Tuition class, where all student parameters are explicitly declare in the Tuition constructor.
So there will only be 1 TuitionCommand which is the AddTuitionCommand right? The rest like list, delete, find, etc are still StudentCommands?
This is a mistake, good spot, should be AddStudentCommand.
77 (other comment)
Resolved in #43
78 (other comment)
Resolved in #34
79 (other comment)
Change of implementation to hold list of session as attribute of Student class.
Dear me 😭
80 (other comment)
Closed due to change of implementation.
81 (other comment)
Resolved in #53
82 (other comment)
Pulled to #67.
83 (other comment)
Pulled to #73
84 (other comment)
Some comments on testing.
Can you add a parseSessionCommand_list() test case in AddressBookParserTest? #76
Okay! I'll add them in.
85 (other comment)
For quick reference, here's an image of the current UI:
86 (other comment)
LGTM. Not sure if we still need the d in 'd:ListStudentCommand' in your UML sequence diagram. I think that d was used in DeleteCommand and it might be confusing here. I think the best representation is to remove the 'd's all together.
Okay will make changes on the next commit
87 (other comment)
Yeap LGTM. However, there is something that I noticed when checking out the PR and testing it which is outside of the scope of this issue. The duration class allows a duration of 0. Do you think it would be better if we only allow value > 0.
Good point, I'll add a data validation for this!
88 (other comment)
Forgot to account for overlap within defined recurring period. Will continue tomorrow.
89 (other comment)
Duplicate of #139.
90 (other comment)
Merged to #158.
91 (other comment)
I have a feeling this happened from editting the json directly.
92 (other comment)
As per the UG delete_session
delete session should delete tuition sessions (inclusive of recurring sessions). Perhaps the confusion is when delete_rec_session
allows not to delete recurring session, but to a single session within a recurring session.
93 (other comment)
As mentioned in the UG, TutorBuddy is optimised for fast typing users with most of our controls replicable using commands.
There is no mention of clicking on the student, session, and calendar items in the UG because there is no intention of any additional functionalities at the moment. 👨🏼🍳
94 (other comment)
Change command feedback to "A session already exists at this time!"
95 (other comment)
Seems to work for us sorry 😭
96 (other comment)
Please don't be ridiculous 🤡
97 (other comment)
Accepted! Will need to simulate adding a session when loading from a json.
98 (other comment)
LGTM! Might do a check when we parse from json for each startup in #264 .
99 (other comment)
I think you'll have to make changes to
model/UserPrefs.java
as well. Doesn't seem to createtutorbuddy.json
on isolated launch with these changes.
^ With the above changes, we'll probably not need to exclude
preferences.json
from gitignore.
Woo thanks!
100 (other comment)
Resolved in #150
101 (other comment)
Yes, not done yet
@ong6
(35 comments)1 (commented on others PR)
You can actually use the Equals method in this same class since the equals method checks for if method, address and tags are the same.
2 (commented on others PR)
nice catch on the naming here
3 (commented on others PR)
Since we are not done with EditCommand yet, perhaps we should keep this as a to-do since when we change EditCommand it may lead to some more errors here.
4 (commented on others PR)
the space there is actually on purpose so that if you enter the commands, there has to be a space else it won't work. Unless u wanna allow them to do -xmethod
5 (commented on others PR)
wow cool diagram
6 (commented on others PR)
The grind for comments is real
7 (commented on others PR)
nice addition.
8 (commented on others PR)
why did you change this to 0?
9 (commented on others PR)
Ohh, ok nice
10 (commented on others PR)
minor typo? should be and it is
11 (commented on others PR)
I think this should be called command right?
12 (commented on others PR)
"Possible sources of error may include but are not limited to: "
might be a better way to put this
13 (commented on others PR)
Uhh, should this be here
14 (commented on others PR)
why is orElse used, i think a assert before this statement is more apt since there always should be a method and address, hence the method will never be empty
15 (commented on others PR)
maybe can add a OR between the 2 examples, or can put 1. 2. ...
16 (commented on others PR)
i think can remove these after warren does his addition
17 (commented on others PR)
this beatify implementation does not hold if we change the toString output of feedback, endpoint or anything related to these comments. Hence I will have to reject this implementation of beautify.
18 (commented on others PR)
this can be
show -> shows
19 (commented on others PR)
this can be
show -> shows
20 (commented on others PR)
do -> does?
21 (commented on others PR)
executed -> executed by the user
22 (commented on others PR)
nice catch on fullstop
23 (commented on others PR)
should we add what a list is also?
24 (commented on others PR)
yep, did not see the previous line oopps
25 (commented on others PR)
ok i think can just merge then
26 (commented on others PR)
ok makes sense
27 (commented on others PR)
i see you have removed a fullstop
28 (commented on others PR)
'Use the help command for more information' can be refactored into MEsSSAGES. Would make changing this easier
29 (commented on others PR)
same as above
30 (commented on others PR)
same as below
31 (commented on others PR)
same as below
32 (commented on others PR)
same as below
33 (commented on others PR)
same as below
34 (commented on others PR)
same as below
35 (commented on others PR)
same as below
36 (commented on own PR)
Don't worry, I do not allow duplicate endpoints, the check is as follows -> if the method and address same it is considered as a duplicate.
37 (commented on own PR)
newline indentation must be 2 tabs wide, some checkstyle error flagged it so no choice
38 (commented on own PR)
Once again, duplicate endpoints have been considered to issues solved
39 (commented on own PR)
no, i got rid of all the tests using typicalendpointlist cause idk what they are for
40 (commented on own PR)
yea, keep this in here.
41 (commented on own PR)
nice
42 (commented on own PR)
👍
43 (commented on own PR)
yea i copy paste
44 (commented on own PR)
yea, was planning to refactor this
45 (other comment)
As the QA for my company, I would like to organize my tasks so that I can identify what needs to be done next
46 (other comment)
Yay
47 (other comment)
I agree with yong liang
48 (other comment)
Don't remove the List command, it shows a complete list of all the API's after the find command. There is no way to do that after the find command is run
49 (other comment)
Okie @ong6 introduced the whitespace in
PREFIX_METHOD
in this commit 5 days ago so I think's best for him to do the review.
@ong6 so heres a more in depth view of whats wrong with PREFIX_METHOD = "-x "
using an example of "edit 1 -x "
when passed into the parseIndex method of ParserUtil.java, it calls
string trimmedIndex = oneBasedIndex.trim(); which trims the string to "edit 1 -x".
then because PREFIX_METHOD is "-x " (with the space), StringUtil.isNonZeroUnsignedInteger(trimmedIndex) will be true, because trimmedIndex will be equal to "1 -x", which leads an exception of the EditCommand.MESSAGE_INVALID_INDEX being thrown, instead of a more specific error message from the parseMethod method.
Also, if PREFIX_METHOD = "-x ", doing "edit 1 -t " or "edit 1 -h " does not work to remove tags/header because of the same reasons as stated above.
TLDR: there should be no space in all prefixs, unless you want to change a ton of other codde
Nice spot!
But then this would allow users to do edit 1 -tdog (without space), I guess it would be possible to remedy this somewhere else, but if I'm not wrong, the original AB3 code came with a "/t " (with space) so when changing to "-t " I kept the space as well.
However, after checking out your commit, I think that the problems that the space brings are substantial so this is a good change overall!
50 (other comment)
Uhm, I just tested it. But it seems that the clear
command does not show this picture? Is it only meant to be used for list
when there are no endpoints?
51 (other comment)
This is actually unfixable, due to the nature of URL's there is no way to check (for certain) if a URL exists or not
52 (other comment)
Update UI to make it look nicer?
53 (other comment)
Quotation issue, will fix
54 (other comment)
Fix: improve error message
55 (other comment)
@tjtanjin yes, there is still a response field
56 (other comment)
Some line breaks are not fixed yet, do we just accept this PR first (so we can start editing)? Thoughts @AY2021S2-CS2103T-T12-4/developers
this also, should we remove this since it's quite a low level design aspect and not really that important?
57 (other comment)
This is our last resort, only approve if I can't get it done programmatically by sat
@chewterence
(34 comments)1 (commented on others PR)
Should this be edited or removed?
2 (commented on others PR)
Perhaps the responsibilities for each member should be updated?
3 (commented on others PR)
should we have an overloaded constructor?
4 (commented on others PR)
perhaps this method may seem a little too long? maybe we could use a stream here
5 (commented on others PR)
what is the difference between passenger and commuter?
6 (commented on others PR)
Is this method meant to be person?
7 (commented on others PR)
did you mean stub?
8 (commented on others PR)
did you mean stub?
9 (commented on others PR)
i noticed the same potential problem in the rest of the code
10 (commented on others PR)
small thing but, perhaps this could be renamed getTripDayAsString() as we have discussed
11 (commented on others PR)
small thing but, perhaps this could be renamed getTripTimeAsString() as we have discussed
12 (commented on others PR)
perhaps we should call TripDay and TripTime's source.getTripDayAsString() method so as to not violate the law of demeter?
13 (commented on others PR)
should these be the actual values in the native types?
or should these be the strings, because i believe command test util is to test the input that the user puts in (in the form of a string). To test if it is correct or wrong input
14 (commented on others PR)
this is ok because its testing the constructor, not the command
15 (commented on others PR)
this is ok because its testing the .equals method, not the command
16 (commented on others PR)
i believe this should be ok, because its for the purpose of constructing a passenger
17 (commented on others PR)
Did you mean this or is it a typo?: "@code Passenger}s"
18 (commented on others PR)
did you mean the phone number to verify? not name.
19 (commented on others PR)
what do you mean by "the name as a phone?"
20 (commented on others PR)
did you mean "phone number"
21 (commented on others PR)
i noticed the same problem as phone here.
22 (commented on others PR)
i noticed the same problem as phone here.
23 (commented on others PR)
i noticed the same problem as phone here.
24 (commented on others PR)
i noticed the same problem as phone here.
25 (commented on others PR)
perhaps you could add a fullstop here
26 (commented on others PR)
fullstop here too
27 (commented on others PR)
perhaps a fullstop here too
28 (commented on others PR)
could this lambda have a more suitable name?
29 (commented on others PR)
Should the message be "both pool and passenger lists have been cleared"? as suggested in issue #192
else LGTM
30 (commented on others PR)
should these be magic literals? could we have a sample price constant from the test util classes here?
31 (commented on others PR)
should "2.34" price literal string could be used here instead?
32 (commented on others PR)
i noticed the same potential minor issue at other parts of the code
33 (commented on others PR)
could we use the invalid names and invalid phone number constants that we have defined in the test utils?
34 (commented on others PR)
should this be note instead of warning?
35 (commented on own PR)
rectified
36 (commented on own PR)
thanks, i have rectified this issue.
37 (other comment)
LGTM 👍 Closes #5
38 (other comment)
LGTM 👍
39 (other comment)
Resolves issue #57
40 (other comment)
41 (other comment)
Update methods to not violate law of demeter
42 (other comment)
PR #121 resolves the issue with unpool command working with the updated model
43 (other comment)
issue resolved with #128
44 (other comment)
#121 resolves this issue after model is updated with poolList
45 (other comment)
issue resolved with #111 as overloaded constructor inside person class is no longer required
46 (other comment)
issue is now closed because we have decided not to implement this feature, but rather another feature.
47 (other comment)
Also we are intending to change the "power users" part for CS2101
48 (other comment)
Thank you for your valuable suggestion @deyixtan, our team has discussed the use of the prefixes and has decided to stick with tag/
for the tag prefix and believe it should not take a toll on the usability of our product. Perhaps in future iterations after CS2103, we could consider relooking into this, nevertheless a good suggestion 👍
49 (other comment)
the bug report is invalid as the highlight is grey
50 (other comment)
this feels like it should be not of an issue. The purpose of the information in the editing data file section is to remind/reiterate to the reader where the data would be stored, whereas in the FAQ it would part of a frequently asked question that the reader could easily search for.
It serves two distinct purposes, and thus should not be of an issue to repeat information.
@dvdweien
(33 comments)1 (commented on others PR)
is the space supposed to be there?
2 (commented on others PR)
should there be two seperate commands for property and appointment?
3 (commented on others PR)
shouldn't it sort the filtered list?
4 (commented on others PR)
should it be filterby or sortby? same for the rest below
5 (commented on others PR)
yeah, sure
6 (commented on others PR)
waaaah thanks for helping me update mine!!
7 (commented on others PR)
nice!
8 (commented on others PR)
is there supposed to be something else after the and?
9 (commented on others PR)
would it be better to initialize it in the constructor?
10 (commented on others PR)
i think it could be permanent, but idk
11 (commented on others PR)
Thanks for doing this!
12 (commented on others PR)
thanks!
13 (commented on others PR)
why is the example usage removed?
14 (commented on others PR)
that makes sense
15 (commented on others PR)
i like the colour you chose
16 (commented on others PR)
izzit possible to have something to toggle between light and dark themes?
17 (commented on others PR)
i see
18 (commented on others PR)
undone? idk my english is quite jialat
19 (commented on others PR)
i think there is a typo, i think us should be is
20 (commented on others PR)
asking price might have decimals too, would using the regex defined in asking price help?
21 (commented on others PR)
may i know whats changed here?
22 (commented on others PR)
waaah bro, thanks man!!!!
23 (commented on others PR)
nice catch!
24 (commented on others PR)
ROFLMAO
25 (commented on others PR)
shouldn't it be FindPropertyCommand?
26 (commented on others PR)
thanks again man!!!
27 (commented on others PR)
would "Forgot when you are supposed to meet Simon again? Let's try finding it out!" be better?
28 (commented on others PR)
maybe only set the text to red when the time has passed like you have already done in appointment and property card?
29 (commented on others PR)
thanks man!
30 (commented on others PR)
actually, would using the ArgumentTokenizer be better?
31 (commented on others PR)
same for here
32 (commented on others PR)
thanks man
33 (commented on others PR)
thanks for this too!
34 (commented on own PR)
i was thinking like the recognized fields will still be updated and shown to be updated in the list, should i phrase it differently?
35 (commented on own PR)
personally, i think i would prefer 1 if i were a user but would also want to be alerted that there were erroneous fields however, i think it would be best to follow the add command. Like if add aborts the whole command, i think edit should abort the whole command too just to be consistent
36 (commented on own PR)
Ahhh, pesky IDE. Thanks!
37 (commented on own PR)
Thanks for catching it! should all be fixed now
38 (commented on own PR)
Thats true, would changing the default values of property builder be alright though, then I wouldn't have to edit again
39 (commented on own PR)
Thanks for catching this! should be fixed!
40 (commented on own PR)
You have a good eye! should be fixed!
41 (commented on own PR)
thanks! fixed!
42 (commented on own PR)
shld be fixed!
43 (commented on own PR)
noted, though i should warn you, i would probably be doing the same thing for appointment to keep it consistent XD
44 (commented on own PR)
IDE complains that the variable might not be initialized if i dont put leh
45 (commented on own PR)
that would be one way of doing it, i just find this way easier
46 (commented on own PR)
I was thinking of using this to validate that there is only 1 new/proceed/cancel
47 (commented on own PR)
but have not written the code out fully yet
48 (commented on own PR)
yeah, cos it has to implement the status interface, and completion is like the end point. Is there a better way to resolve this issue?
49 (commented on own PR)
nice catch! i used scenebuilder, it must have changed things automatically
50 (commented on own PR)
same for this
51 (commented on own PR)
and this
52 (commented on own PR)
thanks!
53 (commented on own PR)
moved it! thanks!
54 (commented on own PR)
i think you are right, made the prefixes consistent!
55 (commented on own PR)
removed it!
56 (commented on own PR)
removed this too! thanks!
57 (commented on own PR)
added more words, is it better now?
58 (commented on own PR)
updated!
59 (commented on own PR)
updated too! thanks for catching it!
60 (commented on own PR)
added the code to ensure that there is only 1 new/proceed/cancel
61 (commented on own PR)
oh yeah, nice catch!
62 (commented on own PR)
added a check to raise an exception if proceed is used on a property with a Completion status
63 (commented on own PR)
moved it!
64 (commented on own PR)
same as above
65 (commented on own PR)
oh yeah! thats a good idea! thanks!
66 (commented on own PR)
Revamped the prefixes!
67 (commented on own PR)
yeah, these too
68 (commented on own PR)
Nice catch! thanks will change it
69 (commented on own PR)
yepp!
70 (commented on own PR)
yeah, yet to learn plantUML will add next week
71 (commented on own PR)
maybe we can tackle find in another pr?
72 (commented on own PR)
its just a convenience function, i can use the static variable as well but it would look like "String.format(MESSAGE_MISSING_ALL_PROPERTY_APPOINTMENT, command, command, command,
command, command, command)"
73 (commented on own PR)
i see
74 (commented on own PR)
changed it!
75 (commented on own PR)
ok! changed it!
76 (commented on own PR)
i tried my best to match the find format!
77 (commented on own PR)
I tried elaborating more, Is there a better way to phrase it? Was wondering if adding Option, Sales Agreement, Completion to the glossary would be good as well
78 (commented on own PR)
added in elaboration!
79 (commented on own PR)
added in a table!
80 (commented on own PR)
i tried my best to follow it
81 (commented on own PR)
changed the table to a list
82 (commented on own PR)
oops i was being too lazy, changed it!
83 (commented on own PR)
ooooh nice thanks! added it!
84 (commented on own PR)
oh yeah! nice! thanks! added it!
85 (other comment)
should I close this pull request?
86 (other comment)
LGTM, thanks for the tremendous effort
87 (other comment)
i think the refactoring is pretty good, can make things easier
88 (other comment)
open to suggestion for colours as well, I can try modifying the whole thing to be more like a light theme oso. I just generally prefer dark themes.
89 (other comment)
i think can lose the underline, maybe the bold isn't needed oso. I was just confused why every date was red
90 (other comment)
in that case, i think just bold is enough underline looks a little ugly to me
91 (other comment)
@candyhy what do you think of this thinking
I think it is too colourful, better to keep it minimalist. That purple doesn't go with the blue either
what colour would you suggest?
92 (other comment)
can I also suggest keeping the text wrapping fixes and changes to Ui as separate pull requests? cos I think its imperative to fix the text wrapping but the Ui may not be satisfactory yet
created a separate pr for text wrap!
93 (other comment)
LGTM but do you want to put the class diagram as a separate PR since you are not using it in the UG yet?
oops, my bad. Removed it!
94 (other comment)
@candyhy what do you think of this thinking
I think it is too colourful, better to keep it minimalist. That purple doesn't go with the blue either
what colour would you suggest?
I think its better to keep the background white/black. shouldn't have more than 3 colours in a Ui in my opinion
like this?
or this?
95 (other comment)
96 (other comment)
- This shouldn't be execute(undo) right
- I think should enclose the parameter in quotes cuz its supposed to be a string
- should be dotted line for returning
- This is a constructor call, so the label shouldn't be 600000 I think. Either leave it blank or change it to a call to create a new Option object
- should be dotted line for returning
- should be dotted line for returning
- missing returning dotted line (if everywhere else has a returning dotted line, then u should probably include one here too)
Thanks! I will fix 1-6 but for 7 i was thinking that cos its a void method and doesn't return anything so I omitted it
97 (other comment)
Your diagram:
My diagram:
For this, I do agree that the 3 child classes should have a composition relationship with
Offer
, and I will update my diagram. But do you think there should be a dependency arrow fromStatus
toOffer
as well?
I don't think there should be a dependency arrow from Status to Offer as Status doesn't actually have any knowledge of Offer, Offer is only referenced in the classes that implement Status
98 (other comment)
the updated sequence diagram
99 (other comment)
I don't think there should be a dependency arrow from Status to Offer as Status doesn't actually have any knowledge of Offer, Offer is only referenced in the classes that implement Status
Ohh, because I thought
Status
has a method returning anOffer
object. Hmm, not really sure whether to include this dependency arrow...
Oh yeah! I forgot about that, that method isn't currently being used now should i remove it? If it shouldn't be removed then i will add the dependency arrow
100 (other comment)
I don't think there should be a dependency arrow from Status to Offer as Status doesn't actually have any knowledge of Offer, Offer is only referenced in the classes that implement Status
Ohh, because I thought
Status
has a method returning anOffer
object. Hmm, not really sure whether to include this dependency arrow...
Oh yeah! I forgot about that, that method isn't currently being used now should i remove it? If it shouldn't be removed then i will add the dependency arrow
Ohh, its not being used? Then ya please remove and I will update my diagram. Thanks!
I just removed it!
101 (other comment)
oops, got merge conflict now
@oeiyiping
(32 comments)1 (commented on others PR)
Correct me if I'm wrong - DisplayFilterPredicate.test() will return true if field is specified, and only these specified fields will be set as visible and managed. If that is the case, can I clarify what you meant by "returns true (...) should be hidden"?
2 (commented on others PR)
Looks good to me 👍
3 (commented on others PR)
Just spotted this: "@param displayFilterPredicate that returns true if prefix linked control should be hidden",
looks to be the same mistake as before (ie. returns true if (...) should be shown). Maybe check the other areas where this line was copy-pasted, to see if there are other uncaught ones.
4 (commented on others PR)
Just spotted this: "@param displayFilterPredicate that returns true if prefix linked control should be hidden",
looks to be the same mistake as before (ie. returns true if (...) should be shown).
5 (commented on others PR)
Correct me if I'm wrong - this Command class is different from the one in address/logic/commands right? There is one Command class in that path, so I'm not sure if having two classes of the same name would be confusing.
6 (commented on others PR)
Good point, thanks for the explanation. No problem here then.
7 (commented on others PR)
Maybe rename the boolean variables to eg. isX, so that the variable name immediately implies a boolean value. In general it is clear that these are boolean values, but perhaps a rename would be safer to comply with the textbook recommendation.
8 (commented on others PR)
Your suggestion sounds good to me!
I am aware that some of the pre-existing boolean variables from AB3 might not seem to exactly comply with the textbook recommendation, and have thought about just leaving the variable names as is. However, I currently feel that it is better to err on the safe side, as it is always possible for the reviewer to argue that "just because it was originally named this way, doesn't mean it is correct". What is your opinion on this matter?
9 (commented on others PR)
Nice, LGTM now! Will be marking this conversation as resolved.
10 (commented on others PR)
Maybe it would be easier for the reader to understand what this line means, by providing an example of how the index of the focused contact can be autofilled. At the moment, it might be difficult to visualize how this feature works (referring to the point on autofilling index
).
11 (commented on others PR)
Slight typo for component
12 (commented on others PR)
Maybe capitalize Tab
for consistency with the other two keys?
13 (commented on others PR)
Perhaps rename this to better imply that this is a boolean.
14 (commented on others PR)
Should be "[INDEX]..." instead.
15 (commented on others PR)
Should be "[INDEX]..." instead.
16 (commented on others PR)
Slight grammar issue: person should be persons instead
17 (commented on others PR)
Might be good to specify highlight to be green, since specificity helps a lot in UG.
18 (commented on others PR)
Same slight formatting issue for [INDEX...] as mentioned.
19 (commented on others PR)
Slight grammar issue: return message should include persons instead.
20 (commented on others PR)
Oh okay, I was referencing this clause in our UG, so I made the suggestion for consistency with our UG.
21 (commented on others PR)
That makes sense, I think original notation [INDEX…] should be fine, as long as it is explained what that means in the UG.
22 (commented on others PR)
That's fine then, the image should do the job well too.
23 (commented on others PR)
Yeap looks good to me!
24 (commented on others PR)
Would it be better to include this line as part of "Notes on email
command:", to be consistent with the rest of the commands?
25 (commented on others PR)
Not sure if this was intended, but the Other Commands | coming soon
is not in its own row.
26 (commented on others PR)
Perhaps change audiences to users to maintain consistency with the rest of the UG.
27 (commented on others PR)
text base -> text-based
28 (commented on others PR)
CLI based -> CLI-based,
command that are -> commands that are
29 (commented on others PR)
multiple optional argument -> multiple optional arguments
each argument are -> each argument is
30 (commented on others PR)
Perhaps change one-and only one- to just only one, and bold it to retain the emphasis of only one item being allowed. I understand that one and only one has a specific technical definition, but non-techie readers probably will not understand the technical meaning, and will likely think that we are just being overly verbose.
Just my opinion on this, not a major issue at all. Feel free to ignore if you disagree.
31 (commented on others PR)
(yes, person objects that a user has to scroll down to are selected) is written in a different tone than the rest of the UG, which the user might find jarring or informal.
Let me know if the following suggestion explain shown properly:
(the visible person list refers to the entire list, if it is too long, the user might have to scroll through the list to view all the selected persons)
32 (commented on others PR)
Maybe change scroll down to scroll through, as the scroll direction depends on which part of the list the user is currently at.
33 (commented on own PR)
Good catch, will be merging after fixing the typo.
34 (commented on own PR)
Oops, forgotten to include it in my PR description. I provided the reasoning in the relevant commit message, so I'm going to paste it here:
This change fixes bug where parser previously cannot distinguish
between eg. -p
and -pp
. Now, the parser can differentiate between
-p
and -pp
, as -p
is not a front substring of -pp
due to
the whitespace char at the end of -p
.
Accordingly, AddressBookParser has been modified such that it only
removes leading whitespaces, and no longer removes trailing
whitespaces. This is to account for optional options such as -r
,
where -r
will not be registered as a valid key since the
whitespace char is trimmed away before the parsing of keys.
Not removing trailing whitespaces should not affect the eventual
values of the keys, as tokenizer will still trim the parsed value
before returning it. ie -a test street
still results in
the address value being test street
, without trailing spaces.
35 (other comment)
LGTM
36 (other comment)
LGTM!
37 (other comment)
I realised that the help text for
add
command does not include spaces between the flag and the value. I'm guessing theedit
command will have this issue too
Thanks for catching this. I'll fix it up in my next PR, after checking the other commands that might be affected.
38 (other comment)
@oeiyiping will you be updating the diagrams for your changes to Remarks?
Was intending to settle diagrams in 1.4. Unless we are aiming to complete diagrams in this milestone?
39 (other comment)
After testing the new prefix parsing implemented in this PR, I think there are fundamentally a few problems here, especially with the filter and alias command.
- The filter command is having trouble working as intended. For example, if I want to filter by address, I would need to input
filter -a
with whitespace behind.
- Similar, typing
filter
should clear all existing filters. However, without trimming the trailing whitespaces, the filter command will recognise the command slightly different and instead filter the list of persons to show just the name.
- Alias commands are also having problems when parsing and checking the validity of the commands to be aliased.
Thanks for pointing the errors out, I should not have assumed that these cases are already accounted for in the current testcases. I will see how else I can fix this bug while preserving the Bash-like format. Changing this PR to draft until then.
40 (other comment)
Will need to update
helpMessage.png
to reflect the new user guide.
Are you going to be packaging the HTML pages for offline viewing? If so, what is the implementation?
Sure, will update the image file accordingly.
I am not intending to push the offline implementation in this milestone. Current intention is to implement an offline alternative in 1.4 as a refactor, as I intend to explore other options of implementation.
41 (other comment)
Looks good overall, aside from the following matters:
- Out-of-bounds index does not return any error message in ABB, and there is no other indication that the input index is invalid.
Might be good to reference the error behaviour in
delete
command for consistency.
- Some minor docs issues.
- I feel that it would it be good to include a disclaimer in ABB itself and/or in the UG stating that the
For point 3, I'm not exactly sure that is within our control? I've tried on Windows (logged in), macOS (logged in), Ubuntu (not logged in, Thunderbird installed) and on Ubuntu.
On Ubuntu, it will first open up the default browser (FireFox) and subsequently opening up Thunderbird, prompting me to login.
So I believe that on most OS, if the user is not logged in, the mail client will prompt the user. I feel that I don't have to document that down.
Yeah I agree with your point, just thought it would be good to err on the safe side. Agree that this seems unnecessary, but I feel that it can serve as a fair warning to prevent "non-techies" from blaming us for what they (mistakenly) feel is a flaw in our app. What I had in mind is just a one-liner disclaimer eg. "The user must be logged into an email application to benefit from this feature.".
42 (other comment)
Hi Prof Damith, the javafx webkit and media packages are used to open HTML files from within the app. Our intention is to allow users to open the user guide (which is a .html file) directly within the app itself. May I know if the large file size is an issue (and negatively affect the grading)? If so, we will remove the packages and explore other options.
43 (other comment)
Closing this PR down, will be resolving this issue on a new PR.
44 (other comment)
I noticed this as well, I found out that this always occurs after using SceneBuilder (probably auto-edited the fxml file to be v15). Did not encounter any issue regarding this matter, but I feel that we should edit the affected fxml files back to v11 before submission.
@lirc572
(32 comments)1 (commented on others PR)
extra space before />
2 (commented on others PR)
Is the space intended to be there?
3 (commented on others PR)
Missing space
4 (commented on others PR)
Why call it ProjectsFolder instead of something like ProjectList?
5 (commented on others PR)
Extra quotation marks?
6 (commented on others PR)
here can perhaps use Project.addEvent()? since it does not seem to be used anywhere
7 (commented on others PR)
This is not a problem with the test but I think we should put project name instead of project is the message?
8 (commented on others PR)
Perhaps we can change all occurences of Index.fromOneBased(1)
to INDEX_FIRST
in this file?
9 (commented on others PR)
To be consistent, 1
should not be bold
10 (commented on others PR)
Perhaps it is better to put this under a level 3 heading named others
or something? It looks a bit strange to me to have a level 4 heading parallel with level 3 headings.
11 (commented on others PR)
According to seedu md standard, we should put an empty line after each heading:
12 (commented on others PR)
same here
13 (commented on others PR)
same here
14 (commented on others PR)
same here
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)
same here
19 (commented on others PR)
same here
20 (commented on others PR)
same here
21 (commented on others PR)
same here
22 (commented on others PR)
same here
23 (commented on others PR)
same here
24 (commented on others PR)
same here
25 (commented on others PR)
same here
26 (commented on others PR)
same here
27 (commented on others PR)
Should this be Contact List
instead since we have only one such list?
28 (commented on others PR)
Yes! That would be nice!
29 (commented on others PR)
Perhaps successful or succeeded?
30 (commented on others PR)
here also
31 (commented on others PR)
It seems that other commands' MESSAGE_SUCCESS do not capitalize all words
32 (commented on others PR)
Ohh okay sure! Then I think can leave it like this!
33 (commented on own PR)
My bad, forgot to change this line after copying from the sample.
34 (other comment)
@samuelfangjw Changed as requested!
35 (other comment)
General hashcode contract states that
When hashcode is called repeatedly on an object, should return same result unless object has been modified.
Two objects that are equal (according to equals method) should return the same hashcode
Different objects do not have to return the same hashcode, although it's good if it does so.
Wah I never knew there is such a contract. Will do it tomorrow!
For the third point I think it should be the other way round. Objects that are not equal should return different hashcodes as far as possible.
I think it should still be pretty safe to check for different hashcodes for different objects since it should be quite unlikely to collide. Do you think we should remove this check?
36 (other comment)
Tested on all modern hardware we have access to.
@Eriksen2411
(31 comments)1 (commented on others PR)
Agreed
2 (commented on others PR)
wah this is complicated, do you want to split it one by one before return
3 (commented on others PR)
A complicated return also
4 (commented on others PR)
tks for this change
5 (commented on others PR)
You forgot to include the project-index in this message_usage
6 (commented on others PR)
As Samueal commented on my PR before, the getZeroBased method alr checks for negative value, so this is unnecessary
7 (commented on others PR)
tks for the change
8 (commented on others PR)
I'm not sure about this 2, one you taken from address field right, and the original I take from project name.
9 (commented on others PR)
I think for the rest of the pr, it's ok
10 (commented on others PR)
hey samuel I'm not sure about this, but as I see it from javadoc format of other methods, there should be a blank line between description of method and parameter, return, throw
11 (commented on others PR)
I think this is a complicated boolean expression as code quality says about it. You can choose to keep that or separate them 1 by 1
12 (commented on others PR)
should this have a javadoc
13 (commented on others PR)
this 2 method missing javadoc also, as for other builder, you put javadoc for constructor also
14 (commented on others PR)
Ahhh, OK I think that is all I can spot for now. For cases to test, I cannot think of other cases to add.
15 (commented on others PR)
add a blank line in javadoc
16 (commented on others PR)
leave a blank line here too
17 (commented on others PR)
here also
18 (commented on others PR)
can we use requirenonnull for this
19 (commented on others PR)
0 here sounds a little bit like a magic number here, should you put another variable for it?
20 (commented on others PR)
1 here also
21 (commented on others PR)
Here are the variable for it right. you can mention it if possible
22 (commented on others PR)
leave blank line
23 (commented on others PR)
can we use !requrireNonNull here
24 (commented on others PR)
I think for the rest I agree
25 (commented on others PR)
I think this should be userInputInvalidProjectIndex
26 (commented on others PR)
This should be userInputInvalidTodoIndex also
27 (commented on others PR)
I think here should rename also so that it refers to index of project not project.
28 (commented on others PR)
This one's javadoc should have a return statement
29 (commented on others PR)
This one also
30 (commented on others PR)
add blank line for javadoc
31 (commented on others PR)
here also
32 (commented on own PR)
yeah i think its weird yesterday too, but not sure thanks for the comment
33 (commented on own PR)
@vevek Am i addressing your full name correctly
34 (commented on own PR)
resolved
35 (commented on own PR)
resolved
36 (commented on own PR)
resolved
37 (commented on own PR)
resolved
38 (commented on own PR)
resolved
39 (commented on own PR)
resolved
40 (commented on own PR)
resolved
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)
ah for this actually the invalid format is thrown above
the parseIndex has its own exception throw for invalid Index. So no problem with this, and actually I change it because if invalid index, the correct exception should be thrown (invalid index), not (invalid fomat)
47 (commented on own PR)
resolved
48 (commented on own PR)
resolved
49 (other comment)
Closes #22
50 (other comment)
Great work 😃 . Can I also suggest adding the role "Developer" to everyone. I feel that it would help reflect our roles clearly.
Agreed
51 (other comment)
Cannot merge because of irrelevance to the project
52 (other comment)
closes #5
53 (other comment)
Omg i just did it again. So sorry @vevek 😃))
54 (other comment)
closes #49
55 (other comment)
i have implemented the addEto command. Please give some input. For the codecov test, that might be because of missing tests. For now, you guys can comment on any logic faults in my code. I will try my best to complete the documentation and the tests for this command asap.
56 (other comment)
And also, i have tried out the code but seems like only the command result shown up. Is it because of the ui not ready yet? Or maybe I don't know how to make that shown up. Please let me know.
57 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
58 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
59 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
60 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
61 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
62 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
63 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
64 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
65 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
66 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
67 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
68 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
69 (other comment)
This issue no longer fits the project as the idea of project changed. Closed for ease of distraction.
70 (other comment)
/by is an optional parameter so no need in the example
71 (other comment)
closes #316
@jay9645
(30 comments)1 (commented on others PR)
I'm a little confused about why current_password is wrapped in square brackets. Does this mean that if a password has not been set, then unlock command does not need a password?
2 (commented on others PR)
For the return statement of this method, the comments helped me to understand the code easily which is already great, but I was thinking whether the expression would be a little less complicated if you separate the boolean statement into multiple named boolean variables.
For example
@Override
public boolean equals(Object other) {
isSameObject = other == this;
if (isSameObject) {
return true;
} else {
isLockCommandObj = other instanceof LockCommand; // instanceof handles nulls
isCurrentPasswordEqual = currentPassword.equals(((LockCommand) other).currentPassword);
isNewPasswordEqual = newPassword.equals(((LockCommand) other).newPassword);
return isSameObject || (isLockCommandObj && isCurrentPasswordEqual && isNewPasswordEqual);
}
}
3 (commented on others PR)
If we remove the password here, does that mean that every time the user unlocks the ClientBook, the next time he locks he needs to set a password again?
If that's the case, then I'm thinking if it is possible that we don't remove password on unlock and store the password, so the user only needs to specify a password for the lock command when he/she first adds or changes his/her password. Then subsequently, if he/she locks and unlocks it will just use the same pasword.
edit: after thinking about this more, I realised that its not so easy to store the password securely within the app (I was thinking in UserPrefs? but not sure if it is secure or even possible), and perhaps this one time lock and unlock is enough. What do you think?
4 (commented on others PR)
This method is fine, but are the 2 try-catch blocks are mainly to differentiate between the 2 types of exceptions? I was thinking whether you can condense it into one try-catch block, and in the catch block, you differentiate the 2 cases using the ZipException that was caught.
Actually I was looking at the docs, and found that they didn't really specify what ZipException each method threw, but on their ZipException class, there is a getType() method, which returns a ZipException.Type. (https://javadoc.io/static/net.lingala.zip4j/zip4j/2.7.0/net/lingala/zip4j/exception/ZipException.Type.html)
Perhaps you could check if it is possible to differentiate the cases by checking the exception type? If not then your method is completely fine as it is
5 (commented on others PR)
Just a little bit of unnecessary white space 😃
6 (commented on others PR)
Is there some reason you chose to overload the attemptUnzip() method with this? It seems to me that you could directly call attemptUnzip("") where you want to call this method.
7 (commented on others PR)
I see, that makes sense. Perhaps it could be clearer if you leave a comment or rename the method to indicate that it is for cases where no password was involved?
8 (commented on others PR)
I see, since the API doesn't specify then it's difficult to catch the different cases ourselves. In that case then two try-catch blocks is a nice way to circumvent that👍🏼
9 (commented on others PR)
I agree that the effort to reward ratio is pretty low since it's not a particularly core feature of our application. In that case, let's keep this extension in mind, and if we have time after other core features then we can possibly come back to it in the future.
10 (commented on others PR)
I see, then let's follow the format 😁
11 (commented on others PR)
For the name of this method, I was wondering if the name may be slightly inconsistent with the other get methods of this class, since other get methods in this class returns the object, while this method returns String. A suggestion would be to name it something like nameAndPoliciesToString()
12 (commented on others PR)
There seems to be a lot of white space here. Is there a reason you chose to have a new line after each of the statements?
13 (commented on others PR)
Do you think that naming this method formatOuterBox()
is more specific? since there are other VBox instances in other classes or if we extend the UI
14 (commented on others PR)
I see, I think I didn't notice the line breaks were separating each of the variables/objects. now it makes sense!
15 (commented on others PR)
I suggest changing this to ATTRIBUTE
, since we used attribute to specify in other parts of the document
16 (commented on others PR)
Similar to the previous comment, I suggest using ATTRIBUTE
instead of property
17 (commented on others PR)
This line is a bit confusing, may be instead of "more than 1", it is more suitable to be "at least 1"? Alternatively, we can also say "index must be within the numbers listed on the clientbook"?
18 (commented on others PR)
A little nitpicking, but instead of leaving it as the default case, it might be better to specify each specific case, like
The CURRENT_PASSWORD
field can be omitted if ClientBook is not yet locked.
When CURRENT_PASSWORD
and NEW_PASSWORD
are both specified, ClientBook verifies the current password before locking ClientBook with the new password. >- specifying this case instead of leaving it as default case
When CURRENT_PASSWORD
and NEW_PASSWORD
fields are both omitted, ClientBook will attempt to lock itself using the last used password that is safely stored on your device.
19 (commented on others PR)
Awesome addition of the column!
20 (commented on others PR)
By the way, I tried to update the data directly from the json file, but not sure if it is because of the zip, but it doesn't work. After I change the json file, I start up the app and it goes back to the previous state. Maybe you guys can test it also, and if it doesn't work, we just remove the "Advanced users are welcome to update data directly by editing that data file." part
21 (commented on others PR)
Is the name isShowShortcuts
a little confusing? I realise the original AB3 code uses show... as booleans but I wonder if there is a more intuitive name? (if you feel its okay then can leave it as it is)
22 (commented on others PR)
shortCutCommand
equality doesn't seem to be checked in this equals method
23 (commented on others PR)
From the name of this method, it seems that it is a duplicate of the equals method. Upon looking at the comment, if this method only checks name, then a suggestion would be to name this method isSameShortcutName()
24 (commented on others PR)
Is there a better alternative to having these methods empty? If they are not going to be called, perhaps you could throw an assertionError? If not it is also fine if it doesn't affect the test cases.
25 (commented on others PR)
In this method, I got a little confused because the Shortcut
object was named shortcut
, while the List>JsonAdaptedShortcut>
is called shortcuts
. A suggestion is to name the List>JsonAdaptedShortcut>
jsonAdaptedShortcuts instead.
26 (commented on others PR)
No problem!
27 (commented on others PR)
For these 2 methods, I thought it might be slightly inconsistent that all the other methods in ParserUtil class named parse... parses some string into an object, while these two methods trims whitespace and checks validity. I personally suggest renaming them to isValidShortcutName/Command. What do you think?
28 (commented on others PR)
Some more empty methods where you might want to throw AssertionError if they are not supposed to be called.
29 (commented on others PR)
Another empty method where you might want to throw AssertionError if they are not supposed to be called.
30 (commented on others PR)
Another empty method where you might want to throw AssertionError if they are not supposed to be called.
31 (commented on own PR)
Made the changes to differentiate command words in this section in the latest commit
32 (commented on own PR)
Added tags back in
33 (commented on own PR)
Added the quick start into the user guide, but release is not yet ready.
34 (commented on own PR)
Great suggestion, done!
35 (commented on own PR)
Great suggestion, made the change.
36 (commented on own PR)
Done!
37 (commented on own PR)
Done!
38 (commented on own PR)
Good point, done!
39 (commented on own PR)
Ah right that makes sense, will change it
Edit: after thinking about it, i realise that putting it like that might imply that a flag can be specified for each policy, since the user can put in multiple policies. My implementation was no matter how many policies you put, you can only set 1 flag. e.g. i/P123 i/P321 -remove
removes both
40 (commented on own PR)
Done!
41 (other comment)
Just did some testing, feature works perfectly! The only small issue is when you input unlock
without any parameters, the feedback message to user is
Invalid command format!
lock: Locks ClientBook with a password.
Parameters: CURRENT_PASSWORD(if any) NEW_PASSWORD
Example: lock 12345
And also I think maybe it would make it clearer for the user if we add in the user guide a sentence to specify that when lock is used without parameters, then it will be locked with the current stored password.
After these 2 then its LGTM for me!
@yhtMinceraft1010X
(30 comments)1 (commented on others PR)
For LICENSE, there's no need to change person to task.
2 (commented on others PR)
For README, the AddressBook should not be changed since we are referencing the original.
3 (commented on others PR)
For this one, I think its best to get rid of this line if we don't have a team email.
4 (commented on others PR)
I think we should keep addressbook in this file. The link might break and we're still not sure how DevOps will change from here.
5 (commented on others PR)
Likewise for this one, I'm of the opinion we should keep the addressbook here
6 (commented on others PR)
I think we should delete the tutorial docs from our repo since they are unlikely to have any purpose in the future.
7 (commented on others PR)
I think this unused code block has to be removed.
8 (commented on others PR)
I wouldn't describe sorting as replace task in javadoc.
9 (commented on others PR)
Personally, I prefer to initialise both index and tags in the constructor. But I'll leave it up to you to decide.
10 (commented on others PR)
I don't think all the other prefixes (apart from PREFIX_TAG) are necessary under tokenize method.
11 (commented on others PR)
I think the UG should also mention what happens when the time is not keyed in. E.g. The current time on your computer is taken.
12 (commented on others PR)
I recommend moving this block of code to before editedTask. Avoids unnecessary generation of the editedTask object if there's no tag to delete.
13 (commented on others PR)
Not sure why there is a new Use case 9 right before the NFR section.
14 (commented on others PR)
Nice to see the new commands here. But I think the new mod command for finding by module should be included + the top list of commands and bottom summary should also be updated before the UG update is complete
15 (commented on others PR)
To add on, maybe the valid module criteria should be listed at the top of the UG, before the instructions. But I think it can be added in later.
16 (commented on others PR)
Not sure why there's a minus sign here
17 (commented on others PR)
I see. Sounds good
18 (commented on others PR)
I have a few questions:
Wouldn't the edit command suffice for changing the recurrence of a task?
If we decide to keep the recur command, is there a way to remove recurrence without using edit command? I think users may be confused as to why the way to remove recurrence is not obvious.
19 (commented on others PR)
Actually, for 1, scratch the question. We also have a tag command and edit command that can handle tag changes.
20 (commented on others PR)
If it works, I guess it can be used
21 (commented on others PR)
I think this link can be kept, but it has to be changed back to AddressBook level 4 since that was the original project from which this came out.
22 (commented on others PR)
Same scenario as the one for ModuleCard
23 (commented on others PR)
Looks good, although I think the line for empty recurrence should also mention that the prefix r/
must be kept.
24 (commented on others PR)
I think the new modules should also be included in the UG table
25 (commented on others PR)
I think the UG Features
section should also be updated to describe the task colours.
26 (commented on others PR)
Noticed a spelling mistake mut
instead of must
.
27 (commented on others PR)
I think "You may contain multiple keywords." should be changed to "You may key in multiple keywords"
28 (commented on others PR)
Nice!
29 (commented on others PR)
Not sure what you mean by "follow its format"? Does it mean that the optional parameters have to be in the order shown in the format?
30 (commented on others PR)
In my last edit to the UG, I added seconds to some examples. If we are getting rid of seconds, we need to remove them from the command examples.
31 (commented on own PR)
To clarify, the module field should be changed to a proper module code?
32 (commented on own PR)
To clarify, is the deadline here supposed to change?
33 (commented on own PR)
I assume here the ADDRESS should be changed to DESCRIPTION. Is there any other changes to make?
34 (commented on own PR)
I was considering using enum but I couldn't get the constructors to work. Maybe I'll look into it in v1.3.
35 (commented on own PR)
I've changed it to show how many tasks there are across all 3 workload ratings for a single module.
36 (commented on own PR)
Just to clarify, it's just re-add the original workload count implementation?
So we have:
-One variable counting how many low workload tasks there are
-One for medium workload tasks
-One for high workload tasks
-One that sums up the workload rating translated to int
37 (commented on own PR)
I chose to mention learning portal here since some features of MB-3.5 can also be found in LumiNUS (like showing which tasks have closer deadlines). Not sure what else to add though.
38 (commented on own PR)
If I'm not wrong, how markdown works is that the 1s here would automatically be converted to 1,2,3,4...
So it's a deliberate choice.
39 (commented on own PR)
I chose to add it so that it's more obvious that its referring to workload. Looking at the original task details could be somewhat disorienting
40 (other comment)
Pull request closed to avoid accidental merging into the team repo.
41 (other comment)
Pull request closed given that changes are small. All changes are moved to the done status PR
42 (other comment)
I just swapped out the modulebook.jar file.
I think what happened was the build process was done on a branch that was not updated. Remember to pull the team master branch into your local repos and forks.
43 (other comment)
Personally, I think that if 2 commands share the exact same functionality, we might as well keep to one single command.
44 (other comment)
Duplicate #164
45 (other comment)
Thank you for the report.
At the time of the PED, we are still finalising the GUI colours. Therefore, we chose to defer updating the GUI descriptions till v1.4
46 (other comment)
Duplicate #186
47 (other comment)
Duplicate #186
48 (other comment)
Duplicate #166
49 (other comment)
Related #159
50 (other comment)
Related #159
51 (other comment)
Related #159
52 (other comment)
Related #159
53 (other comment)
Related #159
54 (other comment)
Related #181
55 (other comment)
Related #181
56 (other comment)
Related #181
57 (other comment)
Related #148
58 (other comment)
Related #159
59 (other comment)
Related #174
60 (other comment)
Issue closed due to link mentioned above.
61 (other comment)
Closed due to link mention above
62 (other comment)
Related to #182
I also don't think any normal user would put a date that is all the way in the past anyway.
63 (other comment)
Closed for deferral to beyond v1.4
64 (other comment)
Closed for deferral to beyond v1.4 and to reduce issue tracker clutter
65 (other comment)
Closed for deferral to beyond v1.4 and to reduce issue tracker clutter.
66 (other comment)
Closed for deferral to beyond v1.4 and to reduce issue clutter tracker.
67 (other comment)
Closed for deferral to beyond v1.4 and to reduce issue tracker clutter.
68 (other comment)
Related to #165
69 (other comment)
Add-on based on reports from related issues: To update user guide images to include latest GUI + resize to fit entire screen
70 (other comment)
It's an IllegalArgumentException that was not propagated to the GUI.
Specifically, it was generated during the attempt at generating new Tag() in the FindTagCommandParser.
71 (other comment)
This is most likely a case where the user guide wasn't clearly written to explain that only the absolute last argument for duplicate parameters is taken, regardless of its validity as well as the validity of other arguments.
72 (other comment)
More module codes have been added. Currently, we cannot make modules optional so if professionals wish to use this app, I would recommend using any supported module code as a decoy.
Issue closed.
73 (other comment)
We may come back to this in a future update. Issue closed since it is not within the scope of v1.4
74 (other comment)
Closed because graph centering is not that important as a feature flaw.
75 (other comment)
UG has been updated to include summary table of prefixes.
76 (other comment)
Closed because changing the way deadline validity is tested is beyond the scope of v1.4
77 (other comment)
LGTM
78 (other comment)
Solved
79 (other comment)
Includes respective parsers (especially RecurCommandParser)
80 (other comment)
overall LGTM!
Just a question, the size of the new images have been fixed too right as they are v small in our current UG haha
I did the screenshots in full window. Shouldn't be a problem.
81 (other comment)
Users are most likely going to key in different parameters. It's unlikely anyone would key in the same parameters but even if they do, it's most likely intentional and the tasks are not altered in any significant way.
Either way, I think the severity of this should be much lower.
82 (other comment)
LGTM
83 (other comment)
For a very large integer like "100000000000000", it appears to be a limitation from Java's own parseInt() method, but I noticed that the error message for signed and zero integers was too general.
@pyuxiang
(29 comments)1 (commented on others PR)
2 (commented on others PR)
3 (commented on others PR)
Use case ends.
4 (commented on others PR)
1a1. HippoCampus shows an error message.
Use case ends.
5 (commented on others PR)
Extra space.
+ "for more information refer to https://ay2021s2-cs2103-w16-3.github.io/tp/UserGuide.html\n"
6 (commented on others PR)
Extra newline.
+ "help [COMMAND]";
7 (commented on others PR)
Missing exit
command.
+ "edit INDEX [-n NAME] [-p PHONE_NUMBER] [-e EMAIL] [-a ADDRESS] [-t TAG]…\u200B [-b BIRTHDAY]\n"
+ "Exiting application: "
+ "exit\n"
8 (commented on others PR)
This is a little confusing. By deleting the contact when no more tags exists, it suggests that contacts cannot have no tags. But what about a workflow where user wants to delete all tags, then assign new tags from scratch?
Should the delete -t
command just deal with tag deletion alone, and not touch contact deletion at all?
9 (commented on others PR)
I think using the current add
, find
, delete
for contact processing is a good idea, like what you mentioned. That's essentially the existing commit: "deletes all contacts with at least one of colleague or cs2103 tags".
It's the proposed change that I don't quite catch, i.e. "delete tags in contact + delete contact if there is an exact tag match".
PS: On this note, going by your suggestion to use tags
exclusively for tag, we can do tag deletion using the same command, e.g. tags -d -t colleague -t cs2103
. Sounds like a pretty self-consistent idea.
10 (commented on others PR)
Cos the happy path is to delete the contact. Then ONLY IF it is tagged with another tag then the contact is not deleted.
What about the case where I want to delete all people with that tag? I can't quite think of a viable workaround for this, except manually searching for and deleting the person, e.g.,
# Removing everyone tagged A requires `delete 1 2` instead of `delete -t A`
1. John (tag: A)
2. Grace (tag: A, B)
3. Bob (tag: B)
But I guess these issues only arose because we didn't define the feature well enough in the feature request.
11 (commented on others PR)
Missing space.
+ "Example: " + COMMAND_WORD + " -n Bob -t CS2030";
12 (commented on others PR)
Probably an extension of using string validation, difficult to predict all possible user errors.
13 (commented on others PR)
Might want to change to } else {
style recommended in this module.
14 (commented on others PR)
Screenshot of what @garyljj is referring to:
15 (commented on others PR)
* Parses a {@code String remark} into a {@code Remark}.
16 (commented on others PR)
* @throws ParseException if the given {@code Remark} is invalid.
17 (commented on others PR)
Perhaps best of both worlds: "You can write anything in the remarks, as long as it is not blank".
18 (commented on others PR)
Perhaps a more natural phrasing?
public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted the following people: %1$s";
19 (commented on others PR)
Might have to consider a different phrasing later, once the --append
flag for tags is added in as well. Should be fine for now.
20 (commented on others PR)
+ "OR " + COMMAND_WORD + " " + FLAG_REMOVE + ": Removes specified tag from all people in the filtered list.\n"
21 (commented on others PR)
The recursive string concatenation is technically quadratic here, though it's probably negligible for small number of Strings. Can consider .map(...).collect(Collectors.joining(", "));
from this SO post.
22 (commented on others PR)
If implementing, can consider allowing removeTagFromPerson
to return a boolean reflecting the tag removal success, just like the boolean isEdited = tags.remove(targetTag);
line you used in line 49.
23 (commented on others PR)
On a related note, since model.addState()
should not be called if no tag removal operations were performed, I think doing the check would be a good idea. Ties in with the same idea.
24 (commented on others PR)
Sure. If got time, I can probably do a quick separate PR for all occurrences.
25 (commented on others PR)
There is an existing predicate for tag testing, if intending to integrate with the existing Person
model. Will require addition of a new predicate to separately check for all tags.
for (Tag t: targetTags) {
Predicate<Person> predicate = new TagsContainExactTagPredicate(t.tagName);
for (Person person: personList) { // this can be refactored into separate method as usual
if (predicate.test(person)) {
deletedPersons.add(person);
}
}
}
26 (commented on others PR)
* @throws ParseException If an error occurs during parsing.
27 (commented on others PR)
PREFIX_DATE, event.getEventDate().value,
Update EventDate attribute reference, changed after refactoring of Date object in #180.
28 (commented on others PR)
I'm amazed that this works, because I don't actually see the overloaded method in KeyCombination
29 (commented on others PR)
Scratch that, it's the KeyCodeCombination class, not KeyCombination
30 (commented on own PR)
31 (commented on own PR)
@zhengruoxin yup, also noted here. I couldn't find a way to solve this invalid date mapping problem, without having to move towards manual date parsing. Was planning to document this quirk in the UserGuide and leave it be, since adding the wrong date is not within normal use anyway.
32 (commented on own PR)
Sounds good, it should be more efficient that way. Will make the change.
33 (commented on own PR)
This should be better:
Assuming in typical use scenarios, the number of unique indices specified is not large (pretty unlikely)
Since the application does not require strong performance optimization, readability should be a priority
Will apply suggestion and merge.
34 (commented on own PR)
Remove references to HashSet with change in algorithm, discussed below.
35 (commented on own PR)
Yes, very much intended, because sorting in "reverse upcoming" doesn't seem to have a use case. Will be documenting this eventually.
Think it's a good idea to support it?
36 (commented on own PR)
Thanks for the suggestion! Implemented the alternative algorithm as separately discussed earlier, see upcoming commit.
37 (commented on own PR)
Good catch thanks! This is a bug inherited from AB3.
38 (commented on own PR)
'''suggestion
private static final String SPECIAL_CHARACTERS = "!#$%&'*+/=?'{|}~^.-_";
'''
39 (other comment)
Quality requirement: HippoCampus should be usable by a novice who has never used a CLI addressbook before.
HippoCampus should be able to hold up to 1000 contacts without noticeable sluggishness in performance for typical usage.
Should store data locally only, in a human editable text file, for privacy reasons.
Technical requirements: HippoCampus should work on any mainstream OS with minimally Java 11 installed.
Notes about project scope: Should only be for a single user and should not require interaction with other users of HippoCampus.
A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.
The source code should be open source.
Glossary: Mainstream OS: Windows, Linus, Unix, OS-X
40 (other comment)
Duplicate of #17
41 (other comment)
Duplicate of #19
42 (other comment)
Description expanded in #22 #23 #24
43 (other comment)
LGTM
44 (other comment)
LGTM
45 (other comment)
No guarantees it'll work right out the box, but it's a start.
46 (other comment)
Confirmed working. Can close once all checks are done.
47 (other comment)
@nickyfoo commit at d1d7501. All completed.
48 (other comment)
Adhere to more generic command line conventions
49 (other comment)
For a more extreme (cherry-picked) examples, see these workflow runs:
https://github.com/AY2021S2-CS2103-W16-3/tp/actions/runs/607362934
https://github.com/AY2021S2-CS2103-W16-3/tp/actions/runs/588668416
https://github.com/AY2021S2-CS2103-W16-3/tp/actions/runs/586381555
https://github.com/AY2021S2-CS2103-W16-3/tp/actions/runs/585966335
MacOS delayed the check completion due to running 4+ mins.
50 (other comment)
Alternatives to dropping workflows include using skip actions
keyword in commit message to skip tests, but not a healthy habit to adopt.
51 (other comment)
LGTM
52 (other comment)
Courtesy of @nickyfoo, cannot reduce automated tests until one iteration is complete, for grading purposes:
https://nus-cs2103-ay2021s2.github.io/website/admin/appendixE-gitHub.html#tp-workflow
After following the given workflow for at least one iteration, optionally, you may adjust the process rigor to suit your team's pace. Here are some examples:
- Reduce automated tests: Automated tests have benefits, but they can be a pain to write/maintain. It is OK to get rid of some of the troublesome tests and rely more on manual testing instead. The less automated tests you have, the higher the risk of regressions; but it may be an acceptable trade-off under the circumstances if tests are slowing you down too much. There is no direct penalty for removing tests. Also note our expectation on test code.
- Reduce automated checks: You can also reduce the rigor of checkstyle checks to expedite PR processing.
- Switch to a lighter workflow: While forking workflow is the safest (and is recommended), it is also rather heavy. You may switch to a simpler workflow if the forking workflow if you wish. Refer the textbook to find more about alternative workflows: feature branches workflow, centralized workflow. Even if you do switch, we still recommend that you use PR reviews, at least for PRs affecting others' features.
Can postpone discussion until the time comes.
53 (other comment)
Duplicate feature already present as a Tag
in AB3.
54 (other comment)
Duplicate of clear
feature already present in AB3.
55 (other comment)
In particular, adjusting sample data to follow new functionality.
56 (other comment)
@zhengruoxin perhaps some ideas on additional datetime formats that we can provide: https://github.com/pyuxiang/ip/blob/master/src/main/java/duke/parser/DatetimeParser.java
57 (other comment)
Probably here, where the dimensions for the result display are specified:
Overall window size seems to be specified here:
58 (other comment)
Experimented a little with dynamic resizing by setting VGROW
to ALWAYS
, but it scales together with the person list UI pane, which seemed a little weird: there is no longer an intuitive fixed reference by which the application grows.
For more text, I think the more appropriate action is to limit help text to at most 4 lines.
59 (other comment)
According to the UserGuide, we're also removing the need for -n
to specify the name, i.e. add John
instead of add -n John
, but not yet implemented. We can open a separate issue for this.
60 (other comment)
Also need to change the help message.
61 (other comment)
Issue #81 opened to address the -n
prefix issue.
62 (other comment)
@Ellevy mentioned that find
and edit
also use the same -n
prefix, can maintain in add
for consistency.
The todo is now to change the syntax in the documentation to include the -n
prefix.
63 (other comment)
Courtesy of @glennljs: Issue only happens when gradle run
command is used. If built normally and open the jar, it works fine. Perhaps grade adds the font as a separate resource internally.
64 (other comment)
If not fixing, can assign tag::wontfix
, remove the priority
label, and close the issue.
65 (other comment)
Duplicate of #49
66 (other comment)
Duplicate of #67
67 (other comment)
PR erroneously requested, closed.
68 (other comment)
Note that merging this is a big priority - will introduce a lot of merge conflicts with subsequent PRs.
69 (other comment)
Doesn't the current algorithm involve iterating through the list to check for tags? A quick is_tag_found
boolean flag probably works.
If want to extend to existence of multiple tags, can create a boolean flag array as well.
70 (other comment)
Duplicate of #86.
71 (other comment)
Any suggestions to implement this? Thinking of an InputHistory
class native to the parser / executor class. Probably also need to register event handlers for up/down arrow keys in the input field box, see this SO post for a possible implementation guide.
72 (other comment)
@zhengruoxin just a heads up, in case you're busy, I'm currently working on a new PR to incorporate the use of LocalDate for validation. Should be done by today.
On Fri, 12 Mar 2021, 13:06 Zheng Ruoxin, @.***> wrote:
@.**** commented on this pull request.
In src/main/java/seedu/hippocampus/model/person/Birthday.java >https://github.com/AY2021S2-CS2103-W16-3/tp/pull/88#discussion_r592912610> :
value = EMPTY_BIRTHDAY_STRING;
isEmpty = true;
- }
- /**
* Returns true if a given birthday is an empty birthday.
*/
- public static boolean isEmptyBirthday(Birthday birthday) {
return birthday.isEmpty;
- }
- /**
* Returns true if a given string is a valid email.
*/
- public static boolean isValidBirthday(String test) {
return (test.toCharArray()[4] == '-') && (test.toCharArray()[7] == '-');
That's true. I considered LocalDate but wanted to keep to standardising using isValidBirthday boolean to check for validity. Will try to see if I can use both, else will switch to LocalDate. Thanks!
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub >https://github.com/AY2021S2-CS2103-W16-3/tp/pull/88#discussion_r592912610>, or unsubscribe >https://github.com/notifications/unsubscribe-auth/AG2V5DVZTIYF25ESV2G6A2TTDGOMZANCNFSM4Y34E7SA> .
73 (other comment)
Doing iterative addition of features, sample data will be updated concurrently. Not a singular feature.
74 (other comment)
Personally I'd avoid the highly ambiguous "11 Dec 02", partly because it's uncommon, and will succeed without raising errors for international users whose local formats follow "yy/mm/dd" instead of "dd/mm/yy". Perhaps enforcing the "yyyy" format will catch potential errors, or another option would be to allow users to customize the desired date format.
This might be a good reference: https://en.wikipedia.org/wiki/Date_format_by_country
Perhaps the formats we might want to support include the predominant little endian DMY format (exception is ISO format which should always be supported):
"yyyy-mm-dd" ISO-8601
"d.m.yyyy" German, Russian
"d/m/yyyy" French, Spanish
"d-m-yyyy" Hindi
with the associated long forms:
"mmm d yyyy" USA (+ "mmmm d yyyy")
"d mmm yyyy" Singapore (+ "d mmmm yyyy")
75 (other comment)
Closed, not implementing, since bottleneck is no longer workflow runs, but PR reviewing itself.
76 (other comment)
Implemented by #96
77 (other comment)
Is the deletion done across the board, or just for the filtered list?
78 (other comment)
Got confused a little: Isn't the undo command feature part of your PR, and not yet integrated into the master branch? Can raise this issue in the PR first, then open an issue from there if not implemented.
79 (other comment)
What's the syntax to test this?
Courtesy of @nickyfoo: Just "undo". It will undo the last change to the AB (by add, delete, edit or clear).
80 (other comment)
INFO: Added state to stateHistory. Current number of states is: 2. Currently on state: 1
is the logged message. Seems like we can have a feature to easily redo
as well.
81 (other comment)
Merge master branch by updating newly introduced Remark feature to include long-form "--remark" prefix in CliSyntax
.
82 (other comment)
As per previous discussion, this GUI design will be phased out in favor of Event cards (see commit 02452dd).
Part of the reason includes: (1) lack of horizontal real estate, (2) not a critical feature (selection of tags will be supported by commands in the upcoming PR #116).
83 (other comment)
Depends on which we choose to implement. The alternative, with perhaps the flag --exact
, is also viable.
84 (other comment)
Even if decide to keep it as exact by default, i think would be good to minimally make it non case-sensitive.
Yes, exact is already case-insensitive.
85 (other comment)
Changed default behavior to partial matching as requested by @garyljj.
86 (other comment)
Should filtering by "people who do not have a birthday specified" be implemented as well? From the perspective of the welfare IC, they might be interested to check for people whose birthdays are not yet populated, so that they know to approach them for this additional detail.
87 (other comment)
LGTM
88 (other comment)
Are we going to throw error if the user types in wrong specifications? like eg.
list -partial
orlist partial
orlist Bernice
. Currently if i'm not wrong it just ignores and lists all people in the addressbook
Thanks for spotting the bugs, you're absolutely right! At first was thinking of making space for the discussed list 1 3
syntax, but that's not the scope of this PR. Have added changes to check for the required empty preamble.
Some notes:
list -partial
and the other variants above are now invalid.
list -partial -n john
will not be valid since the preamble -partial
exists.
list -n john -partial
will be valid since the search term for name is now john -partial
.
This issue cannot be avoided since this is fundamentally how the parser is designed, to only parse specified prefixes.
One way is to enforce regex validation, but we probably can't predict how people name themselves / their kids 😂
89 (other comment)
Just need to update HelpCommand.java
then LGTM
Great catch, thanks! Let's defer this till once the list
functionality is complete, since there are more pending changes to the command.
90 (other comment)
Reopening this, issue still persists from https://github.com/AY2021S2-CS2103-W16-3/tp/pull/107.
91 (other comment)
Currently only allows deletion of 1 tag at a go (only the last specified tag will be deleted).
eg.
edit --remove -t friends -t colleagues
will removecolleagues
tags from all listed persons. Should we allow deletion of multiple tags at a go?
Technically the proposal does specify multiple tag removal, but the syntax didn't reflect it :p
If implementing, can use argMultimap.getValues
in line 92 of EditCommandParser.java
.
If not implementing, might be better if we change the success message to include which tag was removed.
92 (other comment)
Did we conclude whether we wanted to do this, the other time we had a discussion?
93 (other comment)
Do we want to allow sorting based on multiple conditions? eg. I have 2 people of the same birthday and I want to sort based on ascending name then descending birthday. If we do not want to allow it then should we throw an error when a person inputs more than 1
-s
?
Probably not, since it increases the complexity of the command + the parser doesn't distinguish the absolute positions of the prefixes, so matching two prefixes will be a pain.
Throwing error is one way, and the easy way out other way would be to simply document this behavior feature (i.e. only the last sort prefix given is used), just like for the add
command. Which do you prefer?
94 (other comment)
I think we agreed that memory not really a concern atm since undo history doesnt carry over across sessions.
Floating an idea, what about (1) setting undo history to a cap higher than the average number of commands used in a single session, and (2) letting undo history carry over sessions? It's a little like vim's swap files.
Validation of the swap history can be achieved by storing the latest address book state in a lightweight hashed format, so it avoids users abusing the swap file to trigger invalid undos.
95 (other comment)
Do we want to allow sorting based on multiple conditions? eg. I have 2 people of the same birthday and I want to sort based on ascending name then descending birthday. If we do not want to allow it then should we throw an error when a person inputs more than 1
-s
?
On that note, forgot to mention that if this is desired, there is a workaround for it, e.g. to sort by ascending birthday, and descending name if same birthday, can call these two commands in succession:
list [...] [-s name] -o descending
list [...] -s birthday [-o ascending]
96 (other comment)
I agree, though I also think the UserGuide is a good starting point for the users. Perhaps we can consider link drop in the result pane when help
command is called.
On the same note, I think a nice feature would be to remove the menubar feature. Takes up much needed real estate only 😜
97 (other comment)
Gave a cursory glance (no computer to test), looks okay. Note the date comparisons are a little different between EventDate and Birthday:
EventDate should be sorted by date including the year, whereas Birthday is by month and day only. The compareTo method in Date should implement the absolute ordering, and Birthday to override this behaviour using getMonthDayString.
When merging #126, the retrieval of the string date for comparison should return "" for empty Dates. This is noted in the PR description.
98 (other comment)
--any
is not the opposite of --exact
functionality
99 (other comment)
Tested using #176 head. Very straightforward LGTM.
Dark theme:
Pastel theme:
100 (other comment)
As per internal discussion, will not be implementing due to lack of potential usage.
101 (other comment)
Great suggestions! All proposed changes have been integrated.
102 (other comment)
Not implementing, since #163 already removes all such updates.
103 (other comment)
Already fixed in #145, in previous milestone.
104 (other comment)
Did a quick field test (Person 1 has no fields, Person 2 has all fields populated), most issues from previous PR fixed.
Very nicely implemented! Note certain behaviors below that might need to take a relook (either in same PR, or in a subsequent PR if there is sufficient buffer).
✔️ edit 1 --address
TAB -> edit 1 -a
✔️ edit 1 -r -r hey -r hi
TAB -> edit 1 -r hey -r hi
ENTER -> change remark to "hi"
❗ edit 2 -n -r -e -a -p -b
TAB -> edit 2 -n NAME -r REMARK -e EMAIL -a ADDRESS -p -b BIRTHDAY
❗ edit 2 -p 999
TAB -> edit 2 -p
✔️ edit 2 -t hello
TAB -> edit 2 -t hello -t TAG1 -t TAG2
hello
).❓ edit 1 -t
TAB -> edit 1
TAB -> edit 1
❓ edit 2 -t
TAB -> edit 2 -t TAG1 -t TAG2
TAB -> edit 2 -t TAG1 -t TAG2
list
TAB throws "Invalid command format". Upon invalid command/prefixes, should it ignore as well?edit -r hey
TAB / edit 2 -test
throws "Invalid command format". Perhaps would be good to state "autocompletion requires command format edit INDEX
and remark prefix -r
to be specified.105 (other comment)
Tested, LGTM. Note that the current behavior for delete -t tag1 -t tag2
removes people if they at least contain both tag1
and tag2
. Intended behavior, will need to document.
106 (other comment)
Seconding this, @nickyfoo. This is a pretty urgent feature, for undoing changes to events.
Redo is a secondary feature, since there is already a command history.
107 (other comment)
Tested, works well. Note the cosmetic issue:
108 (other comment)
LGTM. See #184 for extension.
109 (other comment)
Very quick fix, LGTM.
110 (other comment)
Tested, works well. LGTM.
111 (other comment)
Tested, works fantastic. Other than @Ellevy's comments on supporting event names, LGTM.
edit 1 -t
TAB -> edit 2 -t TAG1
TAB -> edit 2 -t TAG1 -t
There is an extra -t
popping out with every second autocomplete pass. Can either raise bug report, or document as a feature.
edit 2 -test
TAB -> "Index not specified!"
Error message can be more appropriately phrased as "Index / prefix not specified"
112 (other comment)
Made changes to upcoming event sort as discussed with @Ellevy and @garyljj, i.e. upcoming but done events are also funnelled to the back of the event list, sorted in chronological order with the rest.
113 (other comment)
Very cleanly done, LGTM.
The success message for both number of people and tags is a little weird (the former introduced by me...). Might want to update the result message in a subsequent PR.
114 (other comment)
Completed with merged PRs:
#192 (tags -> list)
#158 (delete by tag)
#128 (remove tags)
#116 (find -> list filtering)
#113 (delete filtered, deprecate clear)
#111 (long form prefixes).
Did not implement delete
as alias to list
command due to unnecessary complexity.
115 (other comment)
tags
command deprecated with #192.
116 (other comment)
Not implementing, for two reasons:
Normal use case will not involve removal of fields (objective of welfare IC is to populate as many fields as possible)
Erroneous field additions are foreseen to be typically corrected during the same session, which is the responsibility of undo
117 (other comment)
Should the KeyCombination
event handling fall under the same handleUserKey
method? They seem to conceptually belong together.
118 (other comment)
Weird spurious merge conflicts, changes taken directly from branch instead.
119 (other comment)
Was actually on this similar documentation.
120 (other comment)
LGTM.
Was wondering if changing Tag::isString()
to remove the square brackets directly would be a good alternative. I haven't seen the brackets during normal use.
121 (other comment)
Weird result message when sorting criteria not stated.
122 (other comment)
Potentially buggy implementation? Will need to fix, perhaps in v1.4
.
123 (other comment)
LGTM
124 (other comment)
LGTM
125 (other comment)
Rectified between commits 4df1103 to c259b07
126 (other comment)
Added in #218.
127 (other comment)
Alphanumerics inherently mean ASCII. Perhaps we can make it explicit by stating in the user guide upfront.
128 (other comment)
This is a legitimate documentation error, to change to corrected command: list -o asc
, or perhaps even remove the whole thing since it's already ascending by default.
129 (other comment)
Fair point, since Ctrl-Z
combo also exists for MacOS, even if intuitively Cmd-Z
is the default MacOS shortcut. To fix.
130 (other comment)
Color me surprised, someone did raise this as a bug #239...
131 (other comment)
Adding the 0 as an argument is intentional, since it plays along conceptually with the 1 - 12 integer values.
~Possible follow-up to update the UG to describe this feature more clearly.~
It is described VERY clearly - as an alternative to -b
(empty string) in the very same line.
132 (other comment)
Possible follow-up: Add tutorial to describe common workflow for welfare IC, which includes vendor management.
133 (other comment)
Related issue: #223
Quoting @zhengruoxin, 29 or 30 characters optimal for maximum event name length.
134 (other comment)
The same can be said for accidentally highlighting and deleting the whole input.
There are already multiple safeguards implemented to minimize said inconvenience, including an input history feature as well as an autocomplete feature to streamline the process of adding extra details.
135 (other comment)
Especially so since erroneous additions are foreseen to be typically corrected during the same session.
As a failsafe, the option of modifying the stored data is also available.
136 (other comment)
The field is intentionally constrained to only accept ASCII alphanumerics and space.
The problem of name variation is more one of legality, e.g. X Æ A-12 Musk, than it is the difficulty of romanization.
137 (other comment)
Not fixing, see: https://github.com/AY2021S2-CS2103-W16-3/tp/issues/245#issuecomment-813008894
138 (other comment)
This is clearly already reflected in the list command syntax list [-n NAME]...
which accepts multiple prefixes. Not a bug.
~Perhaps we can add another example to list
to illustrate how multiple -n
prefixes will work @Ellevy~ Added in c8bb88e.
139 (other comment)
Duplicate of #225
140 (other comment)
Duplicate of #252
141 (other comment)
Duplicate of #266
142 (other comment)
Duplicate of #224
143 (other comment)
Duplicate of #225
144 (other comment)
Duplicate of #246
145 (other comment)
Due to case-insensitivity of tags raised in #240, duplicate issue.
146 (other comment)
~Note: 1/1/0000
should be a valid input (minimum year is 0).~
Turns out 0 itself is not a valid year, see #292 for more details (esp. fix)
147 (other comment)
Wrong error message for add
, should be "Incorrect format" instead.
Note the same behaviour for eadd
as well.
148 (other comment)
Duplicate of #270
149 (other comment)
Duplicate of #250
150 (other comment)
Duplicate of #270
151 (other comment)
Duplicate of #270
152 (other comment)
Duplicate of #270
153 (other comment)
To also check output of tags
list, when list
command is invoked.
154 (other comment)
Resolved with 94fc8ae.
155 (other comment)
To update documentation to rephrase wording.
156 (other comment)
And so is u.nus.eduuuuuuuuuuuuuu
, by virtue of the non-existence of the eduuuuuuuuuuuuuu
TLD. The RFC itself for determining a valid host/domain name is huge.
Regex, in my opinion, should be used as a means of providing a minimal level of client-side validation (or perhaps even restricting the scope of the product to ensure reliability of the product, see #245) to instill some user confidence in the product, not as the ultimate fallback to validate everything.
The only reliable way to authenticate a user is by doing an email verification exercise, which is not within the scope of this product (since this product is designed to operate locally).
157 (other comment)
This issue does raise a fair point about consecutive .
being invalid in any context anyway, so might as well fix this.
158 (other comment)
My bad, edited the wrong issue.
159 (other comment)
Duplicate of #270
160 (other comment)
Should be okay to merge, approval from @nickyfoo @zhengruoxin @pyuxiang
161 (other comment)
Fetched and tested. Quick fix, LGTM.
162 (other comment)
Indexes are not exactly completed for 2. Perhaps can change wording to:
Indexes provided are either invalid, or reference events that are already completed.
163 (other comment)
Other than the above, LGTM.
164 (other comment)
To eventually also update that list
is the only special kid around the block, with its case-insensitivity
165 (other comment)
Fetched and tested. LGTM
166 (other comment)
The same behavior persists for add
and eadd
as well, are we fixing those?
167 (other comment)
Duplicate of #270
168 (other comment)
Duplicate of #222
169 (other comment)
Actually, the description in #259 is a lot better than in this issue, might help to refer to that issue instead.
170 (other comment)
To refactor both documentation references and variable name references.
171 (other comment)
Should the isTooLong
method calls be in the constructor instead of the parser? Otherwise direct initialization of names and tags will not trigger the check.
172 (other comment)
Need to truncate further, by taking into account the vertical scrollbar:
Optimal length for tags is 41 characters, names is 28 characters.
edit: I'm on Windows 10 with a 1080p screen, is this the same behavior across screen resolutions and platforms?
Also noticed the font @zhengruoxin is using doesn't seem to be Tisa Sans.
173 (other comment)
For
smtp.google.com.
, is ending with a.
valid? if not can domain regex to"[\\w-]+(\\.[\\w-]+)*$"
Yes, you can give it a try in your own browser: https://google.com.
The terminating period is part of a fully qualified domain name.
For false positive
-
. isit cos-
need to be surrounded by letters, if so can"((\\w+(-\\w+)*)+\\.?)+$"
This enforces that
-
need be surrounded by\w
. basically using same idea as above
By specification if I recall correctly, just cannot start with hyphen. Also not too sure what the email address domain part includes a hostname (for the mail server) - if it's a pure domain name, then hyphens are not even allowed. Also dunno if a single period is allowed.
Essentially just playing very very safe here in case someone want to find fault with our validation. If we want, can add a [^\W_]
right after the @
to enforce alphanumerics.
What do you think @garyljj?
174 (other comment)
Makes sense. i think either
"(\\w[\\w-]*\\.?)+$"
or"([^\\W_][\\w-]*\\.?)+$"
works. whichever u feel more readable.
Gotcha, going with the first. Thanks for the feedback.
@nhzaci
(27 comments)1 (commented on others PR)
You might want to consider removing this portfolio line that is a placeholder.
2 (commented on others PR)
You might want to consider following the syntax for writing command line arguments here. In this case, the format should look something like week {WEEK_NUMBER | first | next | prev | last}
3 (commented on others PR)
You could consider changing this to say week 2
shows the second week of the year.
4 (commented on others PR)
You could also consider using the amended week syntax above here as well.
5 (commented on others PR)
For these two lines, please include P / E respectively in the indices for the delete command
6 (commented on others PR)
You might want to review this merge conflict...
7 (commented on others PR)
Please remove the backup folder from your pull request as well.
8 (commented on others PR)
There's another merge conflict marker here as well you might want to fix this
9 (commented on others PR)
This is also another merge conflict marker
10 (commented on others PR)
You might want to remove this as well
11 (commented on others PR)
You might want to delete the .backup file as well
12 (commented on others PR)
Here's the end of the merge conflict marker, you're supposed to tell them which one you want to marge in because Github couldn't do this automatically
13 (commented on others PR)
You might want to remove this portfolio link since it links to an empty file
14 (commented on others PR)
You might want to add a comment on why this part is commented out.
15 (commented on others PR)
Might want to change to EventBook here
16 (commented on others PR)
EventBook*
17 (commented on others PR)
Similarly, you might want to consider leaving a comment on top of this commented chunk
18 (commented on others PR)
You might want to consider removing the comment since you're done implementing it
19 (commented on others PR)
You might want to consider changing the variable name to BACKLOG_EVENT_STATUS
20 (commented on others PR)
You might want to consider changing the name of this to IN_PROGRESS_EVENT_STATUS
21 (commented on others PR)
InProgressCommand**
22 (commented on others PR)
BacklogCommand**
23 (commented on others PR)
Event should be edited based on their identifier, not their index.
Event getEventByIdentifier(int identifier, List<Event> events) throws CommandException {
List<Event> eventsFilteredByIdentifier = events.stream()
.filter(event -> event.getIdentifier() == identifier)
.collect(Collectors.toList());
if (eventsFilteredByIdentifier.size() > 0) {
return eventsFilteredByIdentifier.get(0);
} else {
throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_IDENTIFIER);
}
}
24 (commented on others PR)
You might want to consider converting the user input to uppercase as well, since currently, if user passes in s/todo
, this would get rejected as they would need to do s/TODO
, which might not be very good UX.
If we uppercase the user input, then the user can pass in s/tOdO
and it will still work.
25 (commented on others PR)
You might want to consider renaming index to identifier, since we would be checking by identifier, instead of index.
26 (commented on others PR)
You could consider renaming these to Identifier instead of Index
27 (commented on others PR)
You could consider renaming it to Identifier
28 (other comment)
Closed due to cyclic dependency
29 (other comment)
Closes #71
30 (other comment)
Closes #49
31 (other comment)
#102
32 (other comment)
Solved by #64
33 (other comment)
Solved by #159
34 (other comment)
Can be renamed before uploading for v1.4
35 (other comment)
Not a bug, identifier is not a counter, added as note in UG
36 (other comment)
Added to the UG, identifiers are unique IDs, not a counter or index.
37 (other comment)
Integer.parseInt issue, changed error shown in #160
38 (other comment)
Added p/ tag into description in #160
39 (other comment)
Resolved with #160
40 (other comment)
Resolved with #160
41 (other comment)
Solved with #160
42 (other comment)
Solved with #160
43 (other comment)
Exists but undocumented yet
44 (other comment)
Solved by amending in #160
45 (other comment)
Added in #160
46 (other comment)
Closed by #160
47 (other comment)
Done with #160
@pPris
(25 comments)1 (commented on others PR)
I like how you used this plusDays() method in your code, didn't realise it exists
2 (commented on others PR)
Looks well-implemented to me, seems pretty extensible if we need to add more formats or features
3 (commented on others PR)
Perhaps you could consider using different dates here so there's more variety in the tests?
4 (commented on others PR)
Looks pretty thorough to me, nice
5 (commented on others PR)
I'm not sure if this may be necessary, but I think it could be good to have two date strings, parse them, and make sure they're equal in the date value represent? Just to check that the equals method doesn't break
6 (commented on others PR)
A lot of formats seem to be covered here, nice 👍
7 (commented on others PR)
Are there any delimiters your delivery date class is intentionally not meant to handle? If so perhaps you can add an invalid delimiter test here
8 (commented on others PR)
Thanks for the heads up 😃
9 (commented on others PR)
I think it might be better practice to keep request.value() as private and not public? you could have an isEmpty method in request itself
10 (commented on others PR)
It might be better for anyone testing/using the product if you use a variety of requests in this file 😃
11 (commented on others PR)
Think a variety of requests will be good here too
12 (commented on others PR)
Maybe the Name class contains the regex you're looking for? You could adapt the "\p{Alnum}" in the Name regex to \p{Alpha} . I'm basing that off this link (https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)
Also, I think when the parser part is done, it should be trimming any user input before the Type constructor is called so checking for spaces may not be an issue?
13 (commented on others PR)
Thanks for catching these 💯
14 (commented on others PR)
Think you mean Cost here
15 (commented on others PR)
If these two classes are supposed to be the equivalent of CakeCollate.java and ReadCakeCollate.java, maybe this could be better named after the model name? so something like public class OrderItem(s) implements ReadOnlyOrderItems.
Something trivial, but I think it could make more sense while writing the guides, what do you think?
16 (commented on others PR)
(For your future testing purposes) I wonder if a single " will be accepted? Can be added to tests if you think it's necessary 😃
17 (commented on others PR)
I don't really understand why a delivery date has to be returned in all formats here? 😅 Also, could any of it be abstracted away in your delivery date class?
18 (commented on others PR)
Would using a PREFIX_ALL variable be less bug-prone in case you need to add future tests? Not very sure myself, I think as long as we assert the user doesn't use that prefix, it should be okay?
19 (commented on others PR)
Might want to explain the purpose of this new prefix as a comment, or maybe in the DG. Took me a bit to follow, but seems like a good design choice to have this prefix 👍
20 (commented on others PR)
Seems like this method takes care of the "And" search, I'm not too sure about which part of the code takes care of the "or" search when no prefixes are specified?
21 (commented on others PR)
I think in general our usage of order description and order item is a little confusing 😅 it might help the user if you use "ORDER ITEM" in line 20 instead of order description
Also an example would be good, think other commands have it 😃
22 (commented on others PR)
I think you need to remove the elipses (...) since the command seems to be taking only one item at a time?
23 (commented on others PR)
I was thinking of standardizing to "ORDER_ITEM_INDEXES" if the index refers to the order item table. What do you think?
24 (commented on others PR)
inb4 tester reports that our app doesn't accept "X Æ A-12._"
25 (commented on others PR)
maybe we should mention customers in our UG, not sure if that's more or less confusing...?
e.g. The name of the customer who placed the order."
26 (commented on own PR)
Got it, changing it to "I can reflect mass cancellations in my database if they occur"
27 (commented on own PR)
Thanks for the comments! Making all the changes you suggested now.
28 (commented on own PR)
Rephrased a few things similar to this suggestion and removed all full stops 😃
29 (commented on own PR)
Good point, added 😃
30 (commented on own PR)
Oops, thank you, fixed
31 (commented on own PR)
Ahh I wasn't sure if we wanted the users to type in numbers, or if we should be giving them another way to add multiple of each item at the same time
32 (commented on own PR)
Reverted. My previous reply is irrelevant till v1.4 haha
33 (other comment)
LGTM
34 (other comment)
The order prefixes are wrongly written as "/o" instead of "o/"
I think someone can test the example commands given in the UG towards the end of v1.3b to similar errors (perhaps in error messages too)
35 (other comment)
Could mention in the UG that writing list
or any valid command closes the help window?
36 (other comment)
Hmm I agree with this though, I thought might be helpful to list how many orders are being listed (can help w testing too)
37 (other comment)
Seems like the tester misunderstood the order items table - it's not meant to be a tally of all the cakes that need to be made. Think we should explain somethings clearer in the UG e.g. we can explain that the order items table is a shortcut table.
38 (other comment)
Oop clicking anywhere after clicking an order item does this
39 (other comment)
if all fields are the same --> considered same order --> reject it?
KIV, think about user profile
40 (other comment)
bc catching the wrong exception in delete command
also because of int data type
41 (other comment)
describe it a little more
include in the heading: "access previously inputted commands"
move this part of the UG
42 (other comment)
look at o or order item regex to fix this bug
43 (other comment)
check if edit command checks regex for other fields also??
44 (other comment)
specify what formats are accepted in UG
45 (other comment)
we assume this is from the perspective for clearing sample data --> so let's modify clear removes everything
add that future improvement
46 (other comment)
if refactoring =/= new feature --> refactor CLEAR to RESET
47 (other comment)
consider updating the dg (xw's 2nd pr on del date)
48 (other comment)
restrict to a flexible amount
add this to FAQ
@RuiXiong2211
49 (other comment)
flag it as future improvement
50 (other comment)
51 (other comment)
52 (other comment)
close this after quantity mentions are removed everywhere
can reply to him that's invalid, if anyone bothers
do we need to clarify this in UG/DG? if anyone has ideas go ahead
if not bugs related to quantity is gonna be marked invalid in PE ("reasonable limitation")
53 (other comment)
54 (other comment)
because numbers are hard-coded
check how to get maximum screen-width
if we can't fix this, try to default fullscreen
everyone try to look into this, see if anyone has any ideas for fixes
55 (other comment)
56 (other comment)
rx's issue
57 (other comment)
remove all troll stuff from code/documentation
58 (other comment)
additionally, check if UG and help command is synced bef submission
59 (other comment)
add tip: key list to go back to the main window
@QY-H00
(22 comments)1 (commented on others PR)
Here the value of property isn't change to correct format of MB3.5.
2 (commented on others PR)
Here the value of property isn't change to correct format of MB3.5.
3 (commented on others PR)
Here we also need to fix the property to MB3.5 to make it a meaningful test although it's invalid test.
4 (commented on others PR)
I'm not sure if this is inconsistent with Code Quality. Maybe we can check it in the Course Website later.
5 (commented on others PR)
Here the test case need to be implemented.
6 (commented on others PR)
On my own opnion, this should not be commented right?
7 (commented on others PR)
Same for this file.
8 (commented on others PR)
Same problem found^
9 (commented on others PR)
Here the format of deleteTag example seems not correct? Maybe it should be 'deleteTag 1 t/homework'
10 (commented on others PR)
It may be better to add more explaination similar to this?
11 (commented on others PR)
Maybe this kind of command is not added into UserGuide if I'm not wrong?
12 (commented on others PR)
Nice defensive style code
13 (commented on others PR)
Have no idea if the empty else block is acceptable in the CS2103T style. In addition, does that mean we will do nothing when the moduleManager doesn't have the existing module?
14 (commented on others PR)
Similar doubt as above
15 (commented on others PR)
Will it be bettter to implement a method in ModuleManager to check this? Since the implementation here may violate the Law of Demeter.
16 (commented on others PR)
Here existingModuleInStr may be a bit confused since I think it means the list of valid module code right? existingModuleInStr seems a bit closer to the modules of current mapping though it's just personal consideration.
17 (commented on others PR)
Maybe the empty line can be deleted directly? In addition, what if the mapping doesn't contain the module code? If we will never enter the box here we may use an assertion here : )
18 (commented on others PR)
I see. Then maybe we can show a message that json file is manually modified and the corresponding task is not supported?
19 (commented on others PR)
I think if we will never go into the else block then we can modify the if-else structure and use assertTrue(mapping.contains(module.toString())) above. Which seems like this:
assertTrue(mapping.contains(module.toString()));
List<Task> newList = mapping.get(module.toString()); //must ensure Module exists in the listOfValidModules
newList.remove(task);
if (newList.isEmpty()) { //remove the module(key) from mapping if no task is associated with it
mapping.remove(module);
} else {
mapping.put(module.toString(), newList);
}
Do you think it's a good idea?
20 (commented on others PR)
Nice removement for it!
21 (commented on others PR)
If I'm not wrong, how markdown works is that the 1s here would automatically be converted to 1,2,3,4...
So it's a deliberate choice.
Yep that's the attribute of the markdown.
22 (commented on others PR)
I'm not very sure why we need appending " workload". Would you mind telling me
23 (commented on own PR)
sure! I will fix this.
24 (commented on own PR)
OK!
25 (commented on own PR)
Yep. I will delete it.
26 (commented on own PR)
Sure. I will fix it.
27 (commented on own PR)
I think for this one, may be we can discuss in the next meeting.
28 (commented on own PR)
OK!
29 (commented on own PR)
Fixed.
30 (commented on own PR)
This is because default compareTo will make the task with lowest workload shown at the top of list. But I think the feature may be more useful to show the task with highest workload at first. How do you think about it?
31 (commented on own PR)
okay! Do you think this is better?
modulePieChartData.setAll(moduleList.stream().map(module -> new PieChart.Data(module.toString(),
moduleWorkLoadDistribution.get(module))).collect(Collectors.toList()))
32 (commented on own PR)
Resolved.
33 (other comment)
LGTM
34 (other comment)
LGTM
35 (other comment)
LGTM.
36 (other comment)
LGTM
37 (other comment)
LGTM. I think maybe it can be merged directly?
38 (other comment)
This is the same documentation bug as #157 .
39 (other comment)
This is a wrong bug report since tag should be used by t/.
40 (other comment)
LGTM
@Jacob-Pang
(21 comments)1 (commented on others PR)
The logic flow should be:
IF patientIndex is provided -> user wants to change patient for the appointment {
patient = patient at patientIndex
} else {
patient = same patient from appointment
}
2 (commented on others PR)
Javadoc to update
3 (commented on others PR)
Javadoc to update
4 (commented on others PR)
This one should be getAppointmentSchedule instead
5 (commented on others PR)
Is this supposed to be FindAppointmentCommand.MESSAGE_USAGE instead?
6 (commented on others PR)
There is no need to have a separate try statement.
7 (commented on others PR)
We discussed that we will not need to maintain the email or address of the doctor.
8 (commented on others PR)
There was no need to create a separate class. The methods could fit under SampleDataUtil.
9 (commented on others PR)
The introduced spacing is inconsistent
10 (commented on others PR)
Typo to amend to DoctorRecords
11 (commented on others PR)
It was inside (see a few more lines below). Moved it to group w patient records methods
12 (commented on others PR)
Yes
13 (commented on others PR)
Yes there were repeated same method calls and implementations under the individual PatientRecordsStorage and DoctorRecordsStorage.
14 (commented on others PR)
Nope, should only have changed the storing style in the files
15 (commented on others PR)
It is because the initialised address book is empty here.
Should have one for patients and doctors sorry
16 (commented on others PR)
This was an accident
17 (commented on others PR)
Here is my take on this:
The enum could return the DateTimeFormatters instead,
enum StandardDateTimeFormat {
DATE_SLASH_SHORT ( "dd/MM/yyyy" )
...
private dateTimePattern;
private StandardDateTimeFormat (String dateTimePattern) {
this.dateTimePattern = dateTimePattern;
}
public DateTimeFormatter getDateTimeFormatter() {
return DateTimeFormatter.ofPattern(dateTimePattern);
}
public String getDateTimePattern() {
return dateTimePattern;
}
}
Then, the parsing of the non-Next inputs could be performed like this:
public LocalDateTime parseDateTime (String input) {
for (StandardDateTimeFormat standardDateTimeFormat : StandardDateTimeFormat.values()) {
try {
return LocalDatetime.parse(input, standardDateTimeFormat.getDateTimeFormatter());
} catch (DateTimeParseException e) {
continue; // no need for regex checking because check is performed by LocalDateTime.parse
}
}
throw ParseException(...); // does not conform to any of the standard inputs
}
I really do not recommend having date and time parsed separately, but for discussion sake, one can implement 2 enums, standardDateFormat and standardTimeFormat and the loop can be modified like this:
public LocalDateTime parseDateTime (String input) {
for (StandardDateFormat standardDateFormat : StandardDateFormat.values()) {
for (StandardTimeFormat standardTimeFormat : StandardTimeFormat.values()) {
try {
DateTimeFormatter standardDateTimeFormatter = DateTimeFormatter.ofPattern(
standardDateFormat.getDatePattern() + " " + standardTimeFormat.getTimePattern());
return LocalDatetime.parse(input, standardDateTimeFormatter);
} catch (DateTimeParseException e) {
continue; // no need for regex checking because check is performed by LocalDateTime.parse
}
}
}
throw ParseException(...); // does not conform to any of the standard inputs
}
18 (commented on others PR)
Should equals check for UUID field?
19 (commented on others PR)
The predicate cannot check for keywords in the UUID.
20 (commented on others PR)
The variable pt might be misleading here
21 (commented on others PR)
Is this supposed to be String as per JsonAdaptedPerson
22 (commented on own PR)
Will remove comment, but in order to test doctors too will require another AddressBook>Doctor> as a parameter in the future
23 (commented on own PR)
Separated into 2.
24 (commented on own PR)
Another predicate accepted by the method, NameContainsKeywordsPredicate must be a Predicate>Person>. So cannot change this.
@Ellevy
(21 comments)1 (commented on others PR)
* `delete -t colleague` deletes the "colleague" tag in contacts that contains this tag. If "colleague" is the only tag that that contact contains, the contact will be deleted.
2 (commented on others PR)
* Delete every person that has only 1 tag which is the given tag.
* If the person is tagged by another tag, only the given tag is removed from the person. The contact will not be deleted.
3 (commented on others PR)
* `delete -t colleague -t cs2103` deletes the "colleague" tag and "cs2103" tag in contacts that contains these tags. If "colleague" and "cs2103" are the only tags that that contact contains, the contact will be deleted.
4 (commented on others PR)
+ "OR delete the person if that person has only 1 tag which is the provided tag\n"
+ "OR remove the provided tag from the person if that person has other tags.\n"
5 (commented on others PR)
Does this mean we should create another command just to handle contact deletion and this delete -t
command only deals with tag deletion? Basically similar to our add
, find
and delete
commands that only deal with contacts while tags
command only deals with tags.
6 (commented on others PR)
return isDone ? "\u2713" : "";
7 (commented on others PR)
* Tick represents done, empty string represents not done.
8 (commented on others PR)
Suggested changes to the javadocs accordingly, thanks!
9 (commented on others PR)
If I'm not wrong this implementation is the same as the UniquePersonList. Do we want to change? I guess if we change this then we should standardise and change for the UniquePersonList too.
10 (commented on others PR)
Would it be better for us to display another message if the tag specified is not found in the listed persons?
Currently it is "Removed tag from: "
. Maybe we can change it to
eg. "This tag does not exist in the persons listed. No tags were removed."
11 (commented on others PR)
* EventDate must contain a year.
12 (commented on others PR)
* Parses input arguments and creates a new EEditCommand object
13 (commented on others PR)
* Parses the given {@code String} of arguments in the context of the EEditCommand
* and returns an EEditCommand object for execution.
14 (commented on others PR)
* Creates and returns an {@code Event} with the details of {@code eventToEdit}
* edited with {@code editEventDescriptor}.
15 (commented on others PR)
* @param index of the event in the filtered event list to edit
16 (commented on others PR)
* Edits the details of an existing event in PartyPlanet.
17 (commented on others PR)
if (xDaysLeft < 0 && yDaysLeft >= 0) {
return 1;
} else if (xDaysLeft >= 0 && yDaysLeft < 0) {
return -1;
} else {
return xDaysLeft.compareTo(yDaysLeft);
}
18 (commented on others PR)
ArgumentTokenizer.tokenize(arguments, PREFIX_NAME, PREFIX_DATE, PREFIX_REMARK);
Probably should include auto complete for name for events since we allow it for persons
19 (commented on others PR)
throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);
20 (commented on others PR)
Map<Prefix, String> prefixMethodMap = Map.of(
PREFIX_NAME, event.getName().fullName,
PREFIX_DATE, event.getEventDate().displayValue,
PREFIX_REMARK, event.getDetails().value
);
21 (commented on others PR)
Note: Autocompleted Tags will be returned in alphabetical order and is case-sensitive.
22 (other comment)
LGTM
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
LGTM
26 (other comment)
Are we going to throw error if the user types in wrong specifications? like eg. list -partial
or list partial
or list Bernice
. Currently if i'm not wrong it just ignores and lists all people in the addressbook
27 (other comment)
LGTM
(On a side note: would be good to implement min height for the event later on too)
28 (other comment)
Currently only allows deletion of 1 tag at a go (only the last specified tag will be deleted).
eg. edit --remove -t friends -t colleagues
will remove colleagues
tags from all listed persons. Should we allow deletion of multiple tags at a go?
29 (other comment)
Currently only allows deletion of 1 tag at a go (only the last specified tag will be deleted).
eg.
edit --remove -t friends -t colleagues
will removecolleagues
tags from all listed persons. Should we allow deletion of multiple tags at a go?
Technically the proposal does specify multiple tag removal, but the syntax didn't reflect it :p
- If implementing, can use
argMultimap.getValues
in line 92 ofEditCommandParser.java
.
- If not implementing, might be better if we change the success message to include which tag was removed.
Can possibly also write an error message telling them they can only delete 1 tag at a go
30 (other comment)
Do we want to allow sorting based on multiple conditions? eg. I have 2 people of the same birthday and I want to sort based on ascending name then descending birthday. If we do not want to allow it then should we throw an error when a person inputs more than 1 -s
?
31 (other comment)
Do we want to allow sorting based on multiple conditions? eg. I have 2 people of the same birthday and I want to sort based on ascending name then descending birthday. If we do not want to allow it then should we throw an error when a person inputs more than 1
-s
?
Probably not, since it increases the complexity of the command + the parser doesn't distinguish the absolute positions of the prefixes, so matching two prefixes will be a pain.
Throwing error is one way, and the ~easy way out~ other way would be to simply document this behavior feature (i.e. only the last sort prefix given is used), just like for the
add
command. Which do you prefer?
I think documenting is good! Which do you prefer?
32 (other comment)
Do you think its better to include the --exact
and --any
flag?
eg.
delete --exact -t a -t b
deletes all person with tag a AND b
delete --any -t a -t b
deletes all person with tag a OR b
might be easier for users and it is consistent with list and elist
33 (other comment)
Currently all successful elist actions display "Listed all events" as the result message. Should we specify them? for eg. "Listed all events in chronological order", or "Listed all events in ascending name order".
For this I believe its the same as list
. I guess if want can change but must change for both. Maybe I open an issue for changing the output message for both list
and elist
to do later on? Then if this one no other issues then can merge first.
34 (other comment)
Hopefully I managed to find all the places to change and allow autocomplete for name to work. Other than that, the rest seems good!
35 (other comment)
Not very sure why but it seems like when I run the app they can't load the fonts. (See pic below)
But the app still runs well with no errors
36 (other comment)
Marking event as done can mean that the planning for the event is done. Should be up to the user to decide.
37 (other comment)
Users should be allowed to add events from the past to store as reference for planning future events.
38 (other comment)
Users should be allowed to add contacts of vendors without having to store their birthdays.
39 (other comment)
As documented, list -b 0
lists out all contacts without birthdays.
40 (other comment)
Events are not restricted to be tied to a particular person. It can be for an overall event for all, and does not have to be for birthdays.
41 (other comment)
To eventually also update that
list
is the only special kid around the block, with its case-insensitivity
Currently the list
in UG already states its case-insensitivity (Case sensitive for sorting by name but case insensitive for searching). Not sure if its clear enough though.
42 (other comment)
I would prefer it if both of these give the same error message.
Perhaps can change line 49 in EEditAutocompleteUtil.java
to
throw new ParseException(INDEX_NOT_SPECIFIED_OR_INVALID_MESSAGE);
.
Also agree with @zhengruoxin's comment. Maybe we standardize for both eedit
and edit
to Index not specified or invalid!
Other than that, LGTM
43 (other comment)
Need to truncate further, by taking into account the vertical scrollbar:
Optimal length for tags is 41 characters, names is 28 characters.
edit: I'm on Windows 10 with a 1080p screen, is this the same behavior across screen resolutions and platforms?
Also noticed the font @zhengruoxin is using doesn't seem to be Tisa Sans.
Max name length of 22 and tag length of 35 works well for me!
44 (other comment)
The new message is clearer, though do we want to standardise with the other invalid index message? eg. 0 and 20 are both "invalid indexes" but show different error messages. But both works lah
Technically not same case leh, cos 0 is not valid index (same case with
-1
,abc
etc) but 20 is a valid index that is not in the addressbook.
Thats why 0 causes "index invalid" but 20 causes "person index provided is invalid"
But idk maybe can somehow make clearer haha
TBH 'index invalid" and "person index provided is invalid" sounds the same to me. What about
-ve indexes/0: "Index is not specified or invalid: Please enter an index value larger than 0"
too big index: "Index provided is too large: Please enter a valid index from the list"
@lyueyang
(21 comments)1 (commented on others PR)
Should there be a space after female
? Not an issue, just a formatting thing really
2 (commented on others PR)
Just like the one above, the index numbers in the example are missing the c/ prefix
3 (commented on others PR)
The index in the example lacks the c/
prefix
4 (commented on others PR)
Should the javadocs be represented like this or would a single line as per the original document be better?
5 (commented on others PR)
same goes for here as per above
6 (commented on others PR)
closing as upon discussion, we agreed that it's alright as checkstyle tests have passed it
7 (commented on others PR)
closing as upon discussion, we agreed that it's alright as checkstyle tests have passed it
8 (commented on others PR)
wrong spelling for passenger
9 (commented on others PR)
Address app should be changed back to GreenMileageEfforts
10 (commented on others PR)
closing, resolved on improved code quality
11 (commented on others PR)
Could you maybe change this to find a/serangoon
returns Bernice Yu
, David Li
instead? thanks!
12 (commented on others PR)
adjusted the description, closing comment
13 (commented on others PR)
is this necessary? thinking because you could just use TripTime's internal toString() method implicitly but it could also be that im not too familiar with this
14 (commented on others PR)
maybe keeping the requireNonNull might be useful since that's what we're encouraged to do this week
15 (commented on others PR)
could we actually just change this to isSameTrip to keep the code shorter?
16 (commented on others PR)
'diver' mentioned here instead of driver, no big issue just to take note for next implementer
17 (commented on others PR)
Should this be DeleteCommand instead of PoolCommand?
18 (commented on others PR)
sorry, why's it no longer a requirement to check for tripTime?
19 (commented on others PR)
right, that makes sense, thanks!
20 (commented on others PR)
Spelling mistake for efficient here
21 (commented on others PR)
Full stop for TripDay but none for TripTime, and also TripTime now doesnt have an extra 'the'
22 (commented on own PR)
Good catch, let me amend that
23 (commented on own PR)
have clarified with mark, such an implementation raises issues within the compiler as PREFIX_NAME.toString()
will not be considered as a constant
24 (commented on own PR)
Have moved this to ParserUtil as discussed
25 (commented on own PR)
Resolved this by changing logic in implementation as discussed
26 (commented on own PR)
Rectified this, thanks for pointing it out!
27 (other comment)
LGTM
thank you 😃
28 (other comment)
As we are no longer implementing this, can we close this issue?
29 (other comment)
In a previous PR this was address but have yet to manually test that this works with live profiles as well.
30 (other comment)
Will close this issue when I'm able to manually test again live profiles with price
31 (other comment)
Have addressed this in attached PR. File name has been changed to GMEdata.json
32 (other comment)
should we put a character limit for tags?
33 (other comment)
maybe we can change this to HR executives who have been trained at using VBA within the company so they're comfortable working with text-based commands
34 (other comment)
Categorisation as we've discussed after consult
35 (other comment)
it does say that index should be a positive integer here, not sure if we need to adjust this
36 (other comment)
Maybe we can clarify that c/ is supposed to be for the passenger you want to create a carpool with
37 (other comment)
Maybe we can adjust this to be like pool where it's
delete INDEX [INDEX INDEX...]
38 (other comment)
Closing issue, same as Issue #199
39 (other comment)
We have created suggestions that Day should be a valid day of the week but I suppose we could change TripDay
to Day
40 (other comment)
closing as same as issue #201
41 (other comment)
Similar to issue #201, can show that tags can be [tag/TAG tag/TAG...]
42 (other comment)
Closing, same as issue #205
43 (other comment)
closing, same as #166
44 (other comment)
closing, same as #166
45 (other comment)
@chewterence was this issue resolved in a more recent version of GME?
46 (other comment)
closing, same as #213 and #199
47 (other comment)
closing, same as #160 and #205
48 (other comment)
We are marking this as invalid as our group feels that this is the same issue as #159
49 (other comment)
Not sure how this can be improved
50 (other comment)
I don't think there are better alternatives. Single letter prefixes are preferred while the full word is a secondary option, another possibility is changing it to ta/ which doesn't make sense either
51 (other comment)
Resolved in a more recent version of GME
52 (other comment)
closing, will note that jar file should be named GreenMileageEfforts when creating release
53 (other comment)
FindPool works now, closing as fixed in older PR
54 (other comment)
closing the issue, remove pools changed to removing for standardisation which eliminates this issue. in other commands such as add, same wording is used, adding passengers
instead of adding passenger
which sounds awkward.
@JulietTeoh
(21 comments)1 (commented on others PR)
Because each section of our project has an in-charge (e.g Yongliang is currently in charge of the developer guide), I think we should assign the in-charge guy of that section to review the pull request. It can allow the reviewing of pull reviews to be more spread out among everyone, as opposed to one person doing a majority of the reviewing.
2 (commented on others PR)
Maybe you should consider having 2 overloaded methods:
public boolean equals(Object other) and public boolean equals(SendCommand other)
but it's ok if u prefer yr current way.
3 (commented on others PR)
Will be good to follow the spacing format shown in other MESSAGE_USAGE classes for more readability.
4 (commented on others PR)
I think this extra indentation is not necessary?
5 (commented on others PR)
The spacing for here too
6 (commented on others PR)
I think we should discuss more if we should allow duplicate endpoints because other TA/tester may view it as a bug.
7 (commented on others PR)
Same duplication comment as above
8 (commented on others PR)
Same duplication comment as above
9 (commented on others PR)
It will be good to include a check that method can only be "POST" or "GET" or "PUT" or "PATCH" or "DELETE", just like how the email checked that it had an email had @ and .com
10 (commented on others PR)
Else, the method will throw an error
11 (commented on others PR)
Would these test cases not being changed cause the tests to break down?
12 (commented on others PR)
oh sorry :>
13 (commented on others PR)
Just to confirm, Header's regex checks that a header is in the JSON format right?
If not, such deletion before checking may lead to bugs.
14 (commented on others PR)
i think the standard is diagram above words
15 (commented on others PR)
Cause HEADER is a keyword in the table above this, I wrote HEADERs
16 (commented on others PR)
I put this part in the add/edit/send section original, because this blurb was in those sections:
>div markdown="span" class="alert alert-danger">❗️ Caution:
Multiple headers/tags must be unique and duplicates will be ignored
>/div>
17 (commented on others PR)
thanks!
18 (commented on others PR)
didnt tanjin do this
19 (commented on others PR)
Nice removal of magic strings!
20 (commented on others PR)
In the future, it would be better to use a static method that constructs CommandResult because I think they are a lot of permutations of CommandResult already XD
But since the project is coming to a close, I think this implementation is good enough.
21 (commented on others PR)
good job moving the code from apiFeedbackHelper to this function as it improves readability by alot!
22 (commented on own PR)
@ong6
if a user wants to remove a tag/data, they will most likely type
"edit 1 -t" and then its isn't removing the tag/data if the prefix is "-t "
which makes them think it is a bug / something is wrong (i was stuck on this for quite long)
23 (commented on own PR)
I checked ab3 there are no space in their prefix so i think just follow that bah
24 (commented on own PR)
I will resolve in another pr :>
25 (commented on own PR)
O man
26 (commented on own PR)
done brudda
27 (commented on own PR)
done too
28 (commented on own PR)
done
29 (commented on own PR)
heyo I made sure that all address in the Developer's Guide are "url address", cause our class name in the code is still address but I didnt want the readers to be confused between URL and address
30 (commented on own PR)
great catch
31 (other comment)
wrongly tried to merge master instead of the respective branches
32 (other comment)
refactor name to method (-x)
refactor address to url (-u)
33 (other comment)
I will update the docs for my 2 pull requests in another issue tracker
34 (other comment)
I did a quick skim of the files and it seems that the whitespace removed from the likes of
PREFIX_METHOD
are instead being introduced in the strings they are being concatenated with. Am I overlooking anything?
Hi the only thing in the PR that affects code is the prefixs being changed in CliSyntax.java. For the add, edit and run, I just made the error command messages more readable, for example: from
"add -xget -usomeurl -hsomeheader" to
"add -x get -u someurl -h someheader"
35 (other comment)
Okie @ong6 introduced the whitespace in
PREFIX_METHOD
in this commit 5 days ago so I think's best for him to do the review.
@ong6 so heres a more in depth view of whats wrong with PREFIX_METHOD = "-x "
using an example of "edit 1 -x "
when passed into the parseIndex method of ParserUtil.java, it calls
string trimmedIndex = oneBasedIndex.trim(); which trims the string to "edit 1 -x".
then because PREFIX_METHOD is "-x " (with the space), StringUtil.isNonZeroUnsignedInteger(trimmedIndex) will be true, because trimmedIndex will be equal to "1 -x", which leads an exception of the EditCommand.MESSAGE_INVALID_INDEX being thrown, instead of a more specific error message from the parseMethod method.
Also, if PREFIX_METHOD = "-x ", doing "edit 1 -t " or "edit 1 -h " does not work to remove tags/header because of the same reasons as stated above.
TLDR: there should be no space in all prefixs, unless you want to change a ton of other codde
36 (other comment)
@tjtanjin the run and send test lowly unreliable they sometimes pass sometimes fail on my comp and I couldn't even commit my work on sourcetree.
37 (other comment)
For me, the mainwindow background disappears after I toggle
38 (other comment)
oh ooopsie
39 (other comment)
Uhm, I just tested it. But it seems that the
clear
command does not show this picture? Is it only meant to be used forlist
when there are no endpoints?
yes i only show the pic if the user types list when the endpoint list is empty
40 (other comment)
done
41 (other comment)
we made the list command error message special for when list is empty
it shows the picture that you see to inform users that endpoint list is blank
thus, this is not a bug at all
42 (other comment)
this is most likely an inherited bug from AB3
43 (other comment)
no. some APIs could be http://127.0.0.1:5000/ which would be an API hosted on the user's own computer through port 5000
44 (other comment)
our find does an OR search, not an AND search
45 (other comment)
our find does an OR search, not an AND search as it provides more functionality
46 (other comment)
weirdchamp
47 (other comment)
thank u for clarifying
48 (other comment)
49 (other comment)
I made a hot fix is this ok?
50 (other comment)
Updated valid index error message too
51 (other comment)
ok currently i got the tags to show up for these commands, but i realised that the only relevant tag for these commands is the method tag; the other tags do not make sense to be included since no api is actually called, so there is no data to be shown in those tags unless we want to actually run it like the show command.
We want it to show "No Data" in the little box at the top, just like send and run
52 (other comment)
Great changes, just two minor comments:
- the phrasing might make users think that INDEX is an optional parameter?
- for the other invalid command format errors, should we still keep the [ ]? because [ ] has the meaning of Repeated parameters in UG, not sure if this is still what we intended to mean in the error message
I think [] is the best way to express that a parameter is repeated w/o writing a lot of words
@awzhenyi
(20 comments)1 (commented on others PR)
there is a large chunk of spaces(?) here, not sure if it is intended
2 (commented on others PR)
There is a space here, not sure if it is intended?
3 (commented on others PR)
is this sout suppossed to be here?
4 (commented on others PR)
I think this part was accidentally refactored.
5 (commented on others PR)
I think this part was accidentally refactored.
6 (commented on others PR)
I think this part was accidentally refactored.
7 (commented on others PR)
I think this part was accidentally refactored.
8 (commented on others PR)
Btw do we need this file? We dont have a find booking feature right
9 (commented on others PR)
i think we dont need the {@code} tag here? not too sure
10 (commented on others PR)
Might be accidentally refactored
11 (commented on others PR)
Might be accidentally refactored
12 (commented on others PR)
@code Booking* ?
13 (commented on others PR)
unsure but similar to above, do we need {@code String}?
maybe can just write Returns string representation of this {@code ResidenceAddress}
14 (commented on others PR)
same as above, could just be string value.
15 (commented on others PR)
we should be testing Residence's Name here instead of TenantName?
16 (commented on others PR)
this file will be morphed into JsonAdaptedResidenceTest?
17 (commented on others PR)
should be LocalDate end
18 (commented on others PR)
i think it deals with how it renders the javadocs in html format, not too sure how it will look like when it renders though.
I'm also not too sure when we should use it but i dont think it points to anything
19 (commented on others PR)
i think can include all the optional fields of residences also? we are allowing them to edit those as well i think?
20 (commented on others PR)
this part too
21 (commented on own PR)
Thanks, done!
22 (other comment)
need to catch invalid date format (caught by soorya's pr)
and handle index number 0 of booking as invalid (will fix a few other bugs reported as well)
23 (other comment)
update ug
24 (other comment)
This is sorted by unclean first?
25 (other comment)
Sorted by unclean only. (update ug)
26 (other comment)
update ug
@DrWala
(20 comments)1 (commented on others PR)
Should this part be reflected via an optional frame, or should the fact that it was successfully executed be an underlying assumption? Maybe the branch here is better explained through an activity diagram, and the sequence diagram should show the "Happy path"? What do you think?
2 (commented on others PR)
I think there's a typo here, it should be AddressBookParser
3 (commented on others PR)
It might be helpful to add a note saying that this function does interact with storage, but you've omitted it here for brevity.
4 (commented on others PR)
Would it be helpful to future readers to show that the isRecursiveKeyword
and isReservedKeyword
check is also done in this process?
5 (commented on others PR)
Please remove the comments.
6 (commented on others PR)
Perhaps it would be helpful here to link to the cascading impact on commands like rdel
, redit
, odel
and oedit
, which will need to be modified to block editing until deallocation happens. It would help explain the design decisions made on those commands.
7 (commented on others PR)
Just a syntactic/clarity thing: Perhaps update the sentence to say "Run dealloc
on the resident you are editing first." and then provide an example command
8 (commented on others PR)
I think the formatting of this should reference AB3: https://se-education.org/addressbook-level3/DeveloperGuide.html#design-consideration
9 (commented on others PR)
For consistency with other activity diagrams, perhaps state the actual condition in the "happy flow" and "else" for the flow that terminates.
10 (commented on others PR)
Could you add a clarification here whether the name match needs to be an exact match or not? And does it have to be case sensitive? Would be a useful caveat to have for users of the system who may not be 100% familiar with the implementation of the function.
11 (commented on others PR)
Same as above for this dealloc
12 (commented on others PR)
Suggest adding INDEX here as well. Its done for rdel
too.
13 (commented on others PR)
Seems like there's a typo. Extra }
at end of YEAR
.
14 (commented on others PR)
I think you accidentally duplicated a line?
15 (commented on others PR)
I think it would be better to change this form to use the standard if-else syntax. There are 3 reasons for suggesting this:
It improves readability of what the function is doing.
The code-base throughout does not use ternary operators in the compareTo
or equals
function. They typically write it out in full form.
The module's coding standards require if-else type statements to take a certain form: https://se-education.org/guides/conventions/java/intermediate.html#layout
Thus, I would recommend changing it.
16 (commented on others PR)
Would it make sense to just reference the variables from the room.RoomNumber
class instead?
17 (commented on others PR)
Would suggest updating the aggregations into compositions as stated in the module guidelines.
18 (commented on others PR)
The phrasing "to store the mapping between the name of an Alias
object and itself" could be improved. Perhaps rephrase to "to store the mapping between the name of an Alias
object and the object itself"
19 (commented on others PR)
Similarly, would suggest changing this to composition.
In addition, perhaps it should be a dotted arrow as the main mode of interaction is through the hashmap, and so, similar to the storage diagrams, it should be a dotted arrow.
Ref: https://nus-cs2103-ay2021s2.github.io/website/se-book-adapted/chapters/uml.html#what-4
20 (commented on others PR)
Could you follow the general class diagram styling?
skinparam arrowThickness 1.1
skinparam arrowColor MODEL_COLOR
skinparam classBackgroundColor MODEL_COLOR
21 (commented on own PR)
Done, thanks for pointing that out
22 (commented on own PR)
Done, thanks for pointing that out.
23 (commented on own PR)
You're right, I have updated it in the commit below.
24 (commented on own PR)
Done
25 (commented on own PR)
Done
26 (commented on own PR)
Done
27 (commented on own PR)
I don't think its necessary as the points above clearly indicate that Rooms are initialised with occupancy "No" and the state can only be changed via alloc
or dealloc
.
28 (commented on own PR)
Yes, resolved.
29 (commented on own PR)
Will update.
30 (commented on own PR)
Updated.
31 (commented on own PR)
Updated
32 (commented on own PR)
Updated
33 (commented on own PR)
Fixed
34 (commented on own PR)
Fixed
35 (commented on own PR)
Right I missed that out
36 (commented on own PR)
I brought it in because an edit operation may be intended to change the allocation status. I think alloc and dealloc should both be mentioned in edit commands.
37 (commented on own PR)
Fixed
38 (commented on own PR)
Fixed
39 (commented on own PR)
Removed
40 (commented on own PR)
Fixed
41 (commented on own PR)
Fixed
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)
Removed the justification and only set up the domain of the parameters.
47 (commented on own PR)
Fixed
48 (commented on own PR)
Fixed.
49 (commented on own PR)
I wanted to specify that t/one t/two t/three
will create a list of tags as {one, two, three}
as opposed to taking the latest occurrence. Do you have an idea on how to improve the phrasing?
50 (commented on own PR)
Yes. I've specified that and added that most command trim leading and trailing spaces.
51 (commented on own PR)
Updated
52 (commented on own PR)
Updated.
53 (commented on own PR)
Yes.
54 (commented on own PR)
It is auto-added by Intellij as part of the normal way of providing paragraph breaks in javadocs. It is conformant to the javadoc standards: https://www.oracle.com/sg/technical-resources/articles/java/javadoc-tool.html
55 (commented on own PR)
This was automatically done by the code formatter, and checkstyle seems ok with it. It seems to follow the "conventional indentation" guidelines set out by oracle: https://www.oracle.com/java/technologies/javase/codeconventions-indentation.html
However, the textbook (https://se-education.org/guides/conventions/java/intermediate.html#layout) says line breaks should only double the indentation. Let me know what you want to do about this.
56 (commented on own PR)
Yes.
57 (commented on own PR)
Yes, fixed.
58 (commented on own PR)
Good idea, thanks
59 (commented on own PR)
Okie done, thanks
60 (commented on own PR)
Done
61 (commented on own PR)
Done
62 (commented on own PR)
Resolved
63 (commented on own PR)
Updated.
64 (commented on own PR)
Done
65 (commented on own PR)
Good catch thank you
66 (commented on own PR)
Good catch, thanks.
67 (commented on own PR)
Done, thanks.
68 (commented on own PR)
Done.
69 (commented on own PR)
Done
70 (commented on own PR)
Done
71 (other comment)
Agree with Colin. We should discuss this at the next weekly standup.
Beyond that, LGTM.
72 (other comment)
Thanks for catching this, seems like we all missed it.
73 (other comment)
I've also added a destructor to show when the AddRoomCommandParser goes out of scope
74 (other comment)
@colintkn could you specify under exact match to also indicate that it has to be case sensitive? Don't want people playing with words during the PE on this.
75 (other comment)
This method has been removed. Perhaps we can close this?
76 (other comment)
This method has been removed from the codebase.
77 (other comment)
This import style is necessary to disambiguate between the two classes and is unavoidable.
78 (other comment)
Duplicate of #206
79 (other comment)
Duplicate of #206
80 (other comment)
Duplicate of #203
81 (other comment)
Duplicate of #206
82 (other comment)
Duplicate of #206
83 (other comment)
Duplicate of #221
84 (other comment)
Duplicate of #206
85 (other comment)
Duplicate of #214
86 (other comment)
Duplicate of #247
87 (other comment)
Duplicate of #222
88 (other comment)
Duplicate of #199
89 (other comment)
Duplicate of #206
90 (other comment)
Duplicate of #244
91 (other comment)
Duplicate of #202
92 (other comment)
Duplicate of #199
93 (other comment)
Duplicate of #199
94 (other comment)
Reminder to self to also ensure that docs state room numbers need to be non-zero positive integers.
95 (other comment)
Reminder to self to also ensure that docs state room numbers need to be non-zero positive integers.
96 (other comment)
Incorrect PR, please ignore.
97 (other comment)
Overall looks good, thank you for composing an explanation of the parsing process for potentially confused users. Perhaps this should have its own sub-section entitled "Command Parsing"? It seems a little long for a note.
I'll move it into a new section.
98 (other comment)
Closing as there is nothing for me to update, my roles have not changed.
99 (other comment)
Closed manually as I forgot to include it in the PR description before merging
100 (other comment)
Nothing to update as my roles have not changed. Closing.
101 (other comment)
Need to make the change for iclo
, alloc
, dealloc
too. I have not done that and will do it soon.
102 (other comment)
Need to make the change for
iclo
,alloc
,dealloc
too. I have not done that and will do it soon.
This has been done in commit 06fed88
103 (other comment)
All comments addressed.
@TeoHoeKeat
(20 comments)1 (commented on others PR)
Missing javadocs comment? Missing test?
2 (commented on others PR)
I think the javadocs comment doesn't match the purpose of the constructor. please use the other command available as reference and rewrite the comment.
3 (commented on others PR)
When override, Javadocs will use superclass javadocs when there is no javadocs comment on child. I don't think it necessary to redefine the javadocs comment here.
4 (commented on others PR)
Missing javadocs comment, Missing class test
5 (commented on others PR)
Update the test case on DictionoteParserTest? I notice there no test added, please add all the required test for all the method you added, if applicable.
6 (commented on others PR)
Update ParserUtilTest?
7 (commented on others PR)
May I ask why does the addressbook store note list? I remember there is a ReadOnlyNote class.
8 (commented on others PR)
Missing javadocs comment
9 (commented on others PR)
Update the javadocs comment?
10 (commented on others PR)
using wrong placeholder
11 (commented on others PR)
FXML not defined in MainWindow.FXML. please use noteListPlaceholder instead
12 (commented on others PR)
The stud is used for AddCommand, It is unnecessary to add note method here. In addition, AddNoteCommand test should be done in a separate class.
13 (commented on others PR)
mayble we should be consistent here, and use week/ header/ maincontent/, or w/ h/ mc/
14 (commented on others PR)
addnote [c/CONTENT] [t/TAG]...
instead of [c/CONTENT]... [t/Tag].. as '...' indicate mulitple
15 (commented on others PR)
maybe mention what the note is sort by? e.g alphabetically
16 (commented on others PR)
the UI here refers to the panel, not the model definition. When using ListDefinition, you use UiActionOption.DICTIONARY_LIST, this will open the list panel to show the definition
The UIActionOption refer to the Panel, not the model. hence DICTIONARY_DEFINITION do not exist as no such panel exist.
p.s. please remove DICTIONARY_DEFINITION and use DICTIONARY_LIST
17 (commented on others PR)
DeleteNote?
18 (commented on others PR)
I suggest doing this in a separate class. Model should not be responsible to be writing to file.
19 (commented on others PR)
resolve conflict?
20 (commented on others PR)
can you try edit an existing note with the same content and see the result? It might introduce another bug.
21 (commented on own PR)
I have asked the question via the forum, the lecturer said no need to follow java coding standard for fxml file generated via scene builder
22 (commented on own PR)
I have asked the question via the forum, the lecturer said no need to follow java coding standard for fxml file generated via scene builder
23 (commented on own PR)
yap
24 (other comment)
The tester did not type listcommandu
The command being type is 'open' command. as shown in the image
25 (other comment)
It designs choices if we put setdividerdictionary, setdividernote, setdividerontact, setdividermain. The command will eventually become too long and unusual in a long run. the 'intuitive' part does depend on experience, as user use the app more frequently, they will notice the same theme going on. n stands for note, d stands for dictionary, c stands for content, and m stands for m main screen. The same format has been given to multiple commands, hence the pattern is there for the user to learn. the command is also designed to be similar since they are the same command just working on a different component. to improve the intuitation, we will add note to userguide.
26 (other comment)
yes, it an intended by design.
If the user closes note content, why would it want to change the divider orientation in the first place? (they cant see the divider!)
The logical reason will be that the user will like to see the note content too.
Hence it is logical to open the note content, this way, the user will be able to see the result of the command as well.
since this behaviour is not stated as UG, it will be added.
27 (other comment)
user is not supposed to edit the JSON file in the first place.
We will refer them to userguide -faq if such stuff happen
More error handling will be done in v1.5
28 (other comment)
Will add in the detail to differentiate -d and -dl.
scroll up the user guide. the details panel name is there. it literally just on top of this command
29 (other comment)
We do think this is secondary as it is more for an advanced feature. the main feature for the application is note-taking and dictionote, hence call dictionote. manipulating of GUI is secondary.
30 (other comment)
the divider position is saved when you moved the position manually too.
open -a ensure all panel is visible, it does not reset the divider position,
it will ensure the divider is back to it last known position.
I assume your "not working properly" is because the divider not reset
as I can see all panel content is visible. mean it working properly as all panel is visible.
31 (other comment)
One will be ignored, another will be invalid. they are not the same thing?
there is an error with the markdown conversion.
32 (other comment)
Minor error in userguide - incorrect format given
33 (other comment)
Minor error in user guide
34 (other comment)
change from semi bold to normal font as well as quick formatting. tried console font but isn't ideal : courier new font example
35 (other comment)
I think you set your default program to open your jar file wrongly.
36 (other comment)
added better error message
37 (other comment)
Adding to FAQ, not to change json file as it not intended for user to change
@clarlzx
(20 comments)1 (commented on others PR)
Perhaps this line can be broken down into smaller parts for better code readability?
2 (commented on others PR)
Perhaps this line can be broken into smaller parts for better code readability?
3 (commented on others PR)
Maybe this is not needed and can be removed?
4 (commented on others PR)
Perhaps this can be broken into points for easy reading.
i.e. Reason for current choice:
...
...
5 (commented on others PR)
For the steps in the scenario, perhaps we can standardise to "Step 1", etc. Like edeline's and the undo portion which existed in AB3 before hand.
6 (commented on others PR)
Thanks for correcting this, totally forgot about this 👍
7 (commented on others PR)
Would be good if you could separate the export and import into 2 different parts.
8 (commented on others PR)
Perhaps you could separate the guide for exporting and importing data?
9 (commented on others PR)
Looks good 👍
10 (commented on others PR)
Looks good 👍
11 (commented on others PR)
Is "all clears all" a typo?
12 (commented on others PR)
Maybe don't need to edit checkstyle.xml here as the previous indentations look correct?
13 (commented on others PR)
Same comment as for checkstyle.xml changes.
14 (commented on others PR)
Can remove this part if not needed.
15 (commented on others PR)
We should make sure that parts of code that require option use this class for code standardisation.
16 (commented on others PR)
Maybe change name to tags instead, since it is a list?
17 (commented on others PR)
Perhaps can remove this since we already have toString()?
18 (commented on others PR)
Perhaps, tc/ should just clear child tags only.
19 (commented on others PR)
It's an "and" relationship if I remembered correctly, so maybe "with the exact same name, date and address" would be better?
20 (commented on others PR)
Okay 😄 👍
21 (commented on own PR)
I used startsWith to avoid interacting too in-depth with other logic class (like via any command parser), not sure if this is the right way though, as it feels a bit brute force-ish.
22 (commented on own PR)
I think this might be a bit "brute force"-ish, but I didn't want to break the abstraction of logic and i needed the scene from MainWindow.fxml to set the stylesheet
23 (other comment)
To standardise error message so that if index non-valid, will have same error message.
24 (other comment)
Once #224 is fixed, check if this is solved as well.
25 (other comment)
More specific error message, one for invalid format and one for invalid date.
26 (other comment)
Add clarification in user guide as this is an expected behavior. Should also add this as design consideration in developer guide. Make it clear that equals for contacts checks by duplicate name or tag. Can do so via use cases.
27 (other comment)
Expected behavior.
28 (other comment)
Update screenshot for find command.
29 (other comment)
Expected behavior of sort command:
If find then sort should still be able to view filtered list.
If find then sort by a certain option, actual list will also reflect this sort option.
If sort by certain option then find, filtered list will also be sorted in that option.
30 (other comment)
More specific error message.
31 (other comment)
Should be solved once #246 is done.
32 (other comment)
Should be able to solve this once #246 is done.
33 (other comment)
Should be solved one #246 is done.
34 (other comment)
Closed as similar to #190.
35 (other comment)
Add disclaimer in user guide that tags are not sorted.
36 (other comment)
Should be solved by #234.
37 (other comment)
Closed as duplicate of #222.
@nickyfoo
(19 comments)1 (commented on others PR)
if (lst.isEmpty() || isDifferentFromLatest(s)) {
2 (commented on others PR)
private boolean isDifferentFromLatest(String s) {
3 (commented on others PR)
This doesn't seem like a very robust check, since it would allow dates such as 2020-99-99, which would be an invalid birthday as well.
I think we could instead use the Java LocalDate class, which provides the parsing methods as well.
You could refer to what I did in my IP, for the deadlines. https://github.com/nickyfoo/ip/blob/master/src/main/java/duke/command/DeadlineCommand.java
or here for usage of LocalDate class
4 (commented on others PR)
It might be best not to catch all exceptions here, perhaps writing the specific ones which might be thrown by the Birthday constructor?
5 (commented on others PR)
| `**` | Night owl | Enable dark mode | Use the app safely in dark environments |
6 (commented on others PR)
Reminder to change this to not show an X as it's kind of unsightly
7 (commented on others PR)
No, we decided that the cross for an undone Event would look very unappealing, and so we've removed it
8 (commented on others PR)
It seems like the method is doing more than it should, in the sense that it is checking if the person has tags, and adding it to editedPersons, which might violate some abstraction principles.
On that note, the method name is misleading, since it implies that it only checks if there are tags.
I would suggest to change this method signature to private boolean hasTags(Person personToCheck), which will return true if the person has the tags, otherwise false, and leave adding the person to editedPersons to the execute method
9 (commented on others PR)
* The birthday must be in a valid date format, with or without year, and must be in the past if the year is specified, e.g. 13 Jan, 13 Mar 1997
10 (commented on others PR)
Can be invoked repeatedly until there is no more history from the current session.
11 (commented on others PR)
* The date must be in a valid date format with year, e.g. 2022-05-07, 2 feb 2021
12 (commented on others PR)
Method name is a little misleading, as it seems to imply a check (i.e. returns a boolean). I think this method shouldn't be calling deletedPersons.add(person), as it might violate some abstraction principles.
It might be good to abstract this out into a boolean hasTags()
method, that checks these things, and then leaving the adding to deletedPersons to execute.
13 (commented on others PR)
be stored. For instance, the Welfare IC might want to store the email of a catering company, or the address of a bakery for cake pickups.
14 (commented on others PR)
not important. For instance, the Welfare IC might want to store the address of a member to hold a surprise party.
15 (commented on others PR)
3. Add in past events to store for reference when planning future events. As most parties in CCAs are repetitive, it would be
16 (commented on others PR)
useful for Welfare ICs to store past events for ease of reference when planning future events that are similar.
17 (commented on others PR)
has to be stored for each event.
For instance, a farewell party for the graduating batch needs to be planned in the next month, but the date is unconfirmed. The welfare IC can add this as `eadd -n Party for graduating seniors -r Confirm availability of seniors to fix date`
18 (commented on others PR)
month only) with `list -s u` so that they can plan for the parties accordingly.
19 (commented on others PR)
month and year) with `elist -s u` so that they can refer and plan for the upcoming parties accordingly.
20 (commented on own PR)
Thanks, corrected.
21 (commented on own PR)
Added, thanks
22 (commented on own PR)
Incorporated into latest commit, thanks!
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
LGTM
26 (other comment)
INFO: Added state to stateHistory. Current number of states is: 2. Currently on state: 1
is the logged message. Seems like we can have a feature to easilyredo
as well.
Yup, definitely planning to in a future iteration. I mentioned it in a currently unimplemented nextState method in StateHistory
27 (other comment)
Ah that's true, will do that instead.
28 (other comment)
Yup, I think it'll be good to have the help
command provide both immediate (summarised) help, and a reference to the link at the bottom for users to explore the nuances
29 (other comment)
Apologies, it slipped my mind that Birthdays should be sorted by Month and Day instead of including year
30 (other comment)
The same exception is thrown when tags -f [CHAR]
is called, where CHAR is any character not in any tags, e.g.
tags -f z
for the sample data.
31 (other comment)
Fixed by PR #161
32 (other comment)
As discussed before, since the StateHistory is refreshed on each running of the application and does not carry over between sessions, it is unlikely that it will cause a memory problem, and so it will not be implemented for this milestone.
33 (other comment)
Should the
KeyCombination
event handling fall under the samehandleUserKey
method? They seem to conceptually belong together.
Added to the latest commit!
34 (other comment)
A more recent PR in #209
35 (other comment)
Fixed by commit ba56e71
@picasdan9
(19 comments)1 (commented on others PR)
Is there an extra 'the' in the second sentence; 'determines that the the command called is...'
2 (commented on others PR)
Should the 'ParseException' be formatted as code i.e. enclosed by ``
3 (commented on others PR)
Should AddressBook
be StudentBook
?
4 (commented on others PR)
Do we wanna indicate the multiplicity here? Is it 1-1?
5 (commented on others PR)
Correct me if I'm wrong, does this mean a student can have 0 or many school residences? Shouldn't it be only 1 school residence for every student?
6 (commented on others PR)
Have you not merged with the latest master branch, to reflect the new DG?
7 (commented on others PR)
Should you use the method StudentBook::isExistingMatricNumber
that yien implemented for this instead? Also do we need reference-type Boolean
or is boolean
sufficient?
8 (commented on others PR)
Is there a reason you use LocalDate
and LocalTime
here instead of String
?
9 (commented on others PR)
Do you think it would be better to abstract, this check for whether the target appointment to edit exists, as a method in Model
? So that the Logic
component doesn't access the internal structure of Model
directly.
10 (commented on others PR)
Is the check for whether the student exists necessary, as the existence of the appointment implies that the student must exist? Or do you consider this as defensive programming? Does it mean if the Model
happens to have an appointment that corresponds to no student, this appointment cannot be edited?
11 (commented on others PR)
Correct me if I'm wrong, shouldn't CommandException
be thrown only in the Logic
component?
12 (commented on others PR)
What's the difference between this method and isValidFaculty
method?
13 (commented on others PR)
is this field textUI
used anywhere? it seems that no method uses it.
14 (commented on others PR)
Should the error message talk about clashes or duplication?
15 (commented on others PR)
I don't quite understand this sentence. What does it mean to 'detect'? Does it mean to reflect the changes in the UI?
16 (commented on others PR)
Wouldn't our app reflect any changes to any field in the json file? Would mentioning only matric number gives a false impression about the difference between editing matric number and other fields in the json file?
17 (commented on others PR)
Ah I forgot about the app making matric number unmodifiable.
What if we say that, while users can edit the matric number in JSON file even though the GUI doesn't allow, extra care must be taken to ensure data integrity. Specifically, if the user decides to edit the matric number of a student, they must either (1) edit any appointments for this student to reference the new matric number, or (2) delete all appointments linked to the student.
Btw what would happen if I edit matric number in JSON and the matric number in appointments are not edited? We should specify the expected behaviour in this scenario somewhere in UG also?
18 (commented on others PR)
Yup I don't think it's a contradiction coz the writing commands thru the GUI and editing the JSON are 2 distinct interfaces to interact with the application.
19 (commented on others PR)
This is very good!!
20 (commented on own PR)
good idea! will make the amendment.
21 (commented on own PR)
on a second thought, would it be better to repeat the information? the reason is that if a reader navigates directly to a feature, then they will know the relevant conditions for using this command. If we refactor and put this in the parameter format section, the reader might miss it. another alternative is to have an in-page hyperlink that directs to a subsection called "Conditions for valid appointments" (which would also talk about no clash and pre-existence of student etc.)
22 (other comment)
What do you think if we remove this line?
I thought more about this and wonder if this is a self-invocation, which entails calling another method of its own instance. If we remove this line then it would be that AddressBook
is activated by the method call addPerson()
from Model
, then returns and gets deactivated.
Also can you update the image in DG to match the new sequence diagram?
23 (other comment)
LGTM
24 (other comment)
LGTM
25 (other comment)
These two commands have distinct usage. find
searches by a unique identifier, that is the matriculation number, hence would return a unique student and their appointment if present. filter
searches by a condition which can return non-unique values.
26 (other comment)
Do we want validate name or is this beyond the scope of our project? I personally think this might not be necessary. @SiTingST @fairyinabottle4 @yienyoong
27 (other comment)
Do we want validate address or is this beyond the scope of our project? I don't think this is necessary. @SiTingST @fairyinabottle4 @yienyoong
28 (other comment)
Shall we validate the phone number with the condition of the length being 8? So it must be a local phone number. @fairyinabottle4 @yienyoong @SiTingST
29 (other comment)
I think this is a documentation bug as we agree that users cannot edit the matric number of an appointment, and yes they would have to delete and add a new one. what do you guys think? @SiTingST @yienyoong @fairyinabottle4
30 (other comment)
@SiTingST do you wanna put all the issues about lack of ss as invalid and close them?
31 (other comment)
#220
32 (other comment)
This is an intended feature so that users can add back appointments that they might have forgotten to add. Similar to a calendar app.
33 (other comment)
#213
34 (other comment)
#211
35 (other comment)
This is a documentation rather than functionality bug. Shall we update the UG to indicate that NOT LIVE ON CAMPUS
is a default value? @SiTingST @fairyinabottle4 @yienyoong
36 (other comment)
We'll update the error message to say that the appointment for this student already exists, and/or that one student can have at most one appointment at a time
37 (other comment)
How shall we address this? Initially I think our group agreed that vaccination might have multiple shots, but this seems to contradict with our implementation that a student can have at most 1 appointment. Shall we remove the latter restriction then? @SiTingST @fairyinabottle4 @yienyoong
38 (other comment)
#220
39 (other comment)
In view of this problem, should we either (1) make matriculation number uneditable for students, or (2) implement a hidden id for Student
class that an appointment will reference rather than matric number? I would prefer (1) coz it's simpler haha. @SiTingST @fairyinabottle4 @yienyoong
40 (other comment)
@SiTingST Shall we remove this line in UG, since the second last point in the box "NOTE ABOUT THE COMMAND FORMAT" already addresses this?
41 (other comment)
related to #222
42 (other comment)
#201
43 (other comment)
#234
44 (other comment)
@yienyoong do you think this issue is invalid?
45 (other comment)
#234
46 (other comment)
#222
47 (other comment)
#234
48 (other comment)
#222
49 (other comment)
I can't seem to replicate this bug. Might clarify with the author of this bug report.
50 (other comment)
@SiTingST i'll fix this coz i'm editing some other small details for appt command documentation too. will make a PR soon.
51 (other comment)
Also need ensure contact info under appointment is updated after student edit.
52 (other comment)
then @fairyinabottle4 do you mind doing the removal of edit matric number functionality for students?
@litone01
(16 comments)1 (commented on others PR)
Priority and phone has the same prefix, may need to be careful later
2 (commented on others PR)
I suppose this file is not updated fully yet
3 (commented on others PR)
are we gonna change the prefix_phone and email all that?
4 (commented on others PR)
oh ok haha
5 (commented on others PR)
this should not be imported yet.
6 (commented on others PR)
this should not be imported yet.
7 (commented on others PR)
are we gonna change the prefix_name and phone and email etc
8 (commented on others PR)
this may not be an issue but I am thinking maybe we will need something similar for our tests later
9 (commented on others PR)
ah jiahe I also made this changes, we may have conflicts later
10 (commented on others PR)
ah jiahe I also made this changes, we may have conflicts later
11 (commented on others PR)
can we rephrase the message to "Please ensure the deadline provided is not earlier than today. This means only today and date later than today are allowed." or something similar haha @SoulUseless a better suggestion? same for the error message for event because the original message sounds a bit wrong hmmm
12 (commented on others PR)
wait ah I think we are trying to allow today to be added? like today is 2021-03-29, it should be allowed as a deadline?
13 (commented on others PR)
happen before today?
14 (commented on others PR)
can try to abstract out some processes? This looks like a deep nested or too long method:(
15 (commented on others PR)
I think this should be allowed
16 (commented on others PR)
which means only invalid events should be disallowed. overdue tasks and past events should be allowed
17 (commented on own PR)
needs because it fails some test case, I suspect storage is not working properly or something
18 (commented on own PR)
this format follows java syntax, I cant recall the difference hmmm
19 (commented on own PR)
oh if you are removing it I can add it back
20 (other comment)
Looks great thanks for the update!
21 (other comment)
@ljhgab i think this may have been done?
22 (other comment)
@ljhgab I think this may have been done?
23 (other comment)
This is an invalid input, do you mean an error message should be shown?
24 (other comment)
temporarily on hold
25 (other comment)
need to write as close #200 close #201 haha otherwise it only closes 200
26 (other comment)
pending
27 (other comment)
@Icelenaugust We do not agree that this should be considered as a feature flaw, but rather a possible suggestion. This is because it does not significantly hinder users' usage of the function (takes less than 1s to scroll).
28 (other comment)
It is allowed to add a task with deadline today. The screenshot given is adding an event with deadline earlier than today, which is invalid.
29 (other comment)
Again, optimisation is subjective. In the shoes of a user, it is more common to done many tasks, but not undone many tasks. This can be a possible enhancement, not sure if it is allowed to change the undone feature dramatically like this in v1.4.
30 (other comment)
done_task is dup with issue #261
31 (other comment)
closed in PR #322
32 (other comment)
No change in code done, removed 'ongoing' in UG as it is misleading. Uncompleted tasks with deadline before or on the given dates is the intended behaviour.
33 (other comment)
will be split into many subissues
34 (other comment)
need
35 (other comment)
dup with new issue
36 (other comment)
dup with new issue
37 (other comment)
@YuFeng0930 is this closed?
38 (other comment)
done fixing mine
39 (other comment)
Hi guys, please kindly ignore this issue as it worked now. Sorry for the trouble!
@RuiXiong2211
(16 comments)1 (commented on others PR)
This can be shortened to just this.zeroBasedIndex - index.zeroBasedIndex. (I think)
2 (commented on others PR)
While it may already be intuitive, maybe you can add a comment that the function sorts the dates according to the earliest to the latest.
3 (commented on others PR)
I am not too sure what the variable value means here.
4 (commented on others PR)
I think this should be a DeleteOrderItemCommand object instead of a DeleteCommand object.
5 (commented on others PR)
this should be OrderItem instead of order
6 (commented on others PR)
Are these println statements deliberate
7 (commented on others PR)
for examples adding incorrect inputs as well would be good
8 (commented on others PR)
^type of characters add eg
9 (commented on others PR)
precede is too chim
10 (commented on others PR)
the term fields and prefixes should probably be specified in the glossary
11 (commented on others PR)
add no character limits for address, request and email
12 (commented on others PR)
these two statements contradict each other, today is not a future date
13 (commented on others PR)
first statement can be deleted, a little confusing from the perspective of a tech noob
14 (commented on others PR)
this statement is a little confusing,
15 (commented on others PR)
indexes must be added to the glossary
16 (commented on others PR)
probably not needed
17 (commented on own PR)
fixed
18 (commented on own PR)
fixed
19 (commented on own PR)
yep, changed the conditions to be more strict.
20 (commented on own PR)
oops, meant to be RemindCommand
21 (commented on own PR)
changed
22 (commented on own PR)
Looks great!!
Also, wanted to ask whether inputting an add/find command after a remind command changes the address book back to the original person list? Not sure if the addressbook already takes care of that somewhere else.
@pavz02 , RemindCommand acts on a different list than add command, but on the same "filtered" order list as FindCommand, it will not affect the state of the original person list.
23 (commented on own PR)
it should be initialized as an empty string, thanks for catching that, i forgot to test the addcommand
24 (commented on own PR)
changed
25 (commented on own PR)
added more requests
26 (commented on own PR)
i was wondering why the ab3 tutorial added a prefix too, i think its used to mark the start of the request, but im not too sure why they added it in the first place, so i left it as it is.
27 (commented on own PR)
yep, for now it looks like the tag and undelivered tag, wanted to make it stand out more.
28 (commented on own PR)
changed
29 (commented on own PR)
i was thinking that alphanumeric might be too technical jargony, so maybe i can change characters to letters instead
30 (commented on own PR)
sounds good
31 (commented on own PR)
NO......
32 (other comment)
LGTM
33 (other comment)
LGTM
34 (other comment)
LGTM
35 (other comment)
LGTM
36 (other comment)
LGTM
37 (other comment)
LGTM, maybe you can update the user guide as well to reflect the changes that have been made.
38 (other comment)
LGTM, will be merging this to the master branch so that I can fix some merge conflicts on my end.
39 (other comment)
Fix #85
40 (other comment)
Skimmed through it and left some comments you might want to consider. Other than that, LGTM 👍
edit: also I'm guessing you're not planning to add requests using the Add command?
I am still unsure of how an order requires a request but the request is not added with the add command. I thought you would be implementing it with the add command as an optional field (optional like the tags), so if I misunderstood your implementation sorry haha
It is implemented with a separate command, but now that i think about it i should have probably implemented it with the add command lol i thought it would be neater to use a separate command to add requests instead of overloading the addcommand. In my implementation, requests are initialized to be empty at first and added with a separate command.
41 (other comment)
LGTM
42 (other comment)
Fix #93
43 (other comment)
The files you've edited look good. Can I check if the json file created as expected in your data directory? If so LGTM 😃
Yep, there's a json file created in the data directory, the json file currently contains the SampleDataUtil OrderItems Model's data.
44 (other comment)
I believe the peer reviewer had a wrong understanding of what it meant.
45 (other comment)
fixed.
46 (other comment)
Update UG to be more specific in this, add screenshots too
47 (other comment)
can be fixed by putting request below the other fields (i think) or restricting character size of the special requests, expecting the same bug for tags.
48 (other comment)
fixed.
49 (other comment)
I dont think this is a bug since orders with delivery dates in the past can exist in the application, and editing the json file directly is probably out of scope of the pe
50 (other comment)
repeat
51 (other comment)
oh looks like i had the wrong understanding oops
52 (other comment)
It can be that the order had a wrong delivery date input in the system before sending out for delivery and for accounting purposes, updated in future.
@arihantjain97
(16 comments)1 (commented on others PR)
Great job, Good formatting
2 (commented on others PR)
Good value proposition
3 (commented on others PR)
great job!
4 (commented on others PR)
great job
5 (commented on others PR)
Great job, follows SLAP everywhere!
6 (commented on others PR)
Good, follows SLAP
7 (commented on others PR)
Great Job, SLAP used
8 (commented on others PR)
SLAP-tastic!
9 (commented on others PR)
Great job
10 (commented on others PR)
Good job
11 (commented on others PR)
Good Job
12 (commented on others PR)
Great documentation
13 (commented on others PR)
SLAP-TASTIC
14 (commented on others PR)
Good SLAP
15 (commented on others PR)
good job
16 (commented on others PR)
Great Job
17 (other comment)
Merging to main, DG should update for everyone
18 (other comment)
ignore this
19 (other comment)
implemented help command
20 (other comment)
implemented delete command
21 (other comment)
implemented edit command
@VRSoorya
(15 comments)1 (commented on others PR)
Remember to clean up the comments to match Residence instead of Person
2 (commented on others PR)
Address Book comments need to be changed to Residence Tracker too
3 (commented on others PR)
Class name has to be UniqueBookingList I believe?
4 (commented on others PR)
I think you meant .isSameResidence here?
5 (commented on others PR)
do you mean seedu.address.model.booking.Booking? I think you might have forgotten to refactor the person package to 'booking' instead?
Once you refactor, you probably don't need this import statement since the Booking is also in the same package and you can use it directly in this file
6 (commented on others PR)
Hey use logging instead! I need to add more logs myself.
7 (commented on others PR)
Can we refactor this class to be named as VisitorName? similar to how we did for Residence by calling it ResidenceName?
8 (commented on others PR)
And we could call this class just Name?
9 (commented on others PR)
I think we can allow any special characters for ResidenceName because why restrict the user unnecessarily right?
So a validity check could be to allow any non-empty strings and no " "?
10 (commented on others PR)
I think we need these to make bookings to be used in tests later but maybe could rename to PHONE_DESC_BOOKING1 and PHONE_DESC_BOOKING2?
11 (commented on others PR)
I left this commented out to be built on later when we add more tests so could we keep sorry!
12 (commented on others PR)
probably need to keep this line too to make bookings in tests later?
13 (commented on others PR)
Hey, I think you could use these Prefixes directly by importing them without the need for these getters! Since they're public static similar to how we see it used it other command classes 😃
14 (commented on others PR)
Nice thanks for adding the new commands in too!
15 (commented on others PR)
I'm thinking maybe instead of showing c/[y or n] we can write c/VALID_CLEAN_STATUS and then mention that VALID_CLEAN_STATUS for clean: 'y' or 'clean' and unclean: 'n' or 'unclean'?
16 (commented on own PR)
Yup!
17 (commented on own PR)
oh I was trying to refer to the parameter booking instead but not really sure where to use @code and when not to to be honest...
18 (commented on own PR)
Yup deleted this and it's corresponding test file
19 (commented on own PR)
yup fixed!
20 (commented on own PR)
I'm leaving this since it's the toString method and seems relevant...?
21 (other comment)
Yup such differentiation is possible and reasonable to accommodate residence names like Pinnacle@Duxton while having regular names for visitors
22 (other comment)
Regarding the tests maybe we could keep them commented and re-evaluate in v1.4?
23 (other comment)
Note to team: this was fixed in my PR that was merged yesterday but will be good if the rest can verify if it is fixed!
@goatygoatygoat
(15 comments)1 (commented on others PR)
I think you must make a new class called EntryTagContainsPredicate
which implements Predicate>Entry>
and do your implementation for filtering tags there, then pass an instance of that class as a parameter into the updateFilteredEntryList
method. The ListEntryFormatPredicate
is used for listing entries only.
2 (commented on others PR)
This class can be deleted.
3 (commented on others PR)
This class can also be deleted.
4 (commented on others PR)
Change to contact
5 (commented on others PR)
Please add the methods setContact(Contact target, Contact editedContact), getFilteredContactList(), updateFilteredContactList(Predicate>Contact> predicate), and implement these in ModelManager
6 (commented on others PR)
Predicate>Contact>
7 (commented on others PR)
I wrote a small intro last time:
Welcome to the User Guide of Teaching Assistant!
Are you a JC/Secondary school teacher, having troubles keeping track of all your consultations, meetings and your students' contacts? No worries! Our application, Teaching Assistant will provide an all-in-one platform for you to organise your entries (tasks and schedules) and contacts!
Teaching Assistant mainly uses a Command Line Interface (CLI). This means that a user can use the application by typing into a Command Box. For users who type fast, they can use this application more efficiently than other applications that heavily use Graphical User Interface (GUI), where a user uses the application by interacting with graphical features such as buttons.
If you are interested, jump to Quick Start to learn how to learn how to start using Teaching Assistant.
8 (commented on others PR)
Can add hyperlinks to each command under the Contact category, same for Entry category.
9 (commented on others PR)
Can add screenshots from our demo under each feature (but is optional for now)
10 (commented on others PR)
Change the pic to our actual Ui.
11 (commented on others PR)
I've changed the implementation such that Hans Bo
will only return Hans Bo
(i.e. AND search)!
12 (commented on others PR)
Will not return anything unless there is a person called alex david
13 (commented on others PR)
for your Teaching Assistant
14 (commented on others PR)
provided that it is not the first or last character and provided also that it does not appear consecutively
15 (commented on others PR)
#139 Are we following this person's suggestion?
@AhQuanz
(14 comments)1 (commented on others PR)
This is used in line 20 to ensure validity of quantity
2 (commented on others PR)
Will be adding test cases for empty String
3 (commented on others PR)
Any reason why this has to be public?
4 (commented on others PR)
Not sure if I misunderstand this, but shouldn't this be for orders?
5 (commented on others PR)
Likewise , please refer to the next comment
6 (commented on others PR)
maybe we should rename this to be more a more boolean name?
7 (commented on others PR)
Don't think its a good idea to have method name similar to the field name
8 (commented on others PR)
Is the original set equals not working? I think the original equals for set do checks the individual elements according to the API.
9 (commented on others PR)
i think the d/EXPIRY_DATE needs to be change to e?
10 (commented on others PR)
WIll be good to mention that if there are some orders completed , the cheeses assigned will be deleted as well.
11 (commented on others PR)
i think there is a missing note of 'ORDER_DATE' must be any date .....
12 (commented on others PR)
its a hidden folder .data/chim,json
13 (commented on others PR)
Any reason for the deletion?
14 (commented on others PR)
likewise here
15 (commented on own PR)
Sure. Merge his PR and then i will resolve the conflict and add in the missing actions
16 (commented on own PR)
Noted.
17 (commented on own PR)
Yeap , will merge his changes into my branch after his PR has been merged
18 (commented on own PR)
Will update in the next commit
19 (commented on own PR)
Yeap but even if dont have it's by default false.
Will add it in the next commit.
20 (commented on own PR)
Could you elaborate?
I was thinking of changing it to status : (Assigned / Not Assigned)
21 (commented on own PR)
Don't think we should do a counter, as I was thinking of setting quantity's value to be private.
22 (commented on own PR)
Sure. will be adding this in the next commit
23 (commented on own PR)
Will be making this change in the next commit
24 (commented on own PR)
Hmmm based on the doc , it should work but when i was debugging that was giving me some problems. Will look into it again.
25 (commented on own PR)
Yeap, will be updating in the next commit
26 (commented on own PR)
Sure. will fix it in the next commit.
27 (other comment)
hihi, do resolve the comments in gdrive too
Where are the comments?
28 (other comment)
Duplicated Issue as 65
29 (other comment)
duplicated issue as 65
30 (other comment)
duplicated issue as 65
31 (other comment)
duplicated issues as 66
32 (other comment)
duplicated issue as 56
33 (other comment)
duplicated issue as 56
@riyadh-h
(14 comments)1 (commented on others PR)
Shouldn't these import statements be explicit in order to comply with the Java coding standard?
2 (commented on others PR)
Shouldn't the length of any line of code be limited to 120 characters maximum?
3 (commented on others PR)
Does the maximized="true"
part starts the program in maximized window mode by default?
4 (commented on others PR)
Should the code block in lines 18-20 be written inside the constructor in line 22?
5 (commented on others PR)
Should both paths use the same "\nLocal data file location : "
string prefix?
6 (commented on others PR)
Should this semicolon be here?
7 (commented on others PR)
Shouldn't the JavaDoc for this method contain a tag for the parameter note
? (i.e., @param note >description>
)
8 (commented on others PR)
Oh I see, sorry for the misunderstanding.
9 (commented on others PR)
Shouldn't it be from the notes list
instead?
This issue appears in other parts of the code as well
10 (commented on others PR)
Shouldn't it be new DeleteNoteCommand object
instead?
This issue appears in other parts of the code as well
11 (commented on others PR)
Shouldn't it be from the list
instead?
12 (commented on others PR)
Shouldn't it be show no note
instead?
13 (commented on others PR)
A minor issue, but shouldn't there be a space before and after and note book
and and dictionary content
?
14 (commented on others PR)
Shouldn't this be listnote
instead of editnote
?
15 (other comment)
I notice some class may need to be renamed:
- PersonUtil -> ContactUtil?
- PersonListPanel -> ContactListPanel?
- PersonCard -> ContactCard?
- JsonAdaptedPerson -> JsonAdaptedContact?
otherwise, LGTM
Right, but those were left unchanged because other Contact
commands rely on them.
I will rename them when I update the other Contact
commands 👍 .
16 (other comment)
Addresses may differ in their formats; therefore, it would be difficult to adopt one format and enforce it upon each Contact
entry.
17 (other comment)
This is the behavior we aim to achieve, but we will update the user guide to emphasize so.
18 (other comment)
Proposed change: "...materials and writing notes about them." -> "...materials , writing notes about them , and sharing these notes with others."
19 (other comment)
Proposed change: Add "This command sorts the entire contacts list, including the contacts that did not match the latest findcontact
query."
20 (other comment)
Proposed change: add a disclaimer to highlight the changes done to the user interface through user commands.
21 (other comment)
Proposed changes:
Add a detailed example for searching with multiple prefixes.
Add an examples with a supporting screenshot for searching with tags.
Add an examples with a supporting screenshot for searching with multiple prefixes.
@chewwh09
(14 comments)1 (commented on others PR)
Just a suggestion. Would it be better if you put everything in a try-catch block?
try {
if (test.matches(VALIDATION_REGEX)) {
LocalDate.parse(test);
return true;
}
} catch (DateTimeParseException | NullPointerException ex) {
return false;
}
2 (commented on others PR)
Personally, I think this is okay since this is within the test folder and we are abstracting the value through key-value mapping. Furthermore, we do not many variables so as long as each JSON object follows the same sequence I am good.
3 (commented on others PR)
Why did you remove this check?
4 (commented on others PR)
I think if you can avoid nesting if-else it would be great. So you can do
(test.matches(VALIDATION_REGEX) && value > 0) {
return true;
}
It increases readability as well.
5 (commented on others PR)
But as long as your Long.parseLong(test) is the second condition to test.matches(VALIDATION_REGEX), it will be fine due to short-circuit.
6 (commented on others PR)
I assume you use this line of code to debug and forgot to delete it.
7 (commented on others PR)
I get what you are trying to do here. But your code here seems like you are comparing two items instead of comparing the item's quantity.
For me personally, I feel like this entire code should be abstracted to the item class and name it as quantityPriorityComparison.
What do others think?
8 (commented on others PR)
Details are in quantityComparator and item class
Same as the quantityComparator, I think this method body should be abstracted to the item class.
What do others think?
9 (commented on others PR)
Carry on from quantityComparator and ExpiryDateComparator
All this method can be removed and replace with a method like quantityPriorityComparison and expiryDateComparison. It would somewhat be like a compareTo method in the Comparable interface.
10 (commented on others PR)
You forget to add the throws exception in the javadocs
11 (commented on others PR)
Agree with kums!
12 (commented on others PR)
Prevent using magic boolean. Other than that LGTM
13 (commented on others PR)
Just a suggestion. Would it be better if you abstract the inner if-else clause into another function? Because both the if-else clause looks similar. Maybe, you can have the function takes in another argument to differentiate these 2 different if-else clause?
14 (commented on others PR)
Just wondering, does removing this test decrease the test coverage? Would it be better if you change it to assertParseSuccess since we are allowing negative numbers now.
15 (commented on own PR)
All right noted!
16 (commented on own PR)
Yes, it will work as normal. I am using inheritance to achieve both showing all items when no argument is given and also showing filtered items when arguments are given.
17 (commented on own PR)
I think it is fine. I follow the AB3 format, but we can always revisit the User guide and developer guide along the way. 😄
18 (commented on own PR)
Great catch! Thanks! I will change according!
19 (commented on own PR)
I agree that the message is the same as the above two lines. But, the description doesn't fit my usage, that's why I added a new string. I shall change to a different string description.
20 (commented on own PR)
All right noted! Will change accordingly.
21 (commented on own PR)
In my ItemExpiringPredicate Class i use a method called days.between to check for the difference in dates and it returns me a type long.
There are actually no ways of going about this. It's either I parse int to long in this class (which I did) or I parse long to int in my ItemExpiringPredicate Class. Since this class name is called ReminderCommandParser, I feel all the parsing should be done here hence I chose the first method.
22 (commented on own PR)
@Md-Fazil All right I will try to do so.
@JayChenYJ I personally feel it's not good to allow the user to input "reminder 6 hahahaha" as an acceptable input.
23 (commented on own PR)
We have to split the string because the parameter can go can be 1 or multiple digits so I just do substring, I have to abstract out the number. With input as "reminder 3 hahahaha", I still have to abstract out the 3 using split.
24 (commented on own PR)
I feel like prefixes should solely be used to detect each attribute of the items. Whereas this is more of detecting a keyword.
25 (commented on own PR)
All right! I will make it case-insensitive.
26 (commented on own PR)
All right! Will change accordingly.
27 (commented on own PR)
All right will change according!
28 (commented on own PR)
So I should break into 2 statements?
ExpiryDate expiryDate = item.getExpiryDate();
LocalDate itemExpiryDate = expiryDate.expiryDate;
29 (commented on own PR)
This wouldn't be the case. It will still work regardless of how many spaces are in between the reminder and the number.
Eg. "Reminder 3" would work the same as "Reminder 3"
30 (commented on own PR)
Basically, I abstract the user input string into arrays of string. The stringArgsArr[0] has to be a number in a string format and the stringArgsArr[1] has to be a "days" or "weeks". With these 2 valid arguments, I will proceed to parse the number of days in total. If no days or weeks are declared in the user input, by default the number given is in timeUnit days.
31 (commented on own PR)
All right because initially, the plan we discussed was to make the input more lenient to allow the user to input "reminder 3 days" or "reminder 2 weeks". But I can make it work using prefixes as well, but I probably going to do it on another branch "Modify Reminder Feature" for v1.3
32 (commented on own PR)
All right!
33 (commented on own PR)
I made changes to the assertion. It's no longer in this class hence the if clause is still valid.
34 (commented on own PR)
I added the test back.
35 (commented on own PR)
All right thanks!
36 (commented on own PR)
All right thanks!
37 (commented on own PR)
All right thanks!
38 (commented on own PR)
I am just following the format of other use cases.
39 (commented on own PR)
All right will do after i merge the master to this branch! 😄
40 (commented on own PR)
This itself is a variable already. Does it still count as a magic number though? Because from my understanding, magic numbers are when it appears in the method and reader has no understanding of what the magic number represents.
41 (commented on own PR)
All right!
42 (commented on own PR)
All right noted.
43 (commented on own PR)
All right noted!
44 (commented on own PR)
Yes they do!
45 (commented on own PR)
But it was stated that "given today is 30 March".
Solved through other platform.
46 (commented on own PR)
All right will do! I will create the same method as you.
47 (commented on own PR)
Nope it wouldn't. The value 1 to 7 signifies the number of days from today. It's not iterating through the items.
48 (commented on own PR)
I don't think there another way of doing it. I guess it would be fine because streams are usually implemented this way.
49 (commented on own PR)
All right noted!
50 (commented on own PR)
all right will do!
51 (commented on own PR)
All right noted!
52 (commented on own PR)
All right noted!
53 (commented on own PR)
All right noted!
54 (commented on own PR)
All right noted!
55 (commented on own PR)
All right noted!
@edelinetenges
(14 comments)1 (commented on others PR)
I like how detailed and comprehensive this is!
2 (commented on others PR)
Just a minor typo here, should be "managing your children's contacts"!
3 (commented on others PR)
Minor english issue, I think it could be "Finds all appointments with names containing any of"?
4 (commented on others PR)
Did you change this from "option" to "Option" because it's now a class? If yes, I'm not sure if it's necessary for the user to know that it's an Option class, so "option" might make more sense to them?
5 (commented on others PR)
I think you meant for this to be "FindAppointmentCommand.MESSAGE_USAGE" instead of "FindCommand.MESSAGE_USAGE" right?
6 (commented on others PR)
Message usage here is also supposed to be FindAppointmentCommand
7 (commented on others PR)
another minor typo: "appointments" instead of "appointment"
8 (commented on others PR)
are we standardising "option" or "Option"?
9 (commented on others PR)
Will users understand what preamble is referring to? Maybe we could rephrase it a bit
10 (commented on others PR)
Do you think we could include this as one of the examples? I know some of the other commands show examples of what happens when we execute the command after certain commands
11 (commented on others PR)
Minor thing but maybe instead of "however", we can phrase it into "The sorted state will be saved, so the full address book will also be sorted."?
12 (commented on others PR)
Maybe this tip can come first instead of the previous one!
13 (commented on others PR)
maybe you can delete the comment since you don't need it anymore?
14 (commented on others PR)
maybe you can delete this comment too
15 (commented on own PR)
Okay! I'll update it accordingly.
16 (other comment)
Resolved by Clarissa
17 (other comment)
Same problem for optional phone and address
18 (other comment)
Resolved by Weicong
@lue97
(13 comments)1 (commented on others PR)
Perhaps you could condense this to the same line
2 (commented on others PR)
This validation allows invalid dates like 99-99-2021
. Perhaps you could check it with DateTime
classes or use #41 dateUtil
?
3 (commented on others PR)
This may not work for stuff like tar.gz
4 (commented on others PR)
This might be an extra space
5 (commented on others PR)
Move these to FileUtils
?
6 (commented on others PR)
Inconsistent spacing between command format
and >br>...
7 (commented on others PR)
Line 286 should be: Advanced users are welcome to update the data directly by making edits to these files.
8 (commented on others PR)
I think we can rename Picture#isValidFilePath
to isValid
or something since it checks more than just the path
9 (commented on others PR)
capital 'i'
10 (commented on others PR)
capital 'i'
11 (commented on others PR)
typo in 'subtract'
12 (commented on others PR)
perhaps you can specify that the first date is deleted?
13 (commented on others PR)
broken link
14 (commented on own PR)
I'd like to keep Goal
as a class that store frequency and not associate it with meetings. I'll just change it to getGoalDeadline
or something.
15 (commented on own PR)
It's updated as a binary file with the same file name.
16 (commented on own PR)
Maybe use logger instead?
My bad that was supposed to be removed
17 (commented on own PR)
That is intentional
18 (commented on own PR)
My bad this was unintended thanks for catching it.
19 (commented on own PR)
I merely did this as TypicalPersons
has a getTypicalPersons
method. I suppose we could have a test equivalent of SampleDataUtil
in main
20 (commented on own PR)
jpg and jpeg are the same file format. The different magic number are just subclass of the jpg formats (JFIF, EXIF, etc.)
21 (commented on own PR)
"set bit" is a correct terminology I believe.
22 (commented on own PR)
Thanks
23 (commented on own PR)
Actually it's best to just remove anything after 3 bytes since most JPGs starts with 0xFFD8FF
anyways
24 (commented on own PR)
Byte
and byte
is treated differently by java and apparently you need explicit casts here lmao
25 (commented on own PR)
Oops you're right.
26 (commented on own PR)
I think this point should belong in the UG
27 (commented on own PR)
with is correct
28 (other comment)
Conforming to RFC standards is not feasible due to the following reasons:
https://tools.ietf.org/id/draft-seantek-mail-regexen-03.html#case-sensitivity-of-local-part,
https://tools.ietf.org/id/draft-seantek-mail-regexen-03.html#regular-expressions-for-email-addresses,
Also, there are multiple RFC standards, 2822, 5322, 6532, etc., each with conflicting rules. If there really is a need to implement a full blown check for ONE RFC spec, there probably is a need to write a lexer that parses emails, which is too time consuming.
A more elegant way of checking if an email is valid would be to send a mail to that address and expect some form of reply but that is overkill for this project. A simpler fix will be to keep the current isValid()
function as it is and the onus is on the user to verify that the email is correct and update the UG accordingly.
29 (other comment)
This is the output from jshell:
String.format("%s hello", "%s bye", "test")$1 ==> "%s bye hello"
As you can see string substitution is only applied on the first argument and does nothing to the %s
in the replaced portion. There doesn't seem to be any situations that forces concatenation of email in the first argument so I don't see any issue with this.
30 (other comment)
This PR is currently used for CI on git. Please do not merge
31 (other comment)
How did u manage to solve the error ah?
I was working on a out of date branch and was making use of EventBuilder
which was removed in another PR.
32 (other comment)
Can't replicate issue with provided steps.
33 (other comment)
Can't replicate issue with provided steps.
34 (other comment)
Can't replicate issue with provided steps.
35 (other comment)
Fixed with this PR.
36 (other comment)
Fixed with the following PRs
37 (other comment)
merged with this PR
@tanboonji
(13 comments)1 (commented on others PR)
Minor spelling mistake here.
Should be matched
instead of matches
.
2 (commented on others PR)
Would it be better if 60
is declared as a constant?
3 (commented on others PR)
Can I ask what's the consideration for changing .trim()
to .stripLeading()
?
4 (commented on others PR)
ratio
spelled as ration
. Guess you love outfield alot 😄 .
5 (commented on others PR)
Extra line breaks in lines 71-72 and 74-75.
6 (commented on others PR)
This lambda expression can be replaced with method reference '''flags.removeIf(currentStrings::contains)'''
7 (commented on others PR)
commandStrings == null
is unreachable. The reason is because if commandStrings
is null
, a NullPointerException would have been thrown when you called commandStrings.length()
.
Therefore commandStrings == null
should be checked first before you check commandStrings.length() == 0
.
8 (commented on others PR)
I don't think you need to split the commandStrings
in line 197.
You can just call commandStrings.startsWith(AddCommand.COMMAND_WORD)
and it will still work.
9 (commented on others PR)
Same here, I do not think it is necessary to split the commandStrings
here.
10 (commented on others PR)
This way to extract the index could potentially be problematic. For example, edit 1 2 3 -n
and edit ! 1 -n
will be counted as a valid index because any non-digit characters will be removed and they will become 123
and 1
respectively.
I think a better way to deal with this would be to first split the command and command arguments using a Matcher
.
You can reference the AddressBookParser
for example on how it separates the command and the arguments.
After which, you can depend on the ArgumentTokenizer
to get the preamble which will be your index.
11 (commented on others PR)
You should replace the magic literals here with AddCommand.COMMAND_WORD
and EditCommand.COMMAND_WORD
.
12 (commented on others PR)
I agree with @yaowei-soc, maybe saying Results will be shown in alphabetical order
might be easier for the user to understand than saying Results will be sorted in dictionary order
.
13 (commented on others PR)
The link should be team/darkdestry-t
without the .md
14 (commented on own PR)
@oeiyiping I have actually pondered over this for some time, did some research and decided to use the same class name.
As mentioned by @justgnohUG, since they are clearly differentiable by file path, and on top of that, there is an extremely low possibility that you will be referencing both Command classes in another class, I don't see any issues.
Feel free to share your thoughts and opinions again.
15 (commented on own PR)
For this, I followed the original AB3 boolean variable name showHelp
and therefore named the boolean variable showAlias
.
How about changing both to shouldShowHelp
and shouldShowAlias
?
16 (commented on own PR)
I agree with what you have said.
Will update it, push it into the branch and request for your review again later!
17 (commented on own PR)
Update this code.
18 (commented on own PR)
There is currently no sample or default aliases data, that is why a new UniqueAliasMap() is initialised here instead.
19 (commented on own PR)
Added Javadoc for the aliases
param.
20 (commented on own PR)
Updated this code in handleAlias
and similarly for handleHelp
.
21 (commented on own PR)
Updated this code.
22 (commented on own PR)
Updated this code.
23 (commented on own PR)
Updated this code.
24 (commented on own PR)
Updated this code and added missing Javadocs for both parseTagsExceptLast
and parseTags
.
25 (commented on own PR)
Will add this once I merge PR #77 into my branch.
26 (commented on own PR)
Added Javadocs for this unchecked exception.
27 (commented on own PR)
Added Javadocs for this unchecked exception.
28 (commented on own PR)
Would it be okay to refactor this in Milestone 1.3? I will raise an issue after this PR is merged.
29 (commented on own PR)
Updated the boolean variable to shouldReturnAlias.
30 (commented on own PR)
This is a temporary solution. I will be looking to change this in the next issue #97 I'm working on.
31 (commented on own PR)
For Amy, the description strings are in the following format -nAmy
while for Bob -n Bob
.
Amy has no space between the prefix and the argument itself, while Bob has space.
There wasn't any strong reason when I added the extra space, but what I have in mind was so that there are two variants of test cases.
32 (commented on own PR)
Added it back.
33 (commented on own PR)
Updated code for this issue.
34 (commented on own PR)
Updated code for this issue.
35 (commented on own PR)
Updated code with this suggestion.
36 (commented on own PR)
Updated code with this suggestion.
37 (commented on own PR)
Updated code for this issue.
38 (commented on own PR)
Updated code for this issue.
39 (commented on own PR)
Added this test into code.
40 (commented on own PR)
Didn't have the idea to use streams when I was writing this code. Agreed that streams would be better, therefore updated the code to use streams.
41 (commented on own PR)
Added test cases for both different indexes and different tags.
42 (commented on own PR)
Added test cases for both different indexes and different tags.
43 (other comment)
LGTM
44 (other comment)
LGTM
45 (other comment)
LGTM
46 (other comment)
LGTM
47 (other comment)
LGTM
48 (other comment)
In ModelManager, should line 107
updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);
of
public void addPerson(Person person)
method
be updated/removed to ensure the filter is persistent even after adding a person?
Other than this, everything else LGTM for
Logic
component.
This line should not affect the filter after adding a new person
Alright, LGTM.
49 (other comment)
Conventions are not compulsory to be added for DG and will be tracked and discussed offline. Closing issue.
50 (other comment)
Implemented in PR #76.
51 (other comment)
After testing the new prefix parsing implemented in this PR, I think there are fundamentally a few problems here, especially with the filter and alias command.
The filter command is having trouble working as intended. For example, if I want to filter by address, I would need to input filter -a
with whitespace behind.
Similar, typing filter
should clear all existing filters. However, without trimming the trailing whitespaces, the filter command will recognise the command slightly different and instead filter the list of persons to show just the name.
Alias commands are also having problems when parsing and checking the validity of the commands to be aliased.
52 (other comment)
LGTM
53 (other comment)
All done, closing issue.
54 (other comment)
Closing issue since it is implemented in PR #121
Not implemented in PR #121 yet.
55 (other comment)
- TODO: Missing aliases screenshot
All unfinished parts and images will be pushed back from Milestone 1.3 and updated in Milestone 1.4
56 (other comment)
Need to add the company and job title flags to command summary. Otherwise LGTM.
Updated User Guide field summary with company and job title flags.
57 (other comment)
Everyone has completed this requirement. Closing issue.
58 (other comment)
LGTM overall, but just a note:
When bulk deleting tags eg.
tag delete 1 2 3 -t test
, when only person 1 has thetest
tag, the output message will still show that 3 persons have had theirtest
tag deleted.
Not sure if testers will consider this to be a bug (due to the inconsistency in actual effect vs output message), so maybe it would be good to change the output message to reflect a more accurate count, or include a note in the UG stating that this is intended output.
Will be looking at solving this bug in v1.4.
59 (other comment)
Closing since we are not implementing this
60 (other comment)
May be related to #205
61 (other comment)
May be related to #205
62 (other comment)
Steps to reproduce found, commands executed (in order from top to bottom):
find VALUE
list
filter -n
63 (other comment)
Invalid command typed. Requires space between INDEX
and -t
tag.
64 (other comment)
Closing issue, not enough information.
65 (other comment)
Related to #205
66 (other comment)
Intended behaviour, filter is persistent even after running list
command. To remove filter, run the filter
command without any prefixes.
67 (other comment)
Filter is applied onto the list of persons, and filter is persistent unless it is removed. Closing as behaviour is expected and intended.
68 (other comment)
Related to #205
69 (other comment)
Could not replicate the issue. Alias list will disappear from the list view when there is a keystroke.
70 (other comment)
Thanks for the honest review and suggestions. Closing the issue.
71 (other comment)
Duplicate of #203. Closing this as #203 has more details.
72 (other comment)
Fixed with PR #208.
73 (other comment)
Fixed with PR #208.
74 (other comment)
Fixed with PR #208.
75 (other comment)
Related to #205
76 (other comment)
Closing issue as it will not be implemented/fixed in Milestone 1.4.
@CSmortal
(13 comments)1 (commented on others PR)
change to "different predicate" line 37
2 (commented on others PR)
change to "different command" line 53
3 (commented on others PR)
could add a few more tests just to be safe, for both failure and success, maybe something like "ModuleTutorial" for user input and predicate is {"Module", "Tutorial"}?
4 (commented on others PR)
change the comment to "// missing description prefix "
5 (commented on others PR)
change comment to "invalid description"
6 (commented on others PR)
Following the comment, the assertParseFailure() in line 115 should have 2 invalid values. Can change either the description or date to an invalid value
7 (commented on others PR)
similar to a previous comment, should change the description to an invalid one
8 (commented on others PR)
i think there should be a test for parsing with invalid args
9 (commented on others PR)
I think it would be better code quality wise to add an else if
clause for CommandResult.isUncompletedTab
, then the else clause throws an assert false
10 (commented on others PR)
Nice use of assertions!
11 (commented on others PR)
line 15 should be deleted
12 (commented on others PR)
I think .getStatus().toString()
is a violation of Law of Demeter
13 (commented on others PR)
I thought line 26 would automatically fail regardless of whether the tasks in the two arguments of assertNotEquals
are the same because ReadOnlyTaskify doesn't have an overridden equals
? Cn explain ltr on discord?
14 (commented on own PR)
ParseExceptions are thrown in line 59 and line 64 for unexpected user input, my assertion in line 57 was mainly to warn whoever make changes to our code against using this public method. It should only be called if the user's argument input passes #hasMultipleValidIndex
first, as seen in line 31 of DeleteMultipleCommandParser
and line 59 of TaskifyParser
.
15 (commented on own PR)
Sorry, can I clarify which line you are referring to?
16 (commented on own PR)
done
17 (other comment)
Close #9
18 (other comment)
I think it is. However, you will need to use the exit command so that the storage saved the latest updated task list
I'm not entirely sure, but i dont think we need to use exit command? For the test, can't we just instantiate a new TaskifyStub and then check if its tasks are sorted?
19 (other comment)
could add a few more tests for parsing using TagSearchCommandParser. Have a few additional comments too
By additional comments, do you mean comments to explain the tests?
I'm referring to changing the comments for line 37 of TagContainsKeywordsPredicateTest and line 53 of TagSearchCommandTest (just the first two reviews for this PR)
20 (other comment)
Duplicated issue
21 (other comment)
But the user won't be interested in tasks to be done by today but are already completed. Isn't the "Due Today" panel meant for users to make a better decision on which task to do next? There is no point in keeping completed tasks that are due by today to be in that panel
22 (other comment)
already solved by #155
23 (other comment)
@noelmathewisaac try running the master code now, the help description for delete
should be ok now
@figo2127
(13 comments)1 (commented on others PR)
Maybe assign Set>Tag> tags = firstTask.getTags(), to make code more readable. But not a big issue.
2 (commented on others PR)
LGTM!
3 (commented on others PR)
It might be more "visual" to write this in a few more lines. But no big deal lgtm.
4 (commented on others PR)
Perhaps it'd be better to use variables and methods to decide the size of String[] expectedTags, since "multiple" doesn't always mean 2.
5 (commented on others PR)
Looking neat!
6 (commented on others PR)
nice defensive programming
7 (commented on others PR)
maybe medium and high's first letter should be capitalized like Low?
8 (commented on others PR)
cool! Wld be good too if u can include a total workload count for each module? Thought that'd be a nice thing to have.
9 (commented on others PR)
Hmm "increaseCorrect" kind of confused me on the purpose of the method. Maybe increaseWorkloadDistribution suffices. But not a big problem!
10 (commented on others PR)
I thought this implementation is quite nice. Good work!
11 (commented on others PR)
like the defensive code!
12 (commented on others PR)
maybe its better to keep useful comments?
13 (commented on others PR)
Nice to see some new unit testing 😃
14 (commented on own PR)
Okay will do 😃
15 (commented on own PR)
Yeah u right, I think maybe git pull doesn't record the changes properly?
16 (commented on own PR)
oops
17 (commented on own PR)
I thought the initial checkstyle rules stated that a space is needed before the brackets
18 (commented on own PR)
sure!
19 (commented on own PR)
will implement after we all agree on this new feature in meeting 😃
20 (commented on own PR)
resolved 😃
21 (commented on own PR)
resolved 😃
22 (commented on own PR)
resolved 😃
23 (commented on own PR)
yea haven't added. Resolved now 👍
24 (commented on own PR)
haha
25 (commented on own PR)
yeah. This will only happen when u manually edit the json file with module codes which are not supported. So the tasks with invalid module codes will just be ignored
26 (commented on own PR)
Agree! Will resolve now
27 (commented on own PR)
All resolved!
28 (commented on own PR)
Yep! Resolved 😃
29 (commented on own PR)
ah right!
30 (commented on own PR)
resolved 😃
31 (commented on own PR)
yep all resolved 😃
32 (commented on own PR)
hmm but what do we assert here? As in assert(?)
33 (commented on own PR)
Ah.. I see. I think it works let me change it
34 (commented on own PR)
Yep included them. I went out for breakfast halfway lol
35 (commented on own PR)
seems like I can do this in 1 line. Will change it later!
36 (commented on own PR)
oops! will change now
37 (other comment)
Close PR to prevent merging into team repo
38 (other comment)
Merge to include image in docs/images
39 (other comment)
lgtm!
40 (other comment)
lgtm!
41 (other comment)
lgtm!
42 (other comment)
Resolve merge conflicts.
43 (other comment)
I also commented out a chunk of code for 2 tests, pls ignore, I will either add or remove them according to our next discussion 😃
44 (other comment)
lgtm
45 (other comment)
I feel that its better to keep things simple, but if its too troublesome maybe we can state somewhere in the DG/UG on the 2 very similar commands. For @AiwassPrime and @umergta 2nd problem, I think the ModuleBook should check the deadlines and recurrence on every start-up so that the "updating" does not get stuck after 2 months of not opening the app.
46 (other comment)
LGTM, but I also recommend describing the implementation of recurrence in DG and updating the monthly to biweekly in UG
Yep, remember to add to UG.
47 (other comment)
Looking good!
48 (other comment)
LGTM
@maxxng
(13 comments)1 (commented on others PR)
Did you mean to edit all the portfolios?
2 (commented on others PR)
Did you mean to edit this as well?
3 (commented on others PR)
Not all commands will be inside. Unless we want to change the implementation
4 (commented on others PR)
Refer to line 262
5 (commented on others PR)
Can consider refactor through law of demeter?
6 (commented on others PR)
Should we delete this instead?
7 (commented on others PR)
Should we delete this instead?
8 (commented on others PR)
I have edited the help command already in the new PR.
9 (commented on others PR)
All of the message constrains for commands have a certain format that we use, is that format applicable here?
10 (commented on others PR)
Is this test case correct?
11 (commented on others PR)
Did you mean for this month to be valid but the frequency to be invalid?
12 (commented on others PR)
Should the startTime be made 12:30? Or can it be empty?
13 (commented on others PR)
Is the javadocs okay in this format?
14 (other comment)
The UG does not mention about reflecting tasks in the calendar.
15 (other comment)
The calendar section is intentionally darkened to show that the date is not in the current viewing month.
16 (other comment)
This feature is intentional. The user only needs to view the most recent upcoming few tasks. Listing out more than 3 would clutter the user's view and lower the efficiency of PlanIT which goes against our user stories.
17 (other comment)
This feature is intentional. The user only needs to view the most recent upcoming few tasks. Listing out more than 3 would clutter the user's view and lower the efficiency of PlanIT which goes against our user stories.
18 (other comment)
Merged with refactor command code PR.
19 (other comment)
This has been resolved in the fix-ped-issues PR.
20 (other comment)
This has been updated in our latest UG.
21 (other comment)
This has been fixed in our latest UG.
22 (other comment)
This has been fixed in the latest UG.
23 (other comment)
Title is indicated compulsory in the error message since attributes not in [] are compulsory.
24 (other comment)
This has been fixed in the latest UG.
25 (other comment)
This has been updated in the latest UG.
@zhengruoxin
(12 comments)1 (commented on others PR)
* At the most recent input, pressing `Down` arrow key once more clears the text box.
2 (commented on others PR)
* Pressing `Up` arrow key in the text input panel reverts to earlier input.
3 (commented on others PR)
+ PREFIX_BIRTHDAY + " 1999-06-01 "
4 (commented on others PR)
Will writing "You can write anything in remarks, " be more easily understood?
5 (commented on others PR)
This might sound a little bit ambiguous, as the user may confuse it as the person he wants to edit does not have an empty remark. Maybe can change it to something like “You have already typed something!” ?
6 (commented on others PR)
stringSort += "Sorted names ";
7 (commented on others PR)
stringSort += "Sorted birthdays ";
and in "chronological order" instead of "ascending" maybe?
8 (commented on others PR)
stringSort += "Sorted by upcoming birthdays. ";
9 (commented on others PR)
model.getFilteredEventList().size()) + " No events met the requirements.");
10 (commented on others PR)
Name sounds like a person imo, maybe "titles" to differentiate? like birthday & date, remark & details
11 (commented on others PR)
requires/ required? require might sound like asking the user to do something
12 (commented on others PR)
+ "\nNobody met the requirements.");
13 (commented on own PR)
That's true. I considered LocalDate but wanted to keep to standardising using isValidBirthday boolean to check for validity. Will try to see if I can use both, else will switch to LocalDate. Thanks!
14 (commented on own PR)
Used LocalDate to check for validity in latest commit.
15 (commented on own PR)
Separately caught IllegalArgumentException (for invalid year) and DateTimeException (for invalid format) in latest commit.
16 (commented on own PR)
Adopted in latest commit.
17 (commented on own PR)
Will leave it to after append is implemented to see how they fit.
18 (commented on own PR)
This method is following the displayPersons() method in all the delete commands to standardise. Should we change it for all occurrences?
19 (commented on own PR)
Adopted in latest commit.
20 (commented on own PR)
Adopted in latest commit.
21 (commented on own PR)
Adopted in latest commit.
22 (commented on own PR)
Adopted in latest commit.
23 (commented on own PR)
Adopted in latest commit.
24 (commented on own PR)
Adopted in latest commit
25 (commented on own PR)
Good catch! Have edited the implementation in latest commit, changed the method name to hasTags that returns a boolean and leaves the addition to execute.
26 (commented on own PR)
Keeping the original because it looks a bit neater
27 (other comment)
LGTM
28 (other comment)
LGTM
29 (other comment)
LGTM
30 (other comment)
LGTM
31 (other comment)
LGTM
32 (other comment)
The year can be useful to remember a friend's age though, so you won't eg. accidentally wish your friend. "Happy 21st" when it's their 22nd.
33 (other comment)
Some ideas (screenshots from online):
34 (other comment)
I think it can be done for the filtered list, so the user can subset the group he wants to delete the tag from.
35 (other comment)
Maybe make the new theme a separate file and keep darktheme (for a possible future enhancement to let user switch between themes
Oyea good idea! Have adopted in latest commit
36 (other comment)
When the user input invalid parameters after a flag, the result is the same as elist
and also displays a "Listed all events" success message. Optional though can consider to display another message to remind them about the missing field (can be error or just a message).
eg. elist --any sdjsjhf
, or elist --exact xcvxg
(Actually this behaviour is also in list
for persons haha can leave it or do "for fun" next time if want)
37 (other comment)
delete
without parameters is the intended replacement for clear
and edelete
works to clear events list.
((sorry i forgot!!)
38 (other comment)
Behaviour is already specified in the UG
39 (other comment)
This is intentional. If user accidentally marks an event as done, he can revert it using undo
(in the same session).
40 (other comment)
Has been documented in the glossary of parameters:
41 (other comment)
Should the
isTooLong
method calls be in the constructor instead of the parser? Otherwise direct initialization of names and tags will not trigger the check.
Oh yes, thanks for pointing it out!
@SoulUseless
(12 comments)1 (commented on others PR)
Are you missing the "task" in your example?
2 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
3 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
4 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
5 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
6 (commented on others PR)
Instead of having separate class files for startDate and endDate, it might be better to condense into a single Date class. Same for the startTime and endTime
7 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
8 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
9 (commented on others PR)
Is it possible to add a constructor with some parameters instead of just an empty class?
10 (commented on others PR)
Javadocs not updates here.
11 (commented on others PR)
DateTimeFormatter and Regex validation format should follow that of the UG: YYYY-MM-DD
12 (commented on others PR)
I think you mean ".json" here.
13 (commented on own PR)
right, missed it. will work on this now.
14 (commented on own PR)
right, but i think instead of storing a null value ill set it to a default priority value
15 (other comment)
I am not sure whether Deadline should extends Task. Except from that, LGTM.
Might be better to have a single Date class under models/commons instead since the functionality will be around the same since they are all dates.
16 (other comment)
Adding of constructors to underlying attribute classes delayed.
17 (other comment)
Added DG updates to the PR:
Created skeleton DG for future edits
Updated AB3 Storage documentation to Sochedule Storage documentation (closes #158)
Added Implementation details of sortTask into DG
18 (other comment)
State that initial state is not given
19 (other comment)
2 checks, the error message split into 2 lines
20 (other comment)
duplicate
21 (other comment)
duplicate
22 (other comment)
forum
23 (other comment)
duplicate
24 (other comment)
duplicate
25 (other comment)
duplicate
26 (other comment)
duplicate
27 (other comment)
duplicate
28 (other comment)
noted with thanks
29 (other comment)
document design choice inside DG
30 (other comment)
duplicate
31 (other comment)
abstract into Task class
32 (other comment)
done
@Donavanty
(12 comments)1 (commented on others PR)
Good explanation. I was thinking if we could add a line mentioning that this would be more most apt for situations where the review could be too long => using the view feature shows more of the review.
2 (commented on others PR)
Line 39: ... e.g. the review element may contain a long review that is shortened in the main window; using view will be apt for the user to view the whole review.
3 (commented on others PR)
Good addition 😃
4 (commented on others PR)
Good addition.
5 (commented on others PR)
Good additiona
6 (commented on others PR)
Makes more sense
7 (commented on others PR)
Good write-up, will check again to see if it mentions everything that's needed to be mentioned. Thank Sidney
8 (commented on others PR)
Good. Should be clearer
9 (commented on others PR)
Format of writeup looks good 😃
10 (commented on others PR)
Good description, very detailed
11 (commented on others PR)
Add a line spacing, tab the code too, will fix for you
12 (commented on others PR)
Revised the phrasing for you
13 (commented on own PR)
Will change to 'entry', thanks 😃
14 (commented on own PR)
This is now 130.0 (instead of 100), to accommodate for 4 lines of comments shown without scrolling
15 (commented on own PR)
I did styling on TextArea individually instead of using DarkTheme.css, might have to change in the future if colour scheme changes
16 (commented on own PR)
Added Food Categories and School Locations enumeration types in the Help guide, to allow users to see what types they can use
17 (commented on own PR)
Thanks Marcus, yeah probably merged wrongly
18 (commented on own PR)
Okay, will edit and push again, thanks Sid
19 (commented on own PR)
Removed internal styling in the FXML file, put into CSS instead
20 (commented on own PR)
Reduced the window size (height) of the resultDisplayPlaceholder from 200 to 150, felt that it looked better
21 (commented on own PR)
wrapText="true" is the most important addition here
22 (commented on own PR)
Basically spaced out the help guide more, as suggested by one reviewer from PED
23 (commented on own PR)
A whole new UI section has been written up, please take a read 😂
24 (commented on own PR)
Using the word "KEYWORD" instead of "PARAMETERS" now, applied to all cases throughout. Updated in command summary as well.
25 (commented on own PR)
Note the syntax. It's been put inside of the [ ]
26 (commented on own PR)
Marcus, I shifted your Notes and commentary below the Format and Parameters part for the Revise feature
27 (commented on own PR)
Fixed the link in the HTML user guide. Now redirects correctly to our repo
28 (other comment)
Centralised Ui image in Readme
29 (other comment)
Internal: Change codes to fit The Food Diary (ie. no "Persons")
30 (other comment)
I'll fix the checkstyles
31 (other comment)
I accidentally merged Marcus' work-in-progress, which is causing checkstyleTest test to fail, but I can't resolve it yet
I'll wait for Marcus to finish the 'edit' function first, then resolve it.
Meanwhile, the HelpWindow is done.
Resolved, used hard reset
32 (other comment)
Just touched-up the UG, have a look at your sections 😃
33 (other comment)
Not a feature flaw, this is intended.
34 (other comment)
UG formatting needs to be addressed
35 (other comment)
Will think of a way to present it more neatly. Priority should be set to very low. Thanks
36 (other comment)
Will use angle brackets > > to make it clearer
37 (other comment)
Extra wIll be removed
38 (other comment)
This was due to a slip-up on our part on the documentation, which misled you into the wrong syntax.
Will change documentation.
39 (other comment)
It is inconsistent, will be addressed.
40 (other comment)
Wrong documentation, will be addressed
41 (other comment)
Will add this.
42 (other comment)
Error Message needs to be fixed, agreed
43 (other comment)
There is a difference between the delete and add documentation. Will disregard non-alphanumeric syntaxes and make it clear to users that it is feature limitation for this app, both in the result display and UG. In a way, the meaning of the name can still be conveyed without these syntaxes, such as @ ! ? ' ...
44 (other comment)
Image attached is probably wrong and cannot prove that listing is wrong. Besides, find is supposed to return entries that match the user specified condition, and not list in another form of order. Invalid.
45 (other comment)
Will enhance by making it clear in the UG
46 (other comment)
In terms of address, we will not check this. This is a Non-functionality requirement: the address will be left to the integrity of the user to decide and fill in appropriately
47 (other comment)
Enhancement: Will address to users the purpose of putting elipsis in each review that is very lengthy
=> Keep each entry window small
=> view feature is to be used to see the whole review
i.e. whenever an elipsis is present, it is because
A character limit is reached, and the review is truncated
A second review or more, exists
In this context it is not clear what review he added on. We suspect there are 2 reviews
It's not clear from the result display, that's a separate issue
But it's because of 2 reviews that the elipsis is used to maintain the short height of the entry window
48 (other comment)
Invalid, bug reporter is unable to reproduce error clearly.
We have checked the following issue and determined that it is working correctly. Tried and tested.
Explanation: addon will take on the filtered list after the find command.
49 (other comment)
Documentation error, will address.
50 (other comment)
Will consider different colour scheme for text, thanks.
51 (other comment)
Might consider changing display output, slightly trivial. Thanks.
52 (other comment)
While we agree that it is much better to show the error in the revise window, the core functionality of throwing an error whenever an invalid field is typed, still works. We will not address the following. Thanks
53 (other comment)
Wrong documentation => wrong syntax used in delete command. Will be fixed. Thanks
54 (other comment)
Documentation error, will fix. Thanks
55 (other comment)
Will state clearly about the restrictions to names (alphanumeric syntax only). Thanks.
56 (other comment)
Agreed. Will explain it more clearly. Thank you.
57 (other comment)
Fixed the separation of words. Thanks
58 (other comment)
It's technically updated and matching the UG, unclear of which part you feel that is not updated.
Will fix the grammar in the HelpWindow nonetheless. Thanks
59 (other comment)
Will state clearly in the UG.
60 (other comment)
Legitimate. Addressed by Sidney, thanks.
61 (other comment)
Actually, the revise command works upon the edit command. Hence the wording and the meaning is still correct. Thanks
62 (other comment)
Refer to UG for differentiation between Edit and Revise. Both commands serve a slightly different purpose that we feel is still pivotal to the usage of the app. Revise complements Edit, and provides a much better UI for the user. We are open to more discussion. Good point raised OP. Thank you
63 (other comment)
Will add categories, and school tags functionality. We feel that this is essential as well. Thanks.
64 (other comment)
Gokul, I'll handle this, thanks 😃
65 (other comment)
Legitimate suggestion, we believe so as well. Thank you for highlighting
66 (other comment)
Will do away with the appendix. Will include pictures relating to the command in the middle of the UG instead
67 (other comment)
Solved. Thanks
68 (other comment)
Unable to reproduce this bug, but the first review of the entry should be followed by an ellipsis if the entry has more than 1 review. This has been ensured.
69 (other comment)
All issues have been solved.
Please see the cleanups for the UG
Each feature has the following: Description, Format, Parameters, Notes (some), Example, Images (some)
New UI section added above of Features. Take a read. It should describe the geist of why we designed The Food Diary as such.
70 (other comment)
Resolved merge conflict.
71 (other comment)
Changed to light pink. Thanks
72 (other comment)
Fixed: entry/entries. Thanks
@pavz02
(12 comments)1 (commented on others PR)
Isn't toTest.isBefore(acceptableDate) sufficient haha? Because dateToday is before the acceptable date? And Also because remind is for upcoming deadlines right, you could consider making sure all the dates are after today. In case a person/order with a past delivery date is still in the system.
2 (commented on others PR)
What exactly does "in the context of the FindCommand" mean?
3 (commented on others PR)
Wait so whenever the input is an add command the request is initialised to "Give me more pineapples."?
Because you implemented request seperately and not in the add command, do you need the request in the addCommand parse function?
4 (commented on others PR)
Request only takes in the request field right? So does it need a prefix? Because it will always be r/ and never anything else.
5 (commented on others PR)
Maybe you can use toString() here instead of value
6 (commented on others PR)
So the request is like a tag?
7 (commented on others PR)
ohh icic!
8 (commented on others PR)
Do you need both isSameOrderItem and equals? You could consider using the equals method only because the same order will probably have the same cost also.
9 (commented on others PR)
Is there any reason why it should only contain alphabets? Maybe can relax it a bit for types like 12" chocolate cake or something haha
10 (commented on others PR)
Maybe we can consider taking out cost from order item entirely.
11 (commented on others PR)
Any reason why you took out the number part haha
12 (commented on others PR)
Where is this method used?
13 (commented on own PR)
There is no way two help cards will be the same because there are only a few fixed set of commands which are fixed throughout the program which is why I mentioned it. But no harm leaving it.
14 (commented on own PR)
Okay!
15 (commented on own PR)
Originally when I switched from the help page to main, I used fillPersonListPanel() in the resetMainWindow() function to fill in the vBox with the person list again, so as I was using it twice I abstracted it out. I changed it to re-using the same person list so I don't need it anymore but forgot to take out the abstraction. Do you think ts better to insert a new person list using fillPersonListPanel() or reuse the old one?
16 (commented on own PR)
yup
17 (commented on own PR)
Okay will change all the person and address book references you've pointed out
18 (commented on own PR)
Lmao okok
19 (commented on own PR)
Yup, I originally used the function to use from HelpCommandPanel to change from the help to person list there but it was quite inefficient to get everything from there so I ended up just sending a reference to the main window itself to help which is a cyclic dependency now that I think about it, oops probably have to change stuff then.
20 (commented on own PR)
Hmm the data can change because you can add orders when you are in the help page, you just cannot see them in the panel, so I think that is a better idea too thanks
21 (commented on own PR)
Oh really? Did not know that haha
I tried using a static method but it cannot access non-static variables so that does not work either
I guess I'll try the association class then, or leave it if I cannot lolol
22 (commented on own PR)
There's a method underneath haha
@tlylt
(12 comments)1 (commented on others PR)
The reason for updating the endpoint card later is because?
2 (commented on others PR)
A possible future refactor could be moving the animation to CSS and have it triggered at the start of execution and end when the result returns. But this is decent at this stage.
3 (commented on others PR)
Small typo in the comment, should be a post request
4 (commented on others PR)
Perhaps timeout could be extracted out as a static constant to avoid magic number issues?
5 (commented on others PR)
perhaps can consider using an actual valid url? This example seems fake.
6 (commented on others PR)
I suppose the comment is outdated? as it refers to phone, email and address?
7 (commented on others PR)
is MainStreet a valid address?
8 (commented on others PR)
the comment is wrong?
9 (commented on others PR)
Is it necessary? because is Address.ValidAddress already invokes isUrlValid method within in it
10 (commented on others PR)
Perhaps can logger.error or logger.warning here?
11 (commented on others PR)
Would the use of American spelling be better? I think it is mentioned somewhere in textbook
12 (commented on others PR)
Interesting that you passed the message into the parseIndex
method to create a custom error message. I think the alternative is the previous structure which is fine as well, as the exception of an index parsing error need not know which command it is in when the exception occurs. It is when the error is being caught at the higher level, the exception is transformed with added details of the command usage. Let's keep to what you have since this change affects various test cases. Just some thoughts.
13 (commented on own PR)
Alright will remove the two
14 (commented on own PR)
Thank you, resolved in my updated commit
15 (commented on own PR)
Thank you, resolved in my updated commit
16 (commented on own PR)
good catch, fixed in the following commit
17 (commented on own PR)
I think we should treat the shorthand syntax just as a unique syntax. This is because if u say it is optional, then entries such as 'run -x get ' and 'run -u https://test.com' might be seen as valid.
18 (commented on own PR)
Also I believe the inconsistency u are referring to is #518, if u look closely, it is not about that but about the table showing different format.
19 (commented on own PR)
Good point, I have updated the UG such that the format is explained separately.
20 (commented on own PR)
will remove thx
21 (commented on own PR)
given that it is never empty, using .get() or orElse() makes no difference, so I think it is better to avoid get
22 (commented on own PR)
ok
23 (commented on own PR)
ok
24 (commented on own PR)
This is the format for all commands, I think it might be ok in terms of an imperative verb, like the requirement for Commit message to start with Update
instead of Updates
25 (commented on own PR)
Same reasoning as above
26 (commented on own PR)
ok will change
27 (commented on own PR)
er, ... endpoints do not ...., my grammar is correct, right?
28 (commented on own PR)
This is the reason why we need all members to run through the UG once.
29 (commented on own PR)
I think depends on what context do you use list
in, right now it seems to be ok without it.
30 (commented on own PR)
ok thanks, it involves changes to all command so maybe the next person can consider if there is a real need.
31 (commented on own PR)
no prob
32 (commented on own PR)
yea more can be added in the next update
33 (commented on own PR)
😂
34 (commented on own PR)
Yes sorry, will fix
35 (commented on own PR)
ok sure
36 (other comment)
Looks good! 😄 Just a small note, the image and portfolio name needs to match the github handle.
Thanks! Didn't realize this is required. I have renamed accordingly.
37 (other comment)
@tjtanjin When rendered as HTML it looks like this:
38 (other comment)
@tjtanjin FYI I will experiment with this for an hour or two now. If anything I will update this thread.
-update1
Use of Platform.runLater(new Runnable() { ...
can schedule the execution and update of GUI to a later stage. But right now there is still some lack before displaying Running test
and it does not seem to return immediately, which means the place to invoke the call seems to be important and needs to experiment more on this.
39 (other comment)
LGTM 😃 Just a trivial point that the comment for
endpoint
attribute inCommandResult
is the same asisApiResponse
.
Good catch. Fixed and will now merge.
40 (other comment)
Great job, while you are at it, could you reduce the 5-second delay that emulates the wait time of an API response 🥺
Curious:
- how did you fix the lag?
- if we are disabling the user's ability to input while running the request, wondering if it will be better if we still show what he entered in the command box and clear it after the request is done? Not sure if this is the case already... for discussion only
- I'll make a PR really soon to remove the wait time :3
- Shifting
Platform.runLater
above the sleep code removed the lag (which came from the initial 1 second sleep)
- Yup the entered command stays in the command box when frozen 😄
Alright cool, I guess it's the sequence of calls that messed up the thing.
41 (other comment)
Damn, I am eating my own poison... will fix this when I am home using my desktop...
42 (other comment)
Sample endpoint 3 periodically returns an empty result with the following error:
"JavaFX Application Thread" java.lang.StackOverflowError
There is no known way for the user to directly cause it as of the time of writing this. It seems completely random. What is worth pointing out is that sample endpoint 3 returns a
very long json result
which is also reflected in the extra 1 second it takes to load the result into display.
This seems to be a performance issue and we should consider how to address this as soon as possible.
Have tried a few times and wasn't able trigger it, if it is a peculiarity with regards to this API, perhaps we should remove it as of now.
43 (other comment)
interface as in the screen?
44 (other comment)
I would prefer to remove it i.e. maximize the space by expanding the result display. This is to keep the UI simple and more consistent by ignoring screen size differences, which might be error-prone because we need to cater to various sizes. Just my 2 cents.
45 (other comment)
I think this is a great suggestion which I suppose you have specified in #203, let's put it in 1.2b or future milestones...
46 (other comment)
Given that we can also retrieve the status phrase from response.getStatusLine().getReasonPhrase()
, perhaps we can have a hover over effect that when users hover over the status, they can see the textual response phrase.
47 (other comment)
Perhaps we could try it out and determine if it makes sense visually. My hope is that it should not be displayed in such a way that clutter the essential information that we are trying to show.
48 (other comment)
If the length of response is a concern, perhaps we can check the response length and limit that to a reasonable number such that we display a proper error message when the length exceeds that.
49 (other comment)
I think this might be a UI tweak/task where we explore better ways to the layout of the response(both what we extracted out and the actual response entity-body of the API request). Maybe anyone who has thoughts of how our UI could be improved can have a go at this?
50 (other comment)
Let's start adding required tests as issues to be fixed by 1.2b so that we don't ignore them anymore:)
51 (other comment)
Ok I think I need to see how find command works first
52 (other comment)
Seems like it's fixed, @ong6 can verify again.
53 (other comment)
@tjtanjin the run and send test lowly unreliable they sometimes pass sometimes fail on my comp and I couldn't even commit my work on sourcetree.
Yes @JulietTeoh if run & send have issues, please include in the error message so that I can take a look 👁️
54 (other comment)
A link to a video on RESTful API is included in help window by #300
55 (other comment)
I agree with your observation, though instead of removing the menu bar outright, I feel that we can replace it with a banner saying History and Response, much like your original UI mockup. We can discuss this tomorrow along with other UI tweaks we can make this coming week.
Great suggestion, let see what others think tmr
56 (other comment)
Codecov Report
Merging #327 (0e3a546) into master (a276db4) will decrease coverage by
0.07%
.
The diff coverage is
100.00%
.
@@ Coverage Diff @@
master #327 +/-
============================================
- Coverage 67.99% 67.91% -0.08%
- Complexity 557 554 -3
============================================
Files 100 100
Lines 2037 2032 -5
Branches 202 201 -1
============================================
- Hits 1385 1380 -5
Misses 588 588
Partials 64 64
Impacted Files Coverage Δ Complexity Δ
...n/java/seedu/us/among/model/endpoint/Endpoint.java
96.51% <ø> (-0.20%)
23.00 <0.00> (-3.00)
...ava/seedu/us/among/logic/commands/EditCommand.java
96.15% <100.00%> (ø)
12.00 <0.00> (ø)
...du/us/among/model/endpoint/UniqueEndpointList.java
92.85% <100.00%> (ø)
21.00 <0.00> (ø)
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update a276db4...0e3a546. Read the comment docs.
Dude I deleted a bunch of lines and coverage decreased?
57 (other comment)
Closed by #393
58 (other comment)
Anyone is currently working on this? If not I chop first...
59 (other comment)
Is this going to be added in the form of a new feature?
yes, I am thinking of upArrow to retrieve the last command.
60 (other comment)
If this gets added before the night can update the UG as well? 😄
yea sure
61 (other comment)
@tjtanjin After this PR I have nothing else to add for UG, feel free to submit tonight 😃
62 (other comment)
There are a few areas where we need to address, at least base on the coverage analysis report by IntelliJ. While some areas such as UI could be disregarded, we should try to cover those cases in Logic, Model, and Commons, possibly discuss further on specific work allocation in the afternoon meeting
63 (other comment)
Possibly discuss the progress on this task in the afternoon meeting. From my perspective, I think the UG styling & structure are of decent quality, largely thanks to @tjtanjin. If all features are finalized, perhaps everyone could go through the UG at least once again just to make sure no stones are left unturned.
64 (other comment)
65 (other comment)
Resolved after today's meeting.
66 (other comment)
Closed by #456
67 (other comment)
Fixed by https://github.com/AY2021S2-CS2103T-T12-4/tp/releases/tag/v1.3.1
68 (other comment)
Will add a min size restriction so that the display is complete.
69 (other comment)
need to close the issues not auto closed. @ong6
70 (other comment)
Possible to explore a larger minimal screen size (in terms of horizontal constraint). I think a size that is larger but slightly smaller than a typical laptop screen size (1024px) should still be reasonable as the app will not be operating on tablets or ipads anyway. @AY2021S2-CS2103T-T12-4/developers thoughts?
71 (other comment)
Possible to add in that "it should not contain space", just to be extra clear. @ong6 thoughts?
72 (other comment)
Will try to make the error message clearer.
73 (other comment)
74 (other comment)
Fixed by PR #545
75 (other comment)
Already updated in past PRs.
76 (other comment)
YES!
77 (other comment)
@tlylt Is the allowed range mentioned anywhere in case this gets raised as a bug
will add in a section to explain index in UG
78 (other comment)
perhaps this is the same issue with the quotation mark raised in some other bug reports? If so I think we can close this
79 (other comment)
I made a hot fix is this ok?
I think this is a great point, does it also apply for all other commands when user just do 'add ' or 'run '? If so we can probably give a parameter cannot be empty error as well.
PS. Ok for other commands they will show invalid command format, which is fine as well.
80 (other comment)
HI! I think it may just be an error in the formatting and the quotation marks because i could add a Task without any data and header. Sorry for not clarifying further!
Thank you @tashawan23, will close this as we have already resolved this issue.
81 (other comment)
Already mentioned in UG.
82 (other comment)
In case it was missed out, the appendix for this and
Effort
are already included in the DG but still needs quite a lot of touchup.
Yes in view of the seriousness of this section, extra attention may be required.
83 (other comment)
@tjtanjin I think the diagrams and descriptions are very accurate. A few minor suggestions below:
perhaps step 2 -3 can be rephrased to leave out some low-level details or make the overall flow clearer. I think the few components that are quite important are the following:
Create a EndpointCaller with the endpoint selected
EndpointCaller#callEndpoint()
Generate the right request object to be executed
Execute the request, perhaps with a mention of HttpUriRequest used
for the design consideration, perhaps instead of talking about error handling, we can talk about the OO design that we use to create a EndpoingCaller -> Request etc. I feel that the design you created is quite extensible and follows OO fashion well, so perhaps we can highlight that. If sticking to error handling, perhaps can include the description of how the exceptions are escalated and handled at various levels.
84 (other comment)
When I open the app and click on view -> category statistics
should be able to see the same thing using the following data file
85 (other comment)
Hi, btw I think I just discovered a possible bug. When the category statistics window is opened, and I typed exit in the command box to exit, the app closes but the graph window is still open. This is not consistent with the behavior of the help window. i.e. the help window will close automatically if the app exits.
@kingsleykuan
(11 comments)1 (commented on others PR)
This update is no longer required as it was changed in another pull request, can revert to the current master revision.
2 (commented on others PR)
Sorry I think there was some miscommunication as I also updated the user stories! When merging you can see if you want to keep your version or mine, your version looks good as well.
3 (commented on others PR)
Is this use case not completed yet?
4 (commented on others PR)
Is this precondition required? I think it is fair to assume that a list always exists and it might just be empty.
5 (commented on others PR)
Can move to either the parent package model
or to a new package model.appointment
6 (commented on others PR)
Sorry small change needed here, I made the AppointmentDateTime parsing follow more closely with the user guide so an AM/PM is required now. Setting to 12:00AM instead of 00:00 should work.
7 (commented on others PR)
I am slightly concerned about having Model extend ScheduleModel in terms of design, but I understand why it's done this way for abstraction and to maintain compatibility. If there is no better solution then it LGTM. Perhaps in a future PR we can abstract the different model interfaces out (for tutor, appointment, etc) and then have Model extend all of them for consistency.
8 (commented on others PR)
I think that [index] is incorrect. The square brackets indicate that an argument is optional, which it is not here. Furthermore, index and name should be uppercase
9 (commented on others PR)
Why does this only check for PREFIX_TIME_FROM and PREFIX_TIME_TO? What if PREFIX_TIME_FROM is present but PREFIX DATE is missing?
10 (commented on others PR)
It should be INDEX [n/NAME]
11 (commented on others PR)
The argument should be [n/NAME] here
12 (other comment)
Please restrict pull requests to only the required changes. This pull request includes tutorial code as well as other code updates which is inappropriate for updating the developer guide.
13 (other comment)
While I really appreciate the creation of the new class AppointmentBook
and the other changes, I must warn against these kinds of monolithic PRs. At the current moment there are too many changes to look through and accept, and I am unsure how some of these changes will affect other aspects of the code. I worry that with the amount of changes made we may be unable to fix all the test cases by this week's deadline.
May I suggest splitting this PR by creating new branches and cherry picking the relevant commits?
14 (other comment)
Duplicate, resolved by #126
15 (other comment)
There are also pending merge conflicts to resolve before we can approve!
Also see above for my updated comment
16 (other comment)
Dismissed as it is logically possible to have 0 years of experience (eg. a new tutor)
@OhJunMing
(11 comments)1 (commented on others PR)
Side note, I notice we didn't really use Tag attribute from AB3.
Any ideas to use it or just leave it
2 (commented on others PR)
maybe more user friendly to change to "dob/ " instead of b/
3 (commented on others PR)
I assume this works on the GUI
Not really proficient on fx language haha
4 (commented on others PR)
We will shelve number plate away first, its not necessary
5 (commented on others PR)
I think its break point 3.
But should be ok, can merge this PR and fix it later
The main idea/use cases
Means that filter by car brand "honda" only
Means that filter by car type "sedan" only
Means filter by Honda Sedan, means just customer who prefer only honda doesn't pass the filter
Can check again once, once this PR is merged, then can test
6 (commented on others PR)
Sidenote non-crucial:
Rename x into something meaningful like car
7 (commented on others PR)
My bad, thanks rajarshi
8 (commented on others PR)
Redundant comment
9 (commented on others PR)
Redundant comment
10 (commented on others PR)
take note
11 (commented on others PR)
idk whether got regression
12 (commented on own PR)
Hey,
yup yup, my mistake
Already amended it.
Can check it again:)
13 (commented on own PR)
hey, I just changed to Car@leads psps
14 (commented on own PR)
Hey im not really sure abt "hash code account"
I amend to return this.hashcode;
this refers to the car object
15 (commented on own PR)
agreed, changed to Car(String carBrand, String carType)
16 (commented on own PR)
Yea, should e no issue, very very minor edit of the naming of the java doc commetns, not like adding test code
17 (commented on own PR)
LOL, this caused recursion, stack overflow, but I corrected it, its works now
18 (other comment)
I don't think this can be merged.
the photo needs to be your name and show ur face, in low resolution at least, according to the week 7 website requirements
I have already helped to change the about us and added ur image in the pull request aboutus/shizheng
19 (other comment)
Yup looks good, so we start afresh with the UG and DG
20 (other comment)
@rajobasu
I will close this, I presume your week 6 tutorial task has been fulfilled.
Don't want to clutter the open pull requests:)
21 (other comment)
@rajobasu
I will close this, I presume your week 6 tutorial task has been fulfilled.
Don't want to clutter the open pull requests:)
22 (other comment)
DONT MERGE YET, STILL TESTING
23 (other comment)
WE ARE DONE ! address is back in!
24 (other comment)
WAIT LET ME REFACTOR
AFTER I MERGED SHERMAN PR, there were some conflicts, unintended behaviours
@JoelHo
(11 comments)1 (commented on others PR)
This should be at heading level 3 to be consistent with the document.
2 (commented on others PR)
This should be in the quotes to match the other "examples" you changed.
3 (commented on others PR)
Should this be in a different format to match the other "examples"? Additionally, perhaps the newline is not appearing as intended?
4 (commented on others PR)
Should price be Optional>Price>, similar to driver?
5 (commented on others PR)
STUD->STUB
6 (commented on others PR)
Perhaps this chunk could be simply passenger.getDriver.map(x -> x.equals(driver)).orElse(false)
7 (commented on others PR)
This should be in the constructor
8 (commented on others PR)
NullPointerException is probably the wrong exception to throw
9 (commented on others PR)
Should this be indices/indexes?
10 (commented on others PR)
Should we implement it like this (i.e. delete the passengers at index until we hit one with a pool, ignore the rest)? Perhaps a better implementation is to delete all that don't have a pool then error at the end. Also, I think it would be more intuitive if we printed the deleted passengers names rather than size.
11 (commented on others PR)
Would it be better to use argmultimap here rather than implement a custom parser?
12 (commented on own PR)
Fixed in commit 1c344c7.
13 (commented on own PR)
Fixed by commit 0c1b0db on PR #78
14 (commented on own PR)
This method is used to ensure we don't create a "duplicate" pool, so if we checked for passenger equality, the same driver could potentially be driving 2 pools at the same time as long as the passengers were different.
15 (other comment)
Hi @vvan-essa, I believe you have the wrong team repo, this is for W10-1 (i.e. G01 - Team 1). Perhaps you can check your team here.
16 (other comment)
LGTM
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
LGTM
20 (other comment)
Closed by #31
21 (other comment)
Closes #43
22 (other comment)
Closed by #41
23 (other comment)
Closed by #73.
24 (other comment)
Closes #59.
25 (other comment)
Closed by #76.
26 (other comment)
Closes #58.
27 (other comment)
Closed by #60
28 (other comment)
Removed most traces of AB3. Remaining traces will be left as-is.
29 (other comment)
Closed by #103
30 (other comment)
Closed by #103
31 (other comment)
Closed by #103
32 (other comment)
Closed by #96.
33 (other comment)
Closed by #125
@simran-bhadani3
(11 comments)1 (commented on others PR)
Something seems missing here?
2 (commented on others PR)
Very minor suggestion but you can consider renaming the method to updateDeliveryStatusToDelivered just to make the name more descriptive.
3 (commented on others PR)
Remember to add Javadoc comments for this method and also the other public methods,
4 (commented on others PR)
There seems to be a stray Javadoc comment here.
5 (commented on others PR)
Oh XD
6 (commented on others PR)
Actually true, I guess we can work on making them more descriptive in v1.4
7 (commented on others PR)
Should be modifiable.
8 (commented on others PR)
Good catch! I didn't think about sorting them first.
9 (commented on others PR)
I think this can be better phrased as "The name of the person who placed the order."
10 (commented on others PR)
Character by definition includes numbers as well. Maybe you can say it can take in alphanumeric characters?
11 (commented on others PR)
We should probably remove this from the final version 🤣
12 (commented on own PR)
I followed the same convention as the Person model where they use value to store the value of the object.
13 (commented on own PR)
Oh yeah good point about the parser! I will edit the regex accordingly.
I think the regex in the Name class does not accept single characters.
14 (commented on own PR)
oh yes didn't think about that! Will update it accordingly!
15 (commented on own PR)
I am not really sure whether there are any use cases for equals. Probably will leave it in for now in case it is needed and remove it later if it is not used.
16 (commented on own PR)
oh yeah that's a good point, will do that
17 (commented on own PR)
Sounds good!
18 (other comment)
Fix #12
19 (other comment)
Fix #5
20 (other comment)
Fix #14
21 (other comment)
Apart from the replacement of person by order as already mentioned by @xiinweii98, LGTM as of now.
22 (other comment)
Fix #78
23 (other comment)
Fix #105
Fix #106
24 (other comment)
I believe the peer reviewer had a wrong understanding of what it meant.
I don't think this is invalid. The warning should say that this is not an undo-able action. So we are missing the not.
25 (other comment)
I am guessing all of these errors have to do with the parsing of the IndexList so assigning to myself.
26 (other comment)
I think this might be happening because of the regex that I set for order items so probably it isn't able to convert the order description to an order item. Will try to allow the regex to accept special characters as well and see if it works.
27 (other comment)
Fix #187 #154
28 (other comment)
Linked to #165
@cheeerynne
(11 comments)1 (commented on others PR)
same like before, would it be better to put expectedModel as a class variable?
2 (commented on others PR)
For expectedModel, would it be better to declare it as a class instance variable instead?
3 (commented on others PR)
The method name should be modified too since the function no longer returns a boolean while 'isNonZeroUnsignedInteger' sounds like a boolean method name! Maybe 'checkIndexValidity' would be a better name
4 (commented on others PR)
Also, should the parameter 's' have a more meaningful name instead of simply 's'?
5 (commented on others PR)
I think there is a typo here, should have a hyphen 'non-positive'
6 (commented on others PR)
Similar to above, should this method name be modified such that it does not sound like a boolean?
7 (commented on others PR)
I think you inserted the wrong portfolio under Dylan's one!
8 (commented on others PR)
Same here and Rachel's one too
9 (commented on others PR)
I think for the extra spaces, can specify 'extra spaces in between 2 words' since extra spaces before/after the entire name is allowed.
10 (commented on others PR)
Extra words typo?
11 (commented on others PR)
Since we are using NAME here, we can just change NAME_IN_LIST to NAME for editMember
12 (commented on own PR)
Yes, you are right!
13 (commented on own PR)
Sure
14 (commented on own PR)
Ok!
15 (commented on own PR)
Ok sure!
16 (commented on own PR)
Ok!
17 (commented on own PR)
Ok sure!
18 (commented on own PR)
Sure!
19 (commented on own PR)
@code can refer to the parameter input too
20 (commented on own PR)
Okay fixed
21 (commented on own PR)
Ok, noted
22 (commented on own PR)
okay
23 (other comment)
lgtm
24 (other comment)
findTasks is able to find tasks that are not in last view too. Also, findTasks does not search through a task's deadline.
25 (other comment)
duplicate
@colintkn
(10 comments)1 (commented on others PR)
UserGuide still seems to reflect "iclose INDEX"? Maybe userguide can be edited to reflect the change
2 (commented on others PR)
I didn't know how to use multiple tags at first. Can consider putting command example for both:
'iadd r/10-100 d/Broken light c/Furniture g/ HIGH
'iadd r/10-100 d/Broken light c/Furniture g/ HIGH g/ URGENT
3 (commented on others PR)
Might want to consider ending sentences with full stops.
4 (commented on others PR)
Any reason why it differs from UserGuide? XY-YYY in UG vs XY-ABC in help message.
5 (commented on others PR)
Is it necessary to bring in alloc ? Wdyt.
6 (commented on others PR)
Ok. I'll add it on my side.
7 (commented on others PR)
Maybe want to break it up ?
| * * *
| user | search for issues | find a specific task and get its information |
| * * *
| user | search for issues | find tasks matching a specific criteria |
8 (commented on others PR)
Change to:
| * * * | user | search for residents | find a a specific resident's information |
Can remove " .... residents matching a specific criteria".
Rationale:
rfind only supports searching based on name. (can't find email etc)
9 (commented on others PR)
Can change to SunRez
10 (commented on others PR)
Final detail. But maybe Can add full stop here.
11 (commented on own PR)
Yes, its optional. I showed two variations in the use examples. But I'll explicitly put that r/ is optional under the radd explanation
12 (commented on own PR)
removed this chunk of code. Thank for pointing out.
13 (commented on own PR)
Noted. Added actions to represent the checks. And used guard clauses.
14 (commented on own PR)
Ok. Added the example command to the userGuide.
15 (commented on own PR)
Added this point. Thank you.
16 (commented on own PR)
Good point raised. Will make the changes.
17 (commented on own PR)
This resident is used solely for allocation command tests.
18 (commented on own PR)
Good point. Thanks.
@yeoutzer
(10 comments)1 (commented on others PR)
I think to follow the java coding standard, this should be changed back to listing imported class explicitly instead of the star import.
2 (commented on others PR)
Same thing here, should probably import the classes explicitly.
3 (commented on others PR)
Good work. Good use of SLAP.
4 (commented on others PR)
Thank you for changing to the correct link. Same for the others.
5 (commented on others PR)
Thank you for updating the diagram.
6 (commented on others PR)
Good job on the documentation of implementing review feature.
7 (commented on others PR)
Could probably add in assertion or requireNonNull for defensive coding. Other than that, good job. Code looks neat and follow SLAP.
8 (commented on others PR)
Wild card import that you missed out when changing.
9 (commented on others PR)
Wild card import as well.
10 (commented on others PR)
Wild card import here as well.
11 (commented on own PR)
It is okay, the documentation will be reflected as step 1 and step 2 correctly.
12 (commented on own PR)
It is okay, the user will not be able to search by multiple criteria, it will be either by question or by category.
13 (commented on own PR)
Thank you for pointing that out. I have changed it.
14 (commented on own PR)
Yes, thank you for the suggestion. I have tried changing the sequence diagram accordingly.
15 (other comment)
Unable to replicate this problem.
@vuminhhieunus2019
(10 comments)1 (commented on others PR)
Avoid using wildcard import, it would be better to list all the import explicitly
2 (commented on others PR)
Should move this to the default branch of the switch statement.
3 (commented on others PR)
You can add which methods you implement for this stats command, you can refer to sort and undo/redo implementation for more details "It implements the following operations:" part.
4 (commented on others PR)
>div markdown="span" class="alert alert-info">ℹ️ Note: The lifeline for StatsCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
>/div>
Add this note under the sequence diagram to indicate the limitation of PlantUML
5 (commented on others PR)
I'm unable to see the image, you might want to check the link again
6 (commented on others PR)
Remember to add these 2 commands in the table of content.
7 (commented on others PR)
You can consider enlarge the image a little since I find the text in your sequence diagram is a bit small.
8 (commented on others PR)
This should be alias cmd/add al/a
right?
9 (commented on others PR)
Similar as above
10 (commented on others PR)
Similar as above
11 (other comment)
Fixed
12 (other comment)
I suggest that you add an additional constraint to the alias, that it can be alphanumeric only, no space is allowed (similar to the constraint for tags). This can handle this error
13 (other comment)
Fixed
14 (other comment)
Invalid bug. This is clearly specified in the User Guide
15 (other comment)
Not a bug
16 (other comment)
Need to add a check requireNonNull
for alias
17 (other comment)
Already specify in the documentation
18 (other comment)
Invalid bug. This is already mentioned in the User Guide
19 (other comment)
Invalid bug. This is already mentioned in the User Guide
20 (other comment)
AB3 has the same behaviour.
21 (other comment)
The flashcards are supposed to be appeared in random order in Review Mode.
22 (other comment)
Fixed
23 (other comment)
Fixed
24 (other comment)
Fixed
25 (other comment)
The question in Review mode is supposed to be appeared in random order.
26 (other comment)
This feature is similar to AB3
27 (other comment)
Fixed
28 (other comment)
Specify that this command only sorts cards currently displayed in list view
29 (other comment)
Looking good. I think it is okay to merge now
30 (other comment)
Looking good. I can merge now
31 (other comment)
Fixed
@AiwassPrime
(10 comments)1 (commented on others PR)
Err..is this space suppose to be there?
2 (commented on others PR)
I think one more test for "tag does not exist"?
3 (commented on others PR)
An empty line between description and parameter section. According to CS2103T coding standard.
Similar issues in the rest of code.
4 (commented on others PR)
Empty line here.
5 (commented on others PR)
Here
6 (commented on others PR)
Here
7 (commented on others PR)
Here
8 (commented on others PR)
Here
9 (commented on others PR)
Here
10 (commented on others PR)
Should there be some test for execute?
11 (commented on own PR)
Nice suggestion, updated!
12 (commented on own PR)
Fixed.
13 (commented on own PR)
This is what I thought and planned to do, but I implement this way is to achieve consistency with editCommand.
14 (commented on own PR)
Updated
15 (commented on own PR)
I have changed this to addTwoTags.... In this case, two and multiple have no difference, and adds a set of methods just for this test is a bit.. wasteful?
16 (commented on own PR)
Updated with javaDoc
17 (commented on own PR)
Documentation (UG) updated
18 (commented on own PR)
Solved
19 (commented on own PR)
Solved
20 (commented on own PR)
nice suggestion, fixed
21 (commented on own PR)
I move this line to note of command and delete it in addCommand. It only means, you cannot give an invalid format for the optional field, just because it is optional. Otherwise, some may think since it is optional, the MB will ignore the wrong format and proceed with the rest of the command.
22 (other comment)
YEY!
23 (other comment)
This is done!
24 (other comment)
Done
25 (other comment)
Done!
26 (other comment)
Any task without a startTime cannot be recured
27 (other comment)
#103 is related to this, after command out #103. Bug seems to be fixed. Please check this!
28 (other comment)
Fixed.
29 (other comment)
Fixed.
30 (other comment)
Nice! LGTM although I recommend adding OptionalFieldTest unit tests.
It is implemented.
31 (other comment)
Now can delete recur and startTime by using editCommand (just like tags).
Example: edit 1 a/
This will delete the startTime of task 1.
32 (other comment)
hmm i definitely agree with you that we shouldnt stay in the middle.
When implementing the recur command, I thought it was a good to have a command on its own because:
- Personally, i would have more 'one-time' tasks than recurring tasks if im using a a task manager. E.g. we would only have 1 assignment 1 in a module. So for recurring tasks, realistically speaking, it should be made into a command rather than just a normal field like 'workload' for example. This is also a justification we can give for the criticism on 'why does recur have to be a command on it's own' if we get it?
- With regards to your 1st problem, I am not quite sure as to why the book will stop updating weekly? If a task is recurring weekly, it will refresh the deadline every week regardless, no? Might need some clarification there haha sorry
- The second scenario is actually a v important consideration. One possible implementation can be when a user marks task as done, we can update the deadline (and remove starttime maybe), so that the user can see the next deadline already? what do you think? Another possible solution would be to maybe add a next deadline: field in the task card which is way simpler i think?
For the refresh command, i think it is a bit unsafe to add a new command with only a day left because I think quite a few changes would need to be made? and we only have (only a day at most) to implemement the feature? I am scared that it will be too tight for v1.3 deadline?
Overall, I am still fine with either though cuz for me, both ways work fine and (i think) either way can be justified hahaha
For 1, I think your justification is also valid, maybe need a vote?
For 2, let's say you added a task whose deadline is 2021-4-1, recurs daily, and then you close the software. After two months, you open the software again, it will become 2021-4-2. But if you do not enter any command and close the software straight away, the storage will not be updated, it is still 2021-4-1.
33 (other comment)
Missing UGDG update, other than that LGTM
Yup, I did not get consent from anyone to add this feature. Just put it here first, if everyone thinks this is good. Then I will update those.
34 (other comment)
In addition, findTag &*(, will also throw exception but never catch
35 (other comment)
Linked to #136
36 (other comment)
Linked to #136
37 (other comment)
Linked to #136
@github-amanda
(10 comments)1 (commented on others PR)
Maybe can use StoreMando instead of storemando
2 (commented on others PR)
Instead of “value”, maybe you can change the variable name to “date”
3 (commented on others PR)
Maybe you can use StoreMando instead of storemando for consistency
4 (commented on others PR)
Agreed
5 (commented on others PR)
Would "expiry date" be better than "expiryDate"?
6 (commented on others PR)
Maybe it will be clearer to put it as "2nd item of the current list" as user may think that it is the overall list.
7 (commented on others PR)
"sort quantity asc" is now the updated command for sorting items in ascending order of quantity. There is also the "sort quantity desc" command for sorting items in descending order of quantity. You may want to update this! 😃
8 (commented on others PR)
Just a minor concern, but does the number of spaces matter? e.g. Will 'Room Living ' match 'Living Room'?
9 (commented on others PR)
I think both are fine. Since it's just an additional word, I think it's ok to leave it as it is!
10 (commented on others PR)
Just a minor language error, "is neither day(s) or week(s)"
11 (commented on own PR)
ok
12 (commented on own PR)
Please look at the updated version. I have modified the sample names, they are now in alphabetical order.
13 (commented on own PR)
Yes, this will not work, and it is supposed to be that way. This follows the "add" command, where location "bed (lots of whitespaces) room" is considered a different location from "bed room". Hence, when I clear items in location "bed (lots of whitespaces) room", items in location "bed room" will not be deleted.
14 (commented on own PR)
Noted, I have changed the method name to parse_emptyArg_returnsClearCommand()
15 (commented on own PR)
I think this is a good suggestion, but not a compulsory implementation since the current implementation is still a workable product. Maybe we can do this in the coming iteration.
16 (other comment)
looks good!
17 (other comment)
#10
18 (other comment)
LGTM
19 (other comment)
looks good
20 (other comment)
LGTM!
@Cheng20010201
(10 comments)1 (commented on others PR)
should be flashcards
2 (commented on others PR)
need a new line at EoF
3 (commented on others PR)
Can we turn isNotAns
to isAns
and flip it inside the method? A bit counter intuitive to read haha
4 (commented on others PR)
This file (and some other docs) are like no longer needed but for now we just keep them for references bah haha
5 (commented on others PR)
Perhaps this part can be applied abstraction on? Now the code is getting more and more imperetive haha
6 (commented on others PR)
should remove this file (user local storage)
7 (commented on others PR)
I think the .gitignore needs to be modified s.t. data/* won't be version controlled. Previously it was working but now due to some refactoring issues it no longer ignores.
update: (fixed jn)
8 (commented on others PR)
LGTM but having a separate method like:
public static Flashcard[] getDatabaseOfFlashcards(int numberOfQuestions) {
return Arrays.copyOfRange(getDatabaseOfFlashcards(), 0, numberofQuestions);
}
is nicer as my pending PR has many tests related to this method so I would imagine there would be lesser conflicts if you have the above instead. Thanks!!!
9 (commented on others PR)
lgtm if we don't potentially need more boolean
s for CommandResult
(do we?)
10 (commented on others PR)
It would look fancier if we add descriptive words before user
s; E.g. as a dilligent user/learner or sth?
11 (commented on own PR)
should be json array of all tags of one single flashcard
12 (commented on own PR)
Originally that Interface is to help with a generic method to change the content of flashcardListPanelPlaceHolder
. Now the current version it is no longer needed. Will fix it thanks!
13 (commented on own PR)
This is the dummy history data generation part. Since (now the Score
handles the LocalDatetime
which is the Score's
creation time internally) && (The precision of LocalDatetime
is only limited to seconds in our application), a consecutive creation of Score
object will result in duplicate Score
objects stored (which, by the same principle of how we store Flashcard
s, will throw an exception).
When the data is no longer dummy, we can safely assume the user would at least take 1 second between finishing the current quiz and finishing the next quiz.
If the above is not a legitimate assumption, I can change my implementations (but some efforts are required).
14 (commented on own PR)
I forgot since the entire test class is ... dummy :>
Will change it back.
15 (commented on own PR)
It is essentially because
int index = -1;
if (isShowingHistory) {
index = flashcardListPanelPlaceholder.getChildren().indexOf(flashcardListPanel.getRoot());
if (index != -1) {
flashcardListPanelPlaceholder.getChildren().set(index, scoreHistoryListPanel.getRoot());
}
}
the
indexOf(...)
method would return -1
if the object to look for is not in the List
.
Thus a static variable seems not very ok but I kind of cannot think of any elegant solution to it...(?😬)
16 (other comment)
Wrong PR chosen. Sorry.
17 (other comment)
The weblink for the previously updated README.md is also incorrect (cs2103t -> cs2103 in url, at line 16), please change it as well. Thanks!
18 (other comment)
Closed #8
19 (other comment)
This PR will be made as draft until we formally assign tasks for members on 28th Feb.
Reason: to link with issues created after that
20 (other comment)
The deadline is soft 👀
21 (other comment)
This is just to 'figure out', so after you know what is going on you can just self-close it or create a draft PR containing the experiment you ran with the code base.
22 (other comment)
This is just to 'figure out', so after you know what is going on you can just self-close it or create a draft PR containing the experiment you ran with the code base.
23 (other comment)
This is just to 'figure out', so after you know what is going on you can just self-close it or create a draft PR containing the experiment you ran with the code base.
24 (other comment)
igtm~ probably should merge this first then merge the flashcard class? because classes like phone etc dont exist anymore and not sure what would happen if we merge into that
😮 I will try to merge your flashcard class first; this one is less dependent on other stuff so should be relatively easy.
25 (other comment)
@xyzhang00 Some simple modifications are needed for README.md
as per W7 tasks. お願いします!
26 (other comment)
I suggest since commands like
AddCommand
ClearCommand
DeleteCommand
EditCommand
FindCommand
are probably not of our concern here, can I try experimenting to remove them? @Jellybeano This will make morphing slightler easier 😃
27 (other comment)
Added greetings message for the app.
Perhaps create a PR for it, as it will probably be something useful for the application? 😃
28 (other comment)
Will close it for now, perhaps will reopen and discuss how to properly merge this during team meeting.
29 (other comment)
Will close it for now. Perhaps will discuss later how to merge it during team meeting.
30 (other comment)
@xinweit after I merged my previous PR into the code base there seems to be a conflict. The conflict is in MainWindow.java
and it seems its relatively simple to resolve from your side. Its a bit troublesome from my side as I would need to make changes of your PR locally, so can help?
You can resolve it by trying to pull the latest master branch to your GUI-display branch. Thx!! 😃
31 (other comment)
Just clarify: is it clear now where can this Mode
class be potentially useful (i.e. help change the mode of display)?
32 (other comment)
GJ!!
33 (other comment)
With this commit the GUI now magically can differentiate between learn mode and quiz mode display. But the modification here is only tentative (and far from elegant) and mainly to provide some idea of how GUI works; to further support the next
and check
feature, more work needs to be done.
34 (other comment)
Looks like this PR shares a common commit history with previous one, is this intended?
35 (other comment)
Err so this PR is a super set of your PR 74 and 76? Sorry I am a bit confused
36 (other comment)
lgtm!
...
37 (other comment)
The pr is on thank you @xyzhang00
38 (other comment)
(hopefully) no need to add any new features
39 (other comment)
Apologies :_)
40 (other comment)
lgtm
41 (other comment)
Got some overlap with #176 haha sorry I forgot to switch branches early; should have no conflicts
@marcusleeeugene
(9 comments)1 (commented on others PR)
Good use of assert statement here!
2 (commented on others PR)
Plural form here helps to identify the multiple values available, good job!
3 (commented on others PR)
There's a redundant new line here, can remove if not required.
4 (commented on others PR)
Good use of for-each loop, its very readable!
5 (commented on others PR)
Good use of ifPresent!
6 (commented on others PR)
Rating is from 0-5
7 (commented on others PR)
Not sure if your revert worked correctly, because my implementation was initially HashMap. I'll merge in yours probably the last since it already takes in my new changes.
8 (commented on others PR)
Nice catch!
9 (commented on others PR)
It is now easier for users to read the help window commands with the spacing, good job.
10 (other comment)
Duplicate Issue that has already been created.
11 (other comment)
Duplicate Issue that has already been created.
12 (other comment)
Task Complete.
13 (other comment)
Completed Task.
14 (other comment)
Completed Task.
15 (other comment)
Feature already implemented in AddressBook.
16 (other comment)
Already implemented in AddressBook.
17 (other comment)
Completed.
18 (other comment)
Completed.
19 (other comment)
Tutorial, not required to merge.
20 (other comment)
Tutorial, not required to merge.
21 (other comment)
Tutorial, not required to merge.
22 (other comment)
Tutorial, not required to merge.
23 (other comment)
Sidney updated the UI.
24 (other comment)
Revise feature is supposed to allow for edits on top of existing data. The current edit feature replaces existing data when editing. The shortcut keys, such as Ctrl+S/Command+S to save, Esc and TAB keys already allows users to quickly navigate within the window which is for for fast typists.
25 (other comment)
The program only accounts for 1 user, not multiple. However, we will add in square brackets for multiple reviews in the logging box so that it is clearer.
26 (other comment)
Similiar to #145
27 (other comment)
Increase padding between tags and reviews
28 (other comment)
Sorry, i pull requested to the wrong team project.
@glatiuden
(9 comments)1 (commented on others PR)
**View Tutor** | `view_tutor INDEX`, <br> e.g. `view_tutor 1`
2 (commented on others PR)
I don't think the variable appointmentList
and its respective methods are required in the Appointment
class, since Yuting is handling the List
classes, which already have an AppointmentList
.
3 (commented on others PR)
This line may not be required, as referenced to #12, Tag
is not a superclass of Name
, Email
and Gender
.
4 (commented on others PR)
I think we might need another dateTime
variable here because from what I see, the tutee can only edit either the timeFrom
or timeTo
. If we update one of them, the another's value will be overridden due to how updatedTimeFrom
and updatedTimeTo
is instantiated. Maybe @kingsleykuan can double confirm on this? Thanks! The rest of the codes LGTM!
5 (commented on others PR)
This should be EditBudgetCommand
instead?
6 (commented on others PR)
I think you forgotten to remove the debugging print statement
7 (commented on others PR)
I think you forgotten to remove the debugging print statement here as well
8 (commented on others PR)
You have used the Enum correctly! Just a small recommendation, sorry I kind of forget how secondary school grading works, but maybe the Enum can accepts values such as "A1", "A2" to make it as close to the real world context? Otherwise it's fine to retain as single alphabet! Not an alarming issue!
9 (commented on others PR)
I think you forgot to remove debugging print statement here
10 (commented on own PR)
Noted! Will omit during the merge.
11 (commented on own PR)
This meant to serve as a base template as I modified the styling slightly. Can choose to adopt this styling or go with the default style from AB3.
12 (commented on own PR)
Noted, I have removed it & committed.
13 (commented on own PR)
Noted, then I'll shift it back to Model for meantime. If we decided to adopt this approach then I'll reinstate back in this file
14 (other comment)
Resolved the merge conflicts and used the Ui image from the master branch instead.
15 (other comment)
Will resolve the conflicts after PR #2 is approved due to accidental merging of branches.
16 (other comment)
Noted @kingsleykuan, will proceed to merge and remove the stubs in a followup PR instead since there shouldn't be any interference with the rest of the codes.
17 (other comment)
In meantime, please also try to fix the build error (I think it's located in the test cases) as we have turned back on the blocking of merge if there's any build error.
18 (other comment)
Fixed merge conflicts and shifting of Schedule's interface methods to Model.java
.
@icelenaugust
(9 comments)1 (commented on others PR)
Rmb to update the java doc!!
2 (commented on others PR)
Time is not a compulsory field for event right? Only date is if Im not wrong! Is it necessary to throw missing field message format?
3 (commented on others PR)
Maybe you meant Jackson-friendly adapted "task" object!
4 (commented on others PR)
in the adapted task
5 (commented on others PR)
Priority is an optional field?
6 (commented on others PR)
Rmb to edit the java doc!
7 (commented on others PR)
Maybe can edit this javadoc or can leave it when removing dependency!!
8 (commented on others PR)
Rmb to update the javadoc!!
9 (commented on others PR)
Javadoc not matching the method!! You may wanna update
10 (other comment)
That is the intention of the feature. I don't think hard to test because of the intention of the feature is considered as an issue. Moreover, it is quite unreasonable to label it as high severity.
11 (other comment)
why not..
@DarkDestry-t
(9 comments)1 (commented on others PR)
Was this always there as a duplicate since the initial commit?
2 (commented on others PR)
Missing Equality Check test
command = 1 -> false
command = null -> false
command = new command of same parameter -> true
command = same command -> true
command = different command -> false
3 (commented on others PR)
Missing checks
predicate = 1 -> false
predicate = null -> false
predicate = same predicate object -> true
4 (commented on others PR)
You missed the Same object check
5 (commented on others PR)
Hmm not sure why test coverage missed it but I guess its fine.
6 (commented on others PR)
Do either of the following
Sort the collection again in the test case and compare element by element
Use the string comparator to compare every element with its subsequent element in a for loop
The test is to check lexicographical.
If the add command is renamed and no command starts with A, this test fails incorrectly.
If the add command remains but the list is [add, find, alias, edit, delete], this test passes incorrectly.
7 (commented on others PR)
You seem to have misunderstood my approach. This is not testing the sorting order of your getAutocompleteCommands
. This is testing the sorting order of the Collections.sort
function.
What you should be doing is
get a completely clean list of command unrelated to your autocomplete command.
Sort that list of commands as per your expected sorting order Collections.sort(cleanlist)
Iterate through this clean sorted list and compare against your test list
This existing test will fail to achieve its purpose when
logic.getAutocompleteCommand("")
returns [add, clear, alias, find, delete]
Collections.sort
sorts it into the correct order
asserts verify that its the correct order.
Note that the command actually returned a bad order but all the asserts passed.
8 (commented on others PR)
Any particular reason why an extra space is added for some test strings and not others?
9 (commented on others PR)
Makes sense sure. Just a potential issue if and when we decide to fix the prefix to enforce the space. Otherwise LGTM
10 (commented on own PR)
11 (commented on own PR)
12 (commented on own PR)
It isnt intended but has been the case for the original Name predicate. I think as a predicate its equal technically but shouldnt cause any issue if it isnt.
13 (commented on own PR)
Non-issue. As comment says, white space is part of the test case.
14 (commented on own PR)
Fixed to put whitespace between prefix but not between keywords. The whitespace is part of test case
15 (commented on own PR)
Fixed to put whitespace between prefix but not between keywords. The whitespace is part of test case
16 (commented on own PR)
Fixed to put whitespace between prefix but not between keywords. The whitespace is part of test case
17 (commented on own PR)
Fixed to put whitespace between prefix but not between keywords. The whitespace is part of test case
18 (commented on own PR)
Fixed
19 (other comment)
closed with #39 #40 #37 #38 #41
20 (other comment)
closed as duplicate of #2
21 (other comment)
Depends on #85
22 (other comment)
Depends on #84
23 (other comment)
Depends on #85
24 (other comment)
Closed by #130
25 (other comment)
Closed by #130
26 (other comment)
Closed in #129
27 (other comment)
Investigating right now.
28 (other comment)
Issue is due to the webkit package
Is the large file an issue?
29 (other comment)
User story #96
We implemented a web view using javafx webview
30 (other comment)
31 (other comment)
Need more info. It is similar. How so, and how is it different.
32 (other comment)
Nevermind. Info is given in the title.
33 (other comment)
Resolve by key check after toLowerCase
34 (other comment)
Closed as duplicate of #201 and #200
35 (other comment)
May be related to #205
36 (other comment)
May be related to #205
37 (other comment)
May be related to #205
38 (other comment)
May be related to #205
39 (other comment)
May be related to #205
40 (other comment)
May be related to #205
41 (other comment)
May be related to #205
42 (other comment)
Needs more specific 100% reproductivity reproduction steps.
43 (other comment)
To document the lack of email client will cause no action to be performed.
Change on the application result output as well.
44 (other comment)
Do a toLowerCase existing tags check
45 (other comment)
May be related to #205
46 (other comment)
Changes
Output message to include and should not contain spaces
Documentation should remove invalid exmple
47 (other comment)
Duplicate of #152
48 (other comment)
Not exactly a duplicate
49 (other comment)
Documentation to include that no flags will restore original filter
50 (other comment)
Closed as non issue
51 (other comment)
This is not an issue. Output is as expected.
52 (other comment)
To change the wording of output and document that the adding of existing tags will not change the set of tags.
53 (other comment)
May be related to #205
54 (other comment)
Related to #82
55 (other comment)
Title of Window
56 (other comment)
Documentation should include that selection is incremental and can be cleared using select clear
57 (other comment)
Note that your file name is not lower case.
@noelmathewisaac
(9 comments)1 (commented on others PR)
can you replace lines 1-2 with these
---
layout: page
title: User Guide
I think this is needed for the website to display UG and DG links and you removed these lines in the previous PR.
Currently, if you check the netlify build for the website, there are no links to the UG and DG
2 (commented on others PR)
Could you update the user stories to show the edit status and sort by deadline stories. Also, I think all the priorities should be High or Medium for the current user stories
3 (commented on others PR)
I think exceptions are more suitable as we are trying to figure out errors with user input
4 (commented on others PR)
Should an exception be used here instead?
5 (commented on others PR)
I was commenting on your comment on line 63 haha
6 (commented on others PR)
Ok makes sense
7 (commented on others PR)
Should we also add explanation for what each of the statuses mean? Also there's a space missing in line 132
8 (commented on others PR)
Ok can
9 (commented on others PR)
The \
is appearing as part of the text. I think you should remove it.
10 (commented on own PR)
Ok, will add! The tests I wrote so far follow the same format as the ones for the find command.
11 (commented on own PR)
The tests in TagSearchCommandParserTest
checks if the parser splits on space correctly. The test you mentioned should be part of TagContainsKeywordsPredicateTest
. I have added it there.
12 (commented on own PR)
Nope that was for debugging, good catch
13 (commented on own PR)
I think scene builder automatically changed haha
14 (commented on own PR)
I am still updating haha. Can help merge this version first
15 (other comment)
could add a few more tests for parsing using TagSearchCommandParser. Have a few additional comments too
By additional comments, do you mean comments to explain the tests?
16 (other comment)
could add a few more tests for parsing using TagSearchCommandParser. Have a few additional comments too
By additional comments, do you mean comments to explain the tests?
I'm referring to changing the comments for line 37 of TagContainsKeywordsPredicateTest and line 53 of TagSearchCommandTest (just the first two reviews for this PR)
ohh okay 👍
17 (other comment)
would be good to test if the list of tasks is sorted after reopening the app
I think it is. However, you will need to use the exit command so that the storage saved the latest updated task list
If its too much trouble to use the exit function then just writing unit tests to see if the sorting logic works correctly would be good.
18 (other comment)
Closes #49
19 (other comment)
Closes #52
20 (other comment)
This is expected behaviour. Due today will display all the tasks with the current days date regardless of status
21 (other comment)
Changing this will require a lot of changes in the codebase especially in the implementation of the edit command. For now, we can consider renaming the panel to "Today's Tasks" and push the feature to post v1.4.
22 (other comment)
Status has been changed from Not Done -> Uncompleted and in progress-> Expired
23 (other comment)
statuses have been changed and switching commands have been updated
24 (other comment)
Updated tags so that newly added commands have uncompleted
status
25 (other comment)
Same as #114
26 (other comment)
Since we have disabled switching of tabs through click and the user can use the dropdown arrow on the side to view all the tab names, I think this issue is not relevant. @CSmortal @hengyongming @khiaxeng what do you guys think?
27 (other comment)
Tester misunderstood docs. the first example was one tag t/ CS2103T
and the second example was two different tags t/ CS2103T t/assignment
.
@xyzhang00
(9 comments)1 (commented on others PR)
This might be violating Law of Demeter, could there be better way to abstract these type of statements?
2 (commented on others PR)
What about creating methods to switch to learn mode inside the model manager?
3 (commented on others PR)
Is the change back to AddressBookTest intentional? :0
4 (commented on others PR)
Is there a reason for calling sleep?
5 (commented on others PR)
What is this index referring to? Would it be better to set it as a static variable at the start instead of a magic number?
6 (commented on others PR)
Is there a reason for these 2 list panels to implement list panel? extending UiPart>Region> seems to be sufficient OOP for me :0
7 (commented on others PR)
I think there is a .contains() method?
8 (commented on others PR)
I think it is a valid assumption! Probably will be better to document it down in the javadoc later.
9 (commented on others PR)
Is there a need for isAllTags exist on the right side of operation?
10 (commented on own PR)
Edited, thanks.
11 (commented on own PR)
I changed it to isQuestion, hopefully this is better!
12 (commented on own PR)
Ok!
13 (other comment)
Check command requires an argument. The command given was both invalid command format and invalid command as the app is not in quiz session yet. However, invalid command format is caught earlier and hence thrown earlier. If a valid check command is provided, it will display the correct error message.
14 (other comment)
Allow calling learn in learn mode and quiz in quiz mode to facilitate update of tags
15 (other comment)
@Cheng20010201 I refactored parts of score while doing this, you might want to take a look and see if it is reasonable 😄
@yienyoong
(9 comments)1 (commented on others PR)
You may want to consider removing these extra blank comment lines 😃
2 (commented on others PR)
Nice use of assertions!
3 (commented on others PR)
Sorry, just to clarify, is SCHOOL_RESIDENCE now optional? I may be mistaken but based on my understanding, it is still an optional field?
4 (commented on others PR)
Just to clarify as well, I am unsure as to the reason for adding '>br>' for Add Appointment but not for Edit Appointment and Delete Appointment.
5 (commented on others PR)
Apologies for the oversight! I understand now.
6 (commented on others PR)
Thank you! 😃
7 (commented on others PR)
Maybe this line could also clarify the reason why it is unable to detect changes is because matriculation number is not supposed to be editable?
8 (commented on others PR)
Ohhh I understood 'unable to detect changes' as if matric number is edited in json file, the application will not detect the edit (so matric number will remain unchanged in the application UI)! Not sure if it is just me but would this phrasing be ambiguous?
9 (commented on others PR)
I agree! Thank you Si Ting!
10 (commented on own PR)
To clarify, the whole MESSAGE_NONEXISTENT_APPOINTMENT line was deleted because it was not used anywhere (greyed out). The "Found student with ... also be listed" string is for MESSAGE_STUDENTS_AND_APPOINTMENT_FOUND.
11 (other comment)
I feel this is not technically a bug, we can KIV first and focus on the more important bugs. How about the rest?
12 (other comment)
Actually, how do you validate an address? Different housing types would have different formats? (e.g. 29 Defie Road for landed residences and Blk 123 Bedok St 4 #10-04 for HDBs)
13 (other comment)
I think this is not very important as well, we should focus on the more important bugs then come back to this.
We can always say that we allow for overseas phone numbers as well. However, a limitation I can think of is that the user can input > 8 digits which is most likely not a valid phone number.
14 (other comment)
I agree with what you said.
15 (other comment)
I agree with Yien and its hard to validate name since there's no fixed rules to validate it..
I think if validate is just limit to alphabets (?) but I have this friend who has a hyphen in her legal name too so we can decide how we do this later on if we do it.
16 (other comment)
Yes I think it is valid. I will be fixing it.
17 (other comment)
Would that be too many? If it is then we just pick a few out of these? Those that would benefit the most from screenshots.
18 (other comment)
Documentation Bug
19 (other comment)
Documentation Bug (same as #213)
20 (other comment)
Documentation Bug
21 (other comment)
Will check again when json fields are validated.
22 (other comment)
PR #251 solves this if I am not wrong. Can I close this? @SiTingST @fairyinabottle4
23 (other comment)
Issue closed because this should not be in UG, the user does not really need to know this. NUS has many international students and we cannot assume ALL of them have a Singapore number. As such, overseas numbers should be accepted as well so we cannot restrict it to 8 digits. If this is seen as a bug in actual PE, we will explain as above.
@markmcwong
(9 comments)1 (commented on others PR)
Just this > **Examples**
has an extra space compared to every other ones in markdown, but visual wise does not change anything
2 (commented on others PR)
Perhaps Deleting a passenger
would be more consistent
3 (commented on others PR)
If I'm not wrong, the regex doesn't validate whether the number given is a negative number or not right?
maybe can do ^[1-9]
at start of the pattern to make sure there's no negative sign I guess?
4 (commented on others PR)
Can also test for negative price as those should be invalid too!
5 (commented on others PR)
Thanks for the info!
6 (commented on others PR)
Maybe change the name to NAME_POOL e.g. HOME_POOL and also for other variables ?
7 (commented on others PR)
maybe can change to case PREFIX_NAME.toString()
and the others also for better understanding
8 (commented on others PR)
should be e.g.
instead of e.g.,
?
9 (commented on others PR)
Same for this and the rows below
10 (commented on own PR)
Good suggestion! The invalid names and phone number currently in CommandTestUtil
are with prefixes e.g. " " + PREFIX_TAG + "hubby*"
, perhaps I can create constants without prefixes to be used and rename existing ones for less confusion?
11 (other comment)
LGTM, all links added are correct also
12 (other comment)
LGTM
13 (other comment)
LGTM also
14 (other comment)
LGTM
15 (other comment)
LGTM
@NBH99
(8 comments)1 (commented on others PR)
The string "null" could be "no_url" as the insurance agent may not know what is a null when checking the json file.
2 (commented on others PR)
The string "null" could be "no_url" as the insurance agent may not know what is a null when checking the json file.
3 (commented on others PR)
The log message could be more appropriate.
4 (commented on others PR)
The log message could be more appropriate.
5 (commented on others PR)
The code here does not capture the error where user input "lock" has no password.
6 (commented on others PR)
The CommandResult could have SUCCESS_MESSAGE only since the other values are false.
7 (commented on others PR)
There could be a break here.
8 (commented on others PR)
Could include other attribute like address or phone as some clients in the same family might live in the same house or they give their shared home number or email, unless the insurance agent group the family as one client.
9 (commented on own PR)
Noted thanks for the review
@Yanneko
(8 comments)1 (commented on others PR)
is it just me or is this repeated
2 (commented on others PR)
here
3 (commented on others PR)
A Japanese character/word
4 (commented on others PR)
Yes, it is needed to make sure that the boolean keeps track of the existance of all tags. Like for example if there was a tag that didn't exist, and checkIfTagExists returns false, but subsequent tags exist, the isAllTagsExist boolean will be updated to the last check made.
5 (commented on others PR)
Enters Quiz mode
6 (commented on others PR)
Normal users probably will have problems with what 2^32 is.
7 (commented on others PR)
Probably shouldn't be leaving debugging lines in our actual code.
8 (commented on others PR)
Wait were we supposed to paste our sections of the UG here?
9 (commented on own PR)
Imeanlike sure but maybe sometime later. This isn't gonna make or break it for us.
10 (other comment)
Moved my changes from the other pr here. Now this pr also solves the issue where the input tag does not exist on any flashcards.
11 (other comment)
i am now tho
12 (other comment)
Was solved by Xinwei's exception check in Quiz class.
@rajobasu
(8 comments)1 (commented on others PR)
Hey can you remove the role part, since for now I think we are randomly distributing tasks so that we all get to learn equally? We discussed this yesterday i guess. otherwise LGTM!
2 (commented on others PR)
Hey, I actually changed the names from Car@Tinder to Car@leads as you told yesterday, can you reflect these changes?
3 (commented on others PR)
LGTM
4 (commented on others PR)
change this to normal stream, parallel stream just makes things slower on such a small scale.
5 (commented on others PR)
good idea would be to trim the filterString that you get
6 (commented on others PR)
um, i dont get why this is so? why just check objects for equality, same information should have same object. I think you should add another field like numberplate if you are worried about collisions. What you can do is if there is no explicit numberplate then just assign a random number to the numberplate (best random number is just the current timestamp in nanoseconds).
7 (commented on others PR)
why did you delete this? we want to support multiple cars owned by the customer, all the code is written like that.
8 (commented on others PR)
ig so, we can add this as a testcase handling later on no worries
9 (other comment)
@nighoggDatatype Need to merge the conflicts! After that will accept
10 (other comment)
Yep, LGTM
@pngsebastian
(7 comments)1 (commented on others PR)
List>Appointment>
should be replaced with ObservableList>Appointment>
2 (commented on others PR)
You can create a MESSAGE_INVALID_APPOINTMENT_DISPLAYED_INDEX
to replace MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX
here.
3 (commented on others PR)
This should be replaced with
'(patient.equals(toCheck.getPatient())
|| doctor.equals(toCheck.getDoctor()))
&& getTimeslot().hasOverlap(toCheck.getTimeslot());'
4 (commented on others PR)
docs to update to EditAppointmentCommand.
5 (commented on others PR)
I don't think this is needed since it functions the same as hasAppointment
method.
6 (commented on others PR)
I don't think this is needed as it functions the same as contains
.
7 (commented on others PR)
I don't think this is needed as it functions the same as hasConflict
.
8 (commented on own PR)
Yes, it is intended to be in the format of delete-patient --force INDEX
, which is indicated in FORCE_DELETE_MESSAGE_USAGE
. Will edit the javadocs so that it's clearer.
9 (commented on own PR)
Yes I think it might not need to be in the try
block, will edit later. The reason why I wrote isForceDelete
is to avoid the possibility of isForceDelete
being not instantialized. Another way is shifting the try block inside the first if statement, which may be a little ugly, almost arrowhead style. What are your thoughts?
10 (commented on own PR)
The reason why I do it this way is so that if the index is wrong for delete-patient --force notAnIndex
, the parseException will be raised as well. I will add in an invalid index message before the message usage to improve on the clarity of the exception.
11 (commented on own PR)
My bad, missed out on this one
12 (commented on own PR)
Meant to align the tail of the comment, will commit the changes.
13 (commented on own PR)
I don't think an exception is needed as indexToParse = args
by default, so aisjdhabakahbakshdbankdjashb 1
will be captured as a ParseException when ParserUtil
calls parseIndex
on it.
14 (commented on own PR)
Yes, it'll look like this:
15 (commented on own PR)
I think we should be specific, if not one might think clear
or list
on their own are valid commands. Will add in the 3 clear commands.
16 (commented on own PR)
I guess this is a problem since we mentioned that:
"Parameters can be in any order.
e.g. if the command format specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable."
Would it be better if we say parameters with prefixes e.g. n/
can be in any order to avoid confusion?
17 (commented on own PR)
I will also add in that --force
before the INDEX
is required in the sentence for greater clarity.
18 (commented on own PR)
Resolved with links from patient commands to doctor commands and the other way round. (bidirectional links)
@YuFeng0930
(7 comments)1 (commented on others PR)
Sochedule?
2 (commented on others PR)
No need to check null?
3 (commented on others PR)
Maybe consider YYYY-MM-DD (all upper, instead of partially upper), then hh:mm (all lower)
4 (commented on others PR)
Should this be removed or it's waiting for model dependencies removal?
5 (commented on others PR)
I think for user, "YYYY-MM-DD" would be better, as "uuuu-MM-DD" is lower level stuff.
(Side info: "uuuu-MM-DD" can deal with leap year 0229 problem, generally speaking, it's just a strict version of "yyyy-MM-DD")
6 (commented on others PR)
The exampleDate can consider to be put in CommandTestUtil as a constant, otherwise, it looks like magic number.
7 (commented on others PR)
Once these magic dates are put in CommandTestUtil, you can just import and use them without initialising them again.
8 (commented on own PR)
Thanks for spotting the error:)
9 (other comment)
Yeah I think Deadline should under Task package. LGTM:)
10 (other comment)
Can these changes can pass all the current unit tests?
It didn't pass, since the unit tests now are mostly old ones that haven't been updated yet.
11 (other comment)
Need to enable four tests in AddTaskCommandParserTest and AddEventCommandParserTest
12 (other comment)
Yeah correct, now is like user can't even input the thing and stuck there
13 (other comment)
Specify in UG that can add an ongoing event
14 (other comment)
Add Documentation
15 (other comment)
I'll fix this
16 (other comment)
duplicates
17 (other comment)
Fixed by #322
18 (other comment)
Fixed by #322
19 (other comment)
Fixed by #322
@nicoleang09
(7 comments)1 (commented on others PR)
Perhaps this line can be broken down for better readability?
2 (commented on others PR)
Maybe this can be phrased as "clears all entries from the address book if tags are not specified..."
3 (commented on others PR)
Should "the option" be capitalised?
4 (commented on others PR)
Should this example be changed to match the usage
5 (commented on others PR)
Should this be thrown as a warning instead?
6 (commented on others PR)
Should contacts be capitalised here?
7 (commented on others PR)
Since listAppt currently doesn't have options, perhaps this can be removed?
8 (commented on own PR)
I was thinking about that too, but when they used step 1, step 2... it was to describe the actions a user performs. Mine is more of the sequence of how the code handles the scenario, so I was not sure if it will be confusing if I use the same convention.
9 (other comment)
addAppt implemented when setting up appointment logic.
10 (other comment)
Resolved by #132
@hojiefeng
(6 comments)1 (commented on others PR)
Perhaps this can be named AddVenueCommand?
2 (commented on others PR)
Perhaps throwing VenueNotFoundException would be better?
3 (commented on others PR)
I think CommandException is correct for commands.
4 (commented on others PR)
Is there an issue with modifying the list while streaming it?
5 (commented on others PR)
Use removeIf instead possibly
6 (commented on others PR)
Ok but change the command name when it is fully implemented
7 (other comment)
This is still work in progress, do not merge for now
@whatthelump
(6 comments)1 (commented on others PR)
Hi @wangtao0717 I believe you should change the filename to your github_username_in_lower_case as specified on the website. Otherwise this LGTM!
2 (commented on others PR)
Hi @wangtao0717 very minor typo here, will approve when this is fixed!
3 (commented on others PR)
@awzhenyi Very minor but there is a typo (double space) between 'the' and 'user'. Otherwise, LGTM!
4 (commented on others PR)
@jaredtengsw minor but apartment should be changed to residence here!
5 (commented on others PR)
Apartments should be changed to residences
6 (commented on others PR)
Just to clarify, should upcoming bookings include bookings on the current date and bookings 7 days from the current date? The use of isAfter and isBefore will return false for boundary values.
7 (commented on own PR)
@VRSoorya So booking should be its own package under model? Because I recall someone saying booking should be under residence, but I can have it in its own package if that works better
8 (commented on own PR)
This sounds sensible, I have replaced references to "Amy" and "Bob" with "Booking1" and "Booking2" respectively.
9 (other comment)
Fixes #29
10 (other comment)
LGTM! @wangtao0717 should this say 'fixes #45' or are there more changes to be made?
11 (other comment)
Addressed by #110
12 (other comment)
To clarify, the current Name class should be more restrictive in the types of symbols accepted (people's names should not have special characters such as ^) while there are no restrictions for ResidenceName (apart from only whitespaces)?
@markuz5116
(6 comments)1 (commented on others PR)
Maybe can create a constant for DateTimeFormatter, same for the output to string
2 (commented on others PR)
Some notes are bold, while others ain't. I think it would be better if it was consistent
3 (commented on others PR)
Same comment as above.
4 (commented on others PR)
maybe using toEditIndex makes its purpose more obv?
5 (commented on others PR)
Good use of constants!
6 (commented on others PR)
maybe referencing what the booleans are used for would make them clearer?
7 (commented on own PR)
TitleContainsKeywordPredicate implements Predicate. Therefore in terms of LSP, having it as Predicate would be more accurate.
8 (other comment)
Complete UiMockup image
9 (other comment)
Solved in PR #28
10 (other comment)
To delete: Address, Email, and Phone
11 (other comment)
Delete Address #63
12 (other comment)
Delete Email #64
13 (other comment)
#67 Add Exam class
14 (other comment)
#85 Add ExamList
15 (other comment)
for assignment and assignment list
16 (other comment)
add, edit, clear, find, delete, done
17 (other comment)
I can do clear, find and generaleventlist
18 (other comment)
Done for modules and persons
19 (other comment)
Clear event too
20 (other comment)
I can do clear, find and generaleventlist
clear, find and generaleventlist are done.
find is based on description
21 (other comment)
Add to UG to say this functionality clear all tags.
22 (other comment)
We encourage students to have the freedom of inputting their own modules. This includes customized version, hence we do not check that a module title is invalid.
23 (other comment)
Remove square brackets
24 (other comment)
Make the name not optional in UG. Ensure error msg for edit person is updated too
25 (other comment)
Update UG to say that commands are case insensitive
26 (other comment)
Update UG to say benefits of both GUI and CLI
27 (other comment)
@jellymias Can you include in the intro that RemindMe reaps both benefits, something along that line
@Hzxin
(6 comments)1 (commented on others PR)
Do you think we need an exam list as well since a module can take in multiple exams at the same time.
2 (commented on others PR)
If this is only for GeneralEvent, is it better to have AddGeneralEventCommand instead to be more specific and clear
3 (commented on others PR)
Perhaps can add example of the exact delete exam command
4 (commented on others PR)
maybe editIndex can be a better attribute name in this context.
5 (commented on others PR)
Possible assertions can be put here to detect null values after assigning.
6 (commented on others PR)
is there a reason to not use TitleContainsKeywordsPredicate
7 (other comment)
Update CI status, codecov, sitemap and acknowledgement
8 (other comment)
Fixes #61 #62
9 (other comment)
solves #66 #111
@yutingzou
(5 comments)1 (commented on others PR)
Should this be 'Tutor Tracker'?
2 (commented on others PR)
(minor) Will removing 'I can' be better?
3 (commented on others PR)
should it be 'deletes the application'?
4 (commented on others PR)
Tutor Tracker
5 (commented on others PR)
should Set>Tag> be TagList?
6 (commented on own PR)
Thank you. This part is deleted.
7 (other comment)
Thanks guys! I'll merge this PR first in order to continue adding the command and I'll make the changes based on Vinleon's suggestion later:)
@Prabhakaran-Gokul
(5 comments)1 (commented on others PR)
Good job in adding both valid and invalid prices
2 (commented on others PR)
Good idea to check all the different price ranges. Perhaps consider checking for the case when the price is MAX_INT and MIN_INT as well?
3 (commented on others PR)
Good idea to hide windows!
4 (commented on others PR)
Should it be 'entry' instead of 'food review'?
5 (commented on others PR)
Good Addition to make the feature more clear for users
6 (other comment)
Merge Gokul About us
7 (other comment)
Thanks for catching this! We will fix this
8 (other comment)
Thanks for catching this bug! we will fix this
9 (other comment)
We will standardize! Thanks for reporting
10 (other comment)
Thank you for pointing it out! we will fix this
11 (other comment)
Since no feature improvements are allowed in v1.4, we will close this issue
12 (other comment)
Appendix section removed by @Donavanty in pr #185
@godjuansan
(5 comments)1 (commented on others PR)
We copy this from the original implementation of AddressBook
2 (commented on others PR)
Agree, to be consistent with the other prefixes in the CliSyntax.java, I think w/, h/ and mc/ is better
3 (commented on others PR)
ListCommandCommand? How about ListOfCommandsCommand?
4 (commented on others PR)
Add my github link also for consistency
5 (commented on others PR)
please add my github link here
6 (commented on own PR)
I have moved it inside the command itself
7 (other comment)
merged already
8 (other comment)
This phrasing is to be consistent with every other command because the other commands have the format of what the command do followed by whether it is dedicated to note/contact.
9 (other comment)
The ... means that you can add multiple tags so arguments like addnote c/Do Homework t/tag1 t/tag2
is allowed
@w-yuchen
(5 comments)1 (commented on others PR)
Maybe something like clear appointment
and clear property
? As well as a clear all
to clear everything at once?
2 (commented on others PR)
It seems weird to me that
next()
forCompletion
returns aCompletion
?
Since it implements Status
it needs to have a next()
, and Completion
shouldn't lead to any new statuses anyway, so I guess it's fine to return itself? Creating new objects at a terminal step may lead to some undesirable side effects. By checking if .next()
returns the same object it can even be used to check if something is calling .next()
on a Completion
.
3 (commented on others PR)
Very minor nitpick, but n/
here should be referring to the property name right? Would it be good to use a property name for the example instead?
4 (commented on others PR)
Will the user be able to change back to DarkTheme?
5 (commented on others PR)
i think according to the validation regex price can have cents. Should we still consider that for the price?
6 (commented on own PR)
The and
here is referring to the logical AND, I think I made it quite ambiguous here. Will go change it.
7 (commented on own PR)
Wasn't thinking straight when writing this. Somehow thought this part will be combined with appointments in the future.
8 (commented on own PR)
For completeness I guess, maybe can remove.
9 (commented on own PR)
The keywords have no prefixes though, so I think a for loop like this would be more convenient.
10 (commented on own PR)
I don't think any property prices bother including the cents part though, other than perhaps after tax calculations? But anyway will go add another field.
11 (commented on own PR)
Doing that causes quite a number of tests to fail due to having hardcoded comparisons. Since most tests don't actually interact with Client or AskingPrice, it is safer to just implement a new method for properties with clients.
12 (commented on own PR)
changed to dollars + cents.
13 (commented on own PR)
I think I meant to say if the user is searching for bob
, the command will search both lists for properties with client bob
and appointments with Meet bob
. I'm using name here since it searches for the string in the name
attribute of appointments.
14 (commented on own PR)
added 313 to 315
15 (commented on own PR)
oops sry.
16 (commented on own PR)
The default keywords don't have any prefixes though.
17 (commented on own PR)
Alright sure.
18 (commented on own PR)
Alright sure. Anyway I just realised a user can search for containing all given tags by using multiple r/ parameters.
19 (commented on own PR)
Oh right eveything has prefix. Ok will go change the find name one to n/.
20 (other comment)
Need to decide on how to store housing type first before this can be implemented.
21 (other comment)
Add github actions badge
Add acknowledgement
22 (other comment)
Add use cases for everyone's own parts.
23 (other comment)
Closed as there are changes made to the branch.
24 (other comment)
15 March discussion:
Limited set of tags
Housing types
Currently not under tag but under property type
Reuse the code from addressbook
Add extra tags: bedroom and bathroom numbers, both existing as compulsary tags
25 (other comment)
What do the others think of this refactoring of
PocketEstateParser
?
Looks fine to me, passing checks means the other functions are proabably not affected much anyway.
26 (other comment)
closed with #167
27 (other comment)
Closed due to another branch continuing from here.
28 (other comment)
closes #196
29 (other comment)
Achieved with usage messages and user guide.
30 (other comment)
closed with #223
@ZechariahTan
(5 comments)1 (commented on others PR)
It might be needed as we should allow the user to add themselves to the system regardless of whether they have been assigned a driver or not
2 (commented on others PR)
Is the toString method call required? if this Pr is just for renaming was removing the call a mistake?
3 (commented on others PR)
I think you might have to 'change delete my profile to 'delete employee profile' as the user is the HR exec now and they're managing other employee's profiles.
4 (commented on others PR)
Is it necessary to update the passenger list after adding the pool? As far as I understand there shouldn't be a change in the passenger list after pooling?
5 (commented on others PR)
Is there a better way to test if the right pool is shown instead of checking the size of the filteredlist? maybe getting the pool object from the filtered list and asserting that it equals an expected pool?
6 (commented on own PR)
Thanks for the comment! To clarify, the VALID_[VARIABLE] constants are not used as replacements for user input but rather for the personbuilder and other such utility functions during testing. As for tests concerning user inputs, the constants declared below of the form [VARIABLE]_DESC_BOB, and as they are supposed to emulate user inputs, they are of the String datatype. Hope this addresses your comment!
7 (commented on own PR)
Thanks for the comment! I will make the relevant changes.
8 (commented on own PR)
Oh nice catch! I'll make the required changes!
9 (commented on own PR)
Thanks for bringing this up. I think it might be useful as it would prevent the violation of the Law of Demeter when other classes try to call for the TripTime strings.
10 (commented on own PR)
Good point. I removed it as Intellij suggested doing so as double data types aren't nullable but I'll add it in just in case.
11 (commented on own PR)
Nice catch! I didn't think of it but I realised when testing that the \d+ already catches negative cases as "-" is not a digit and so the input string would fail the isValidPrice check!
12 (commented on own PR)
You're right. I was intending to throw the same exception that the requireAllNotNull() check in the line above it does but an illegal argument exception would be more fitting.
13 (commented on own PR)
Noted thanks for the heads up.
14 (other comment)
Resolve issue #10
@zenlyj
(5 comments)1 (commented on others PR)
Good change! The addition of new lines after each component of the flashcard will help to improve readability.
2 (commented on others PR)
Should this be "This card already exists in FlashBack." instead?
3 (commented on others PR)
Should this be step 2 instead of step 1?
4 (commented on others PR)
Perhaps you should also state that the user can search by specifying both the question and category. eg. "find q/ >keyword> c/ >keyword>".
5 (commented on others PR)
Should we list out all the imports instead of using a wildcard?
6 (commented on own PR)
Great suggestion. I have updated the section accordingly.
7 (commented on own PR)
Fixed. It should show now.
8 (commented on own PR)
Added. Also fixed the broken links in the table of content.
9 (commented on own PR)
Updated, thanks for mentioning!
10 (other comment)
LGTM!
11 (other comment)
Good job! Code is written in high quality with evident use of OOP and abstraction.
12 (other comment)
LGTM! Tests are well written and have a good coverage of the Find command.
13 (other comment)
LGTM! Code is concise and easy to understand.
14 (other comment)
Looks good! Documentation is detailed and well written.
15 (other comment)
CI failed to run
@kieron560
(5 comments)1 (commented on others PR)
Shouldn't this be under 1a? Since you type the index in step 1.
2 (commented on others PR)
Shouldn't there be a MSS for this where you state that you request for the list of events to be set to the current date?
3 (commented on others PR)
Consequently you can put this under extensions 1a 😃
4 (commented on others PR)
Can just use getFilteredEventList().size() + 1
5 (commented on others PR)
Are all these commented out test supposed to be added back in later?
@glennljs
(4 comments)1 (commented on others PR)
Is the else supposed to return a cross instead of empty string? If not maybe change the javadoc accordingly.
2 (commented on others PR)
This is pretty inefficient I guess, can change to utilise a Set.
Set>Event> set = new HashSet>>(events);
return set.size() == events.size();
Alternatively (slightly faster time):
Set>Event> set = new HashSet>>();
for (Event e: events)
if (!set.add(e)) return false;
return true;
3 (commented on others PR)
Ok!
4 (commented on others PR)
Alright, I agree with the standardisation requirement. However, since the purpose of this PR is to implement Events, I think it is out of scope to change the UniquePersonList as well to maintain standardisation. We can start a new issue for this.
5 (commented on own PR)
Added in latest commit, multiple tags shouldn't be allowed, but can start an issue to add that functionality.
6 (commented on own PR)
This one I not sure but I think because the purpose is to list all tags then tags is better?
7 (commented on own PR)
Adopted in latest commit.
8 (commented on own PR)
Adopted in latest commit.
9 (commented on own PR)
Adopted in latest commit.
10 (commented on own PR)
Adopted in latest commit.
11 (commented on own PR)
Changed to "noNameAndNoTag" in latest commit.
12 (commented on own PR)
Adopted in latest commit.
13 (commented on own PR)
Adopted in latest commit.
14 (commented on own PR)
Adopted suggestion!
15 (other comment)
LGTM
16 (other comment)
LGTM
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
Will implement/fix find, list, tags methods
20 (other comment)
LGTM
21 (other comment)
But when invalid, do we want it to throw error? or isit better to just do nothing
I think we should throw an error so the user understands what is wrong if they try to use the feature wrongly.
22 (other comment)
Invalid Index:
Out of Bounds Index:
@frisciliasultan
(4 comments)1 (commented on others PR)
Very minor, but should the JsonProperty be "status" instead of "isDone"?
2 (commented on others PR)
Perhaps checking whether index > 0 is unnecessary because the error would be thrown from parseIndex method in ParseUtil class?
3 (commented on others PR)
I get the idea but I think this line could be confusing to some people. Could consider removing the year, like "e.g. 29-02, a date only valid in a leap year" or something to that extent?
4 (commented on others PR)
Hmm how about "e.g. 29-02-2021, because 29-02 is not a valid date in a non-leap year"
5 (other comment)
lgtm
6 (other comment)
Similar to #130
7 (other comment)
Similar to #142
8 (other comment)
Appropriate error message since the datetime input by user is blank and not in the specified format dd-MM-yyyy HH:mm
9 (other comment)
edit 0
has been handled to throw "Index must be a non-zero positive integer". However edit 99
will appropriately throw "at least one field to edit must be provided" because the command did not follow specified format. Once user adds at least one parameter to edit, then invalid index error will be displayed.
10 (other comment)
Fixed via #189
11 (other comment)
Fixed via #189
12 (other comment)
Split into #232 and #233
@Cp-John
(4 comments)1 (commented on others PR)
Should "Appointment's %s field is missing!"
be "Property's %s field is missing!"
?
2 (commented on others PR)
Should update the comment to properties
3 (commented on others PR)
Should empty Appointment
be empty AppointmentBook
?
4 (commented on others PR)
Should update address book
to property book
?
5 (commented on own PR)
Updated already
6 (commented on own PR)
I think it should be one command for both property book and address book? Which one is better?
7 (commented on own PR)
Ok, I got what you mean. So split the command into 3
8 (commented on own PR)
Ahhaha, this one is not implemented yet
9 (commented on own PR)
Not implemented in its class. I will try to add it later
10 (commented on own PR)
Thanks, will update it
11 (commented on own PR)
Ok, will update it
12 (commented on own PR)
Fixed
13 (commented on own PR)
It is strange that it is displayed as "9:00am" on my laptop. maybe due to java versions?
14 (commented on own PR)
Restored
15 (commented on own PR)
Forgot to mention, I changed the sorting order to be compulsory for easier implementation
16 (commented on own PR)
actually %1$s
is replaced by the string "asc" or "desc"
17 (commented on own PR)
Ok
18 (commented on own PR)
The test for SortAppointmentCommand is not done yet. The current content is simply copied from another file
19 (commented on own PR)
Yes, so do not merge until I finish the rest
20 (commented on own PR)
Should be able to merge now. Finished adding tests
21 (commented on own PR)
The method actually sorts the appointment list but the displayed filtered appointment list is sorted accordingly. Should I change back the javadoc comment?
22 (commented on own PR)
updated
23 (commented on own PR)
Fixed. Thanks!
24 (commented on own PR)
Fixed
25 (commented on own PR)
Actually, in AppointmentBook::resetData
, only the appointmentList
gets replaced
26 (commented on own PR)
I have added getCommandWord(String)
in PocketEstateParser
27 (commented on own PR)
can
28 (commented on own PR)
fixed
29 (commented on own PR)
Thanks for your kind suggestion.
30 (other comment)
Sure!
31 (other comment)
Only supports undo for add, delete, edit commands. Tests will be added later.
@Jellybeano
(4 comments)1 (commented on others PR)
not too important but probably can import the static final variable MODE_QUIZ and MODE_LEARN so that the code looks nicer? 😄 same for the rest of the magic numbers
2 (commented on others PR)
if possible, maybe add descriptions behind each user? like hardworking user etc
3 (commented on others PR)
possess 😄
4 (commented on others PR)
probably "number of correct attempts increments"
5 (commented on own PR)
Fixed!
6 (commented on own PR)
Oh thanks for catching that haha
7 (commented on own PR)
gots it
8 (commented on own PR)
new commit for added abstraction as well as clearer names for the image variables
9 (commented on own PR)
oh i was assuming that when they gave 1 page to paste optional contributions to user guide this was what they meant but now that i think about it
10 (other comment)
Solved in #60
11 (other comment)
Solved in #86
12 (other comment)
Solved in #86
13 (other comment)
Solved in #93
14 (other comment)
Solved in #88
15 (other comment)
Due to the application being targeted at fast typists, it is assumed that users should experience little to no difficulty in typing an extra 5 characters before checking an answer; which is why we chose to implement the check command this way. 😄
16 (other comment)
Interesting idea, but as we did not consider this issue very relevant to our target audience, it was decided that this would not be a function of our application. Thanks for the suggestion nonetheless!
17 (other comment)
For our target audience (fast typists), we assumed that the additional adding of command to switch between modes would be inconsequential, compared to the potential confusion caused by being fast directed back to menu mode after finishing a quiz. Thanks for the suggestion though!
18 (other comment)
Will be solved when implementing showing all answers to quiz flashcards at the end, as asking for answers during a quiz is not in line with the spirit of flashcard assisted learning. Thanks for suggestion though!
19 (other comment)
Actually if no number parameter is provided, all flashcards will be added to the quiz. We'll add this to the user guide
20 (other comment)
same as #156
21 (other comment)
same as #146
22 (other comment)
same as #123
23 (other comment)
Solved in #109
24 (other comment)
same as #156
25 (other comment)
same as #123
26 (other comment)
fixed in #168
27 (other comment)
fixed in #168
28 (other comment)
fixed in #168
29 (other comment)
Tags now allow for whitespaces between words. but any trailing whitespaces will be removed
30 (other comment)
fixed in #109
31 (other comment)
fixed in #172
32 (other comment)
fixed in #172
33 (other comment)
same as #155, fixed in #165
@mechastriker3
(4 comments)1 (commented on others PR)
yea i think can
2 (commented on others PR)
Are these commented out stuff important?
3 (commented on others PR)
But i think looks ok overall, let's merge it !!!
4 (commented on others PR)
yup, or can we use taggedList?
5 (commented on own PR)
yup agree
6 (commented on own PR)
Ok, we can standardise to use the Option class to represent a option instead of using a string, similar to prefix.
i'll just tag everyone and myself to remind us to use it @edelinetenges @nicoleang09 @Stratostorm @mechastriker3 @clarlzx
7 (commented on own PR)
ok
8 (commented on own PR)
that makes sense
9 (other comment)
test reopening issues
10 (other comment)
Looks good
11 (other comment)
this PR is voided
12 (other comment)
closes #41
@SiTingST
(4 comments)1 (commented on others PR)
It seems more appropriate to change it to StudentBook.
2 (commented on others PR)
Perhaps you can consider placing a quotation for the command, for i.e. 'Add Student' to enhance readability?
3 (commented on others PR)
Lines 200 to 202 are the same as lines 226 to 228. Perhaps you can write this in the parameter format section to avoid duplication?
4 (commented on others PR)
The in-page hyperlink idea sounds good!
5 (commented on own PR)
We should use the StudentBook::isExistingMatricNumber
method and boolean
is sufficient. Thanks for pointing this out!
6 (commented on own PR)
Since date and startTime are supposed to be of type LocalDate
and LocalTime
respectively, it would be a better idea to just store them as their own type instead of String
.
7 (commented on own PR)
Yea, it is still an optional field.. Earlier on in our UG, we state that items in square bracket are optional so we should stil follow their convection!
8 (commented on own PR)
Good observation! I just realized that we might not need the >br> for the commands..
9 (commented on own PR)
I will fix it now!
10 (commented on own PR)
Good point! It turns that I can use isValidFaculty
method instead of coding a new method.
11 (commented on own PR)
It's being used in the UI side (StudentCard.java
) in which the vaccination status label will be set to textUI
.
12 (commented on own PR)
Good point! Seem more appropriate to talk about appointment clashes. Thanks!
13 (commented on own PR)
Hmmm.. I don't think its needed since we are just letting the user knows that even though they can't edit matric number through the edit command... But our app will still approve if they edit the matric number directly from the JSON file ... So if they tried to file a bug saying that our UG state that user's matriculation number cannot be edit yet it can be edited through the JSON file then we can refer them to this line.
14 (commented on own PR)
Yup, I meant to say that the UI will still reflect the new matric number if you edit the matric number field directly from the JSON file. Would "VAX@NUS will reflect the new matriculation number if it is edited directly from the JSON file. " be clearer?
15 (commented on own PR)
Hmm... I understand your concern... But I think the problem stems from the unmodifiable matric number field.
The JSON file allows every field to be edited but the edit command disallow the matric number to be edited..
I'm not really sure how the user will think if we specified that matriculation number cannot be edited in the edit command section... If they read and think that matric number is unmodifiable throughout the app... Then they might think that there is a functionality bug when it comes to the JSON file since it allows the user to edit the matric number....
16 (commented on own PR)
Would writing it down to inform the users that they can edit the matric number in JSON contradict with our edit command behavior? Technically, edit command and JSON are separate areas...
The expected behavior for your given scenario is that VAX@NUS will start up with an empty student book. There are validation checks in place to check that the matriculation number for the appointment belongs to a valid student record containing the corresponding matric number. If the validation fails, VAX@NUS will start up with an empty student book.
17 (commented on own PR)
Okay, I shall make changes to it! Thank you 👍
18 (other comment)
resolve #113
19 (other comment)
Would be good to include more assertions
20 (other comment)
I agree with Yien and its hard to validate name since there's no fixed rules to validate it..
21 (other comment)
I don't think its necessary to validate address too..
22 (other comment)
I agree with Yien about overseas phone number .. Seems to be quite tricky to validate phone number unless we want to restrict the app to only store a local phone number.
23 (other comment)
Yes, per our discussion this is a documentation bug.
24 (other comment)
Do you think we should have prefix for filter and stats so that we can display a more accurate error message? @yienyoong
25 (other comment)
Sounds like a good idea and I will do it now.
26 (other comment)
Yes, we should remove the line from the UG.
27 (other comment)
Making matriculation numbers uneditable seems to be a better option... As a student only has one matriculation number throughout their study in NUS, there is no need for our users to edit their matriculation field. However, if the user add a student with an incorrect matric number that he/she has to delete the particular record before adding a new student record.
28 (other comment)
Yes, perhaps @fairyinabottle4 might want to update this part in the UG.
29 (other comment)
Okay, thank you @picasdan9
30 (other comment)
#190
31 (other comment)
We can just add 'DOES NOT LIVE ON CAMPUS' to the parameter format section in the UG. This resolve #190 #226 too.
32 (other comment)
How about we change the value of the vaccination status to be "vaccinated" and "unvaccinated"?
33 (other comment)
yup!
34 (other comment)
I don't think we need to validate it...
@LimJunxue
(4 comments)1 (commented on others PR)
Can change the system from addressbook to planit?
2 (commented on others PR)
Should this be start time?
3 (commented on others PR)
Using {:toc} allows us to see all the headers so is that better?
4 (commented on others PR)
Is testing a java class necessary?
5 (commented on own PR)
Alright thanks!
6 (commented on own PR)
It is in ongoing works.
7 (commented on own PR)
It is in ongoing works.
@rachelljt
(4 comments)1 (commented on others PR)
this is just a personal preference but i think that lines 38, 39 can be swapped so that the email "peterjack@example" can be above "peterjack@examplecom" so that it follows alphabetical ordering!
2 (commented on others PR)
i think it would be better if it the space at the end of line 28 can be brought to line 29 just before "if" so that it is more consistent
3 (commented on others PR)
I think you should replace the full stop after "However" to a comma instead
4 (commented on others PR)
I think you forgot a full stop at the end of this sentence
5 (commented on own PR)
ohhh okay can i will make the changes
6 (commented on own PR)
okay!
7 (commented on own PR)
ok!
8 (commented on own PR)
ohh i think i pulled this before u merged ur pr... so i dont have the task status class right now.. what shld i do?
9 (commented on own PR)
oh its okay i got it!
10 (commented on own PR)
okay!
11 (commented on own PR)
i see... i will change it asap
12 (commented on own PR)
noted!
13 (commented on own PR)
i actually did that before but there was apparently a checkstyle error
14 (commented on own PR)
noted!
@hengyongming
(4 comments)1 (commented on others PR)
What's the difference haha?
2 (commented on others PR)
experience is spelled wrongly
3 (commented on others PR)
Link to github not included
4 (commented on others PR)
Alright sure
5 (commented on own PR)
done
6 (commented on own PR)
done
7 (commented on own PR)
done
8 (commented on own PR)
I mean completed and uncompleted is self-explanatory. The missing space I will add it next time
9 (commented on own PR)
alright will fix that thanks
10 (other comment)
Should we keep the rest other parts of the DG or delete them since it pertains to AB3?
I think we can just leave it in the meantime and remove it progressively in the future.
11 (other comment)
Some tests are failing, try running tests locally to see whats happening
Yep, I have fixed the error
12 (other comment)
would be good to test if the list of tasks is sorted after reopening the app
I think it is. However, you will need to use the exit command so that the storage saved the latest updated task list
13 (other comment)
LGTM, the command execution only updates the currently active tab right?
Erm I am trying to remodel it such that Users can only edit on the home page. The other tabs are more like viewing the task (completed, expired) etc
14 (other comment)
Same issue as #96
15 (other comment)
@rjeez
Thanks for finding bugs for us, we really appreciate it a lot.
However, for this bug, this is the intended behaviour.
add n/hello
desc/yes add
n/bye
desc/no
If there is parameter of the same type it will take the last occurrence which is n/bye
for Name and desc/no
for Description.
@arsatis
(4 comments)1 (commented on others PR)
Very detailed and well-written! Looks very comprehensive 👍
2 (commented on others PR)
Good that you have edited this part out!
3 (commented on others PR)
Documentation for this method looks great!
4 (commented on others PR)
Maybe you might want to change the sample barcode to one which is not contained in SampleDataUtil.java?
e.g. 1234567890
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)
Good job adding the methods required for borrowing books to readers! Maybe we might want to consider separating/abstracting the methods related to borrowing/returning books in the SmartLib class to a separate class?
16 (other comment)
There were some bugs with my local tp file, this pull request is just to check whether my local tp file has been successfully debugged.
17 (other comment)
Will merge this first, so that the others who are trying to update the developer guide will not have to perform these edits again.
18 (other comment)
This pull request looks good to be merged into our group's repository!
19 (other comment)
This pull request looks good to be merged into our group's repository!
20 (other comment)
This pull request looks good to be merged into our group's repository!
21 (other comment)
This pull request looks good to be merged into our group's repository!
22 (other comment)
This pull request looks good to be merged into our team's repository! 👍
23 (other comment)
This commit looks good to be merged!
24 (other comment)
it's not a search-by-name, as the findreader functions searches the keywords independently. Read the UG.
For example, "findreader Amy Bob" will list all the readers "Amy", "Bob", and "Amy Bob".
Will take your first suggestion into consideration though.
25 (other comment)
Thanks for the suggestion, but we do not think this is a bug.
26 (other comment)
Did we even implement this feature?
27 (other comment)
This is a valid bug, oops.
28 (other comment)
This is a valid concern, our team will look into it.
29 (other comment)
Oops, will fix that.
30 (other comment)
This is a valid bug, oops. Might look into preventing deletion if reader still holds onto a book.
31 (other comment)
The definition of the KEYWORD parameter (read: single alphanumeric word) is stated clearly at the beginning of the section. There is even a "Notes" section below the command description (included in your screenshot) that links you to the table of definitions.
32 (other comment)
Its a GUI bug, you'll need to click on the record card to refresh it. Our team is currently still unsure how to fix that, will try to do something about it.
33 (other comment)
Thanks for the suggestion, but this isn't really a bug.
34 (other comment)
Will take your suggestion into consideration.
35 (other comment)
u wot
36 (other comment)
Will fix a minimum window size to prevent trolls
37 (other comment)
???
We believe you forgot to press the "Enter" button. This bug is not replicable.
38 (other comment)
Too bad. You can only delete the reader and add him/her back with his/her current details at the moment.
We might consider enabling an editreader command in future.
39 (other comment)
Betsy Crowe and Betsy Crrowe might be sharing a family email, so we don't think this is a problem at the moment.
We might look into this issue in future though, thanks for the reco.
40 (other comment)
Oops.
41 (other comment)
There may be different books with the same name, but with different genre(s).
Cloud Atlas , David Mitchell
The Cloud Atlas , Liam Callanan.
42 (other comment)
You did not capitalize your A in "and" and T in "the".
43 (other comment)
Scroll down.
44 (other comment)
???
45 (other comment)
Repeated submission of bug by the same author
46 (other comment)
You can Ctrl+C -> Ctrl+V from the User Guide.
47 (other comment)
The reader might be some alien from another galaxy, which has a phone number of a trillion digits.
48 (other comment)
However, you can simply close the help window with a single click.
49 (other comment)
Wot
50 (other comment)
Thanks for your suggestion, but our team prefers to have a single numerical value instead.
@Shuyang0
(4 comments)1 (commented on others PR)
I like how you explained the implementation of Schedule.
2 (commented on others PR)
Looks good.
3 (commented on others PR)
Looks good.
4 (commented on others PR)
Looks good.
5 (other comment)
Need to resolve merge conflict.
6 (other comment)
Name change to all upper case when parsing.
Change all prefix to ":" instead of "/", and update UG and all error messages to reflect as such.
Change regex of name to support "-,/", and update error message to reflect as such.
Change regex of address to disallow colons, and update error message as such.
7 (other comment)
Add a line in UG to justify not restricting meeting intervals.
8 (other comment)
Rejected - implementation is to standardize prefixes
9 (other comment)
Rejected - You can have multiple plans of the same name.
10 (other comment)
"within 14 days" includes today + 13 days
11 (other comment)
Our implementation is for today's meetings, not meetings within the next 24 hours.
12 (other comment)
Rejected. We give user flexibility, in case multiple of the same event occurs in the client's life. E.g. client gave birth twice, so 2 notes say "client had a new child"
13 (other comment)
UG - specify that "@" not allowed in meeting description
14 (other comment)
Specify in the UG that clients cannot have the same name, it is up to the user to ensure that there is something in the name to differentiate clients with the same name (such as parenthesis). Frame this as a benefit to the user ("so that the user will not be confused").
@totoyoyo
(3 comments)1 (commented on others PR)
Do these ever get used? Neither showm or findm uses them.
2 (commented on others PR)
Ok I guess this is fine since its java.util.*
3 (commented on others PR)
We deal with the spacing later
4 (other comment)
lgtm
5 (other comment)
Done by maurice.
6 (other comment)
Lgtm
7 (other comment)
Go to 1.3
8 (other comment)
Completed
9 (other comment)
Added
10 (other comment)
Move to 1.3
11 (other comment)
I'll pull this in since there are no conflicts.
12 (other comment)
LGTM
13 (other comment)
Actually the tests fail
14 (other comment)
Nice fixing of test
15 (other comment)
Should look good to merge.
16 (other comment)
Oh no the tests fail.
17 (other comment)
I fixed the tests.
18 (other comment)
This is done as part of the tP progress.
19 (other comment)
lgtm
20 (other comment)
Ok lets just fix the UG later
21 (other comment)
UG is wrong, it should be ph/ not p/
22 (other comment)
fixed
23 (other comment)
Wrong prefix
24 (other comment)
ok fixed
25 (other comment)
not really a bug though.
@icytornado
(3 comments)1 (commented on others PR)
LGTM
2 (commented on others PR)
LGTM
3 (commented on others PR)
LGTM
4 (commented on own PR)
yup can create one for the appointment, but the output message would be the same, which is "The patient index provided is invalid"
5 (commented on own PR)
Just created one. Thanks
6 (commented on own PR)
agree, thanks for pointing out
7 (commented on own PR)
updated. Thnanks
8 (commented on own PR)
Hi this method is different from Method Contains.
Method Contains returns return internalList.stream().anylMatch(toCheck::equals);
Method editContains returns ireturn internalList.stream().allMatch(toCheck::equals);
9 (commented on own PR)
i think they are different because the editContains is different from Contains
10 (commented on own PR)
Thank you for pointing out!
Can i keep it for now? because it separates from the functions used by add-appt.
In the future if there will be some changes, i can change it easily without breaking the code for add-appt.
In the finalised version, if they are the same, i will rename them.
It has the flow of : hasEditConflictingAppointment -> hasEditAppointment -> editContains
Otherwise the flow would be: hasConflictingAppointment -> hasAppointment -> editContains.
11 (commented on own PR)
OK. Thanks for pointing out.
12 (commented on own PR)
just changed, yes you are right. And i didnt create field for appointment index
13 (commented on own PR)
you are right. Removed duplicate methods
14 (commented on own PR)
you are right. Thanks for pointing out. I just removed duplicate methods
15 (commented on own PR)
you are right. I removed it
16 (commented on own PR)
thanks for pointing out. changes are completed. Will push again soon
17 (commented on own PR)
Hi, i just added in the index for appointments
18 (commented on own PR)
yes you are right. Changes were made. Thank you
19 (commented on own PR)
you are right.
20 (commented on own PR)
i get what you mean. i try to change
21 (commented on own PR)
yup, have made the changes and pushed again. Thank u
22 (commented on own PR)
oh i see, i saw wrongly
@aaronsms
(3 comments)1 (commented on others PR)
Should be fine I guess.
2 (commented on others PR)
This should be fine but what model validation logic does Customer have?
3 (commented on others PR)
Shouldn't be necessary unless this is for future cases and consistency across the models.
4 (commented on own PR)
Okay will specify that it is getter for the fields. But this is still necessary because we want to keep it hidden from the rest of the classes.
5 (commented on own PR)
But note that these changes are essential for us to have the objects be testable. Or else, you can't instantiate a ID with some particular fields without changing the underlying counter. Previously, unlike CustomerId; OrderId and CheeseId are instantiated with native constructor, with no way of not incrementing the underlying counter.
6 (commented on own PR)
By the way, the comment was carried over from seedu.
7 (commented on own PR)
Yeap this is updated.
8 (commented on own PR)
Yeap this is updated in the latest push.
9 (commented on own PR)
Hmm this one we do allow to edit tags, so this would be okay.
10 (other comment)
2F + Mockup - Wei Xue
2F + DG - Lauren
2F + UG - Li Quan
2F + README - Aaron
3F - Daniel
11 (other comment)
@daniellau88 it's your call, the workflow build fails because it tries to access the secrets from the master repository. Other than the access issues, it should be working.
12 (other comment)
Yeap seems like I have included the wrong token. I have updated the secret with the chat ID of our Telegram group.
13 (other comment)
Actually do you want to squash some of your commits, before merging. But other than that, everything seems fine.
14 (other comment)
Now the issue is the workflow works for push events, but not from the pr from forked, because GitHub doesn't expose secrets to forked-triggered workflows. Seems like we have to close this one down, as our current workflow, we are not pushing/pr-ing from master repository's branches, the notifier doesn't work in this case.
15 (other comment)
Since this will not work for our current workflow, unless using plain text tokens, I will close this down. Maybe use it for v1.3.
16 (other comment)
I will recommend squashing your commits before merging if possible.
17 (other comment)
There is one class of ModelStub with no useful methods, and the rest of variations are extending from it and overiding methods important for testing. We could make it abstract though. What else do you think we can do. The idea is we have two kind of test suites: 1 with using the actual ModelManager and 1 using just the stubs.
18 (other comment)
Fixed the above mentioned issues but also, the Json parsing to model for cheese is also not fixed with parsing null fields, and thus have some initialization issues. Have fixed all.
19 (other comment)
20 (other comment)
For the
EditCommandSequenceDiagram
, do include the command string
Yeap done!
@car155
(3 comments)1 (commented on others PR)
I think need to abstract the method here. You can move the null checks to the assignment class and assignment command parser to comply with the other model objects/methods. Since the Model and model manager are mostly facades.
2 (commented on others PR)
This method i think can be abstracted too. Can call a method in person which calls a method in the session list.
3 (commented on others PR)
Should we allow multiple student assignments at the same time? Like in tags
4 (other comment)
Details:
after clear command:
sessions not cleared
other session-related functions not showing on the UI (session JSON is getting updated)
5 (other comment)
Cannot recreate bug
6 (other comment)
phone, email, address
7 (other comment)
change image
@Winniehyx
(3 comments)1 (commented on others PR)
is this a typo?
2 (commented on others PR)
mechanism*
3 (commented on others PR)
should it be feature instead of mechanism?
4 (commented on own PR)
Yup sorry slipped my mind our project name changed.
5 (commented on own PR)
yup sorry for the typo!
6 (commented on own PR)
Yup! i will change it.
7 (other comment)
LG
8 (other comment)
TM
9 (other comment)
Need to fix checkstyle error
10 (other comment)
lgtm
11 (other comment)
lgtm
@Assyarul
(3 comments)1 (commented on others PR)
If we were to set Person as immutable, setDates, setMeetings and setPicture might need to shift to a different class instead. Maybe a PersonFactory?
Either this or state in comments there are mutable fields present in Person.
2 (commented on others PR)
Add javadocs comment here.
3 (commented on others PR)
Just make sure to change the command word in the program beforehand.
4 (commented on own PR)
Sounds good. Added the glossary back in.
5 (commented on own PR)
Fixed
6 (commented on own PR)
Test cases seems to make it hard for you to pass in a LocalDate as an argument. I changed the validation to use #41 dateUtil
. Should we still make it as a LocalDate field?
7 (commented on own PR)
The rest of the other 'with' methods doesn't do their parsing in this testutil though. I think what I'm going to do is,
Allow birthday to accept a string and parse the string. This is primarily for testing.
Create an overloaded constructor which directly accepts a LocalDate. This is what the app will be using.
8 (commented on own PR)
Tried using stream but parseIndex throws an exception. Apparently unhandled exception does poorly with streams unless I explicitly throw it inside the lambda.
9 (commented on own PR)
add-debt and subtract-debt both have almost the exact same implementation in terms of both commands and parsers. Implementing them separately seems inefficient. Implementing them via the ChangeDebtParser and ChangeDebtCommand and passing a boolean increases code reusability.
I feel that adding in an extra boolean input worth it comparing to the additional bloat that will be added in creating more separate commands and parsers.
10 (commented on own PR)
Command only accepts positive value, hence the need for add-debt and subtract-debt.
11 (commented on own PR)
The debt class is to store debt within a Person. We can have negative debt to indicate the person owing money to the user instead.
The ParserUtil.parseDebt is used to parse debt passed into the ChangeDebtCommand, while Debt.isValidDebt is used to validate Debt. I will change parseDebt to parsePositiveDebt for clarity.
The reason for implementing this way is that the user would normally change the debt amount indirectly through adding/subtracting unlike the other fields that would be edited directly using edit
.
Hence the Parser requires a different method to parse positive debt amount rather than the default valid debt.
12 (commented on own PR)
Removing the conditional would introduce even more code by duplicating the behaviour here again in another command.
13 (commented on own PR)
Will implement toUi() in Debt.
14 (commented on own PR)
See above.
15 (commented on own PR)
Sounds like a good idea here.
16 (commented on own PR)
lgtm! We probably need a new way to let the user know which group is selected (is possible)!
We don't have to. The list cell can still be selected i.e the green vertical bar will still pop out when you type in the command like previously implemented.
@Stratostorm
(3 comments)1 (commented on others PR)
Whats all this stuff? Can just delete?
2 (commented on others PR)
Somemore leftover comments here
3 (commented on others PR)
I think its probably fine
4 (commented on own PR)
Yep, thats a typo
5 (commented on own PR)
This error message shouldn't be displayed to the users, its for the parser's to determine which error message to show.
6 (other comment)
resolved by PR #22
7 (other comment)
Add instructions to the UserGuide to teach the user how you can export your contact list to another device running Helibook by copying the data file.
8 (other comment)
Decided that this issue is no longer in line with project direction
9 (other comment)
This was originally by design, but looking at it again, it may be better to remain in the found list. Will investigate and see if its implementable.
10 (other comment)
This is intended behavior, for example, to allow for situations where the contact number is the same due to working in the same office. Eg. 2 different tuition teachers from the same tuition center saved with the tuition center's number.
11 (other comment)
This is intended behavior.
12 (other comment)
Duplicate issue with #195
13 (other comment)
Duplicate bug with #196
14 (other comment)
Duplicate issue with #212
15 (other comment)
Duplicate issue with #46
16 (other comment)
Added commit to fix tag ordering. Fixes #191
@Jonathan-Cao
(3 comments)1 (commented on others PR)
Detailed documentation
2 (commented on others PR)
Great job!
3 (commented on others PR)
Good clarification
4 (other comment)
Now we have to integrate Type into matching as well.
5 (other comment)
Detailed explanation. Good job!
6 (other comment)
Ordering is sorted in ascending order of the last used date by design.
Selecting a piece of clothing will update its last used date to the current date, which is then sorted to the bottom.
The rationale for this is so that users can see their least used clothes when deciding what to wear so as to maximize the usage of their clothes.
7 (other comment)
Issue fixed.
8 (other comment)
Issue solved
9 (other comment)
UG clearly states that matching of multiple input garments is a feature that is planned to be implemented and as such is not yet implemented in the version tested in the PE-D.
10 (other comment)
Issue resolved
11 (other comment)
Issue resolved
12 (other comment)
Issue resolved.
13 (other comment)
Issue resolved.
@jellymias
(3 comments)1 (commented on others PR)
I believe that Model actually has a hasEvent(int index) method that can be used here instead!
2 (commented on others PR)
Is there a need to change the boolean form here?
3 (commented on others PR)
Very clear documentation!
4 (commented on own PR)
thanks for pointing that out!
5 (commented on own PR)
Ah thats a good idea!
6 (commented on own PR)
thanks!
7 (commented on own PR)
yes marcus pointed it out too. I fixed it alr!
8 (commented on own PR)
hmm the null is okay because we check again in EditAssignmentCommand.java
9 (other comment)
i can do the event skeleton, add and edit
10 (other comment)
We can limit the number of characters a user can input
11 (other comment)
Update UG
12 (other comment)
This was not encountered during testing
13 (other comment)
Ignore
14 (other comment)
@jellymias Can you include in the intro that RemindMe reaps both benefits, something along that line
Of course sir!
15 (other comment)
@markuz5116 I have updated the intro. Please close the issue when you're done!
@linhns
(3 comments)1 (commented on others PR)
I think can just leave it in the old form as ParserUtil is static but looks fine
2 (commented on others PR)
I think wildcard import is not allowed
3 (commented on others PR)
Should be a different prefix to category
.
4 (commented on own PR)
I changed the checkstyle to allow wildcard imports since we import considerably from one package. Wildcard imports should be ok if you import more than 3 functions/constants from a package
5 (other comment)
LGTM
6 (other comment)
Nice job. Will merge when everyone has updated UG and DG
7 (other comment)
It seems as if the tester has not reviewed anything so there is no stats to display.
@tsh22
(3 comments)1 (commented on others PR)
Perhaps this 'Implementation' section can be shifted up so that it's in a new section rather than under 'Appendix: Requirements'?
2 (commented on others PR)
There's the option to just use elist without the parameters also right? Perhaps can update the message here
3 (commented on others PR)
Thanks! In this case you can also delete the Label startTime and endTime and perhaps we can change "Date" to "Due date" to be clearer?
4 (commented on own PR)
Sure sounds good
5 (commented on own PR)
Is it ok to stick with or time? Cause i wanna try to indicate that it's either date or time that is not a valid range. Could be that start time is after end time or start date is after end date, or is there a better phrasing?
6 (commented on own PR)
Ok i changed it a little, see if it's less weird like that!
7 (other comment)
Checks not going through
8 (other comment)
Can be written in the DG as a future feature
@DineshMagesvaran
(2 comments)1 (commented on others PR)
Great idea to add a glossary section!
2 (commented on others PR)
Good change. FoodDiary entry is clearer to understand.
3 (other comment)
UG updated.
4 (other comment)
I agree that the documentation is not clear on how the price range search works. Will change the explanation for find and findall commands in the UG to be more clearer.
5 (other comment)
Techno Edge consists of 2 separate words while Clementi is a single word. Therefore, Techno is not a partial keyword. Nevertheless, I will make it clearer in the UG that partial keywords cannot be searched.
6 (other comment)
Not a bug, as it is clearly stated in the UG how each feature expects price to be written. For commands such as add, price is written with a 'p/' as it needs to be clearly specified that it is a price to correctly create an entry. For find/findall commands, prefixes such as 'n/' , 'p/' are not used to make the commands easier and more intuitive to type out (eg: find $6).
7 (other comment)
Will fix the grammatical error.
8 (other comment)
The word 'generally' was used to differentiate it from the findall command to make it less confusing. Nevertheless, i will modify the UG to make the title clearer.
9 (other comment)
Will fix this bug.
@ampan98
(2 comments)1 (commented on others PR)
Perhaps the command format could be simplified to massdelete s/INDEX e/INDEX
instead of having to type out the full words for start and end?
2 (commented on others PR)
I feel that the exclamation marks are unnecessary and do not fit the style of the app responses. Is there a reason for them?
3 (other comment)
This is intended interaction as stated in the UG.
The separator is decided by the user and any perceived confusion arising from their choice of separator can be fixed by choosing a different separator.
4 (other comment)
Same as #118.
5 (other comment)
Same as #118.
6 (other comment)
Special characters are not accepted as inputs, as it would negatively impact the rest of the fields as well. However, I agree that the UG should mention this feature is meant for easy copying into recipient fields (such as the To
field in emails), in which case special characters would not be very useful as separators.
7 (other comment)
Target user is a CS undergraduate/graduate
@jared98lyj
(2 comments)1 (commented on others PR)
Looks good.
2 (commented on others PR)
Tks for the refactoring.
3 (commented on own PR)
True haha. Will make the changes.
4 (commented on own PR)
Got it
5 (commented on own PR)
Wah tks you are sharp 😃))
6 (commented on own PR)
Removed
7 (commented on own PR)
Fixed
8 (other comment)
Will update EditAppointmentCommand to accommodate both start and end time.
9 (other comment)
Made the appropriate changes.
10 (other comment)
Allowed for modification of timeFrom and TimeTo field in EditAppointment
11 (other comment)
Looks good.
12 (other comment)
Looks good!
13 (other comment)
LGTM
14 (other comment)
Added delete_budget utility
Fixed formatting errors
Updated User guide for budget commands
15 (other comment)
Added view_budget command
Updated user guide
16 (other comment)
LGTM
17 (other comment)
LGTM
18 (other comment)
LGTM
19 (other comment)
Yup forgot to add new methods to one of the test.
20 (other comment)
LGTM. But got some checkstyle issues.
21 (other comment)
Lgtm
22 (other comment)
Ensure there is a tutor with the name in the appointment in question.
23 (other comment)
Wah siccck tks so much!
@Shizheng001
(2 comments)1 (commented on others PR)
ok
2 (commented on others PR)
will update to delete customer base on name
@SoonKeatNeo
(2 comments)1 (commented on others PR)
Thanks for styling the diet plans nicely! +1.
2 (commented on others PR)
Thanks for adding the glossary of terms!
3 (other comment)
PR contributes to #18
4 (other comment)
This PR contributes to #16.
5 (other comment)
This PR contributes to #16.
6 (other comment)
This PR contributes to #16.
7 (other comment)
Contributes to #18 .
8 (other comment)
Contributes to #18 .
9 (other comment)
#18
10 (other comment)
Closing, all updated.
11 (other comment)
Handled by the addition of the progress report.
12 (other comment)
Thanks for the feedback. The take here is that the speed improvement is not based on the list of food and their associated macronutrients, but with the recording of food on a longer-term scale with the use of CLI-based inputs as opposed to a GUI one (it's possible to copy-paste values and inputs for multiple days, as opposed to doing meal-by-meal interacting using GUI).
13 (other comment)
Thank you for the bug report.
This is because various other diet plans were added recently. We'll update the UG to match these changes.
14 (other comment)
Thank you for the bug report.
This is because of the need to reset the sample data in the application before you can set your own data. We'll update this to make it more clear in the User Guide, as well as in the application.
15 (other comment)
Thank you for the bug report.
This is because of the need to reset the sample data in the application before you can set your own data. We'll update this to make it more clear in the User Guide, as well as in the application.
16 (other comment)
Thank you for the bug report.
Indeed, we want users to be able to be the "own masters of their destiny" (i.e. be able to set their own weight goals). We'll update the User Guide to fix the grammatical error here.
17 (other comment)
Thanks for the bug report.
The issue is actually in the feature listing, as opposed to in the quick start as mentioned. In addition, this is also because you will need to clear the sample data on first launch before you are able to input your own data. We'll make this clearer in the UG and the application.
18 (other comment)
Thanks for the bug report.
We'll include this in the list of commands implemented in the UG.
@jasaaanlim
(2 comments)1 (commented on others PR)
Perhaps the magic numbers can be replaced with named constants to make the formula easier to understand 😃
2 (commented on others PR)
I LOVE THE LOGO!! GOOD JOB
3 (commented on own PR)
Good point! Will update this.
4 (commented on own PR)
Updated command name.
5 (commented on own PR)
You are right! Thanks for pointing that out!
6 (other comment)
Looks good to merge!
7 (other comment)
Looks good to merge.
8 (other comment)
LGTM
9 (other comment)
#90
10 (other comment)
LGTM!
11 (other comment)
Hello,
We've made this clearer by displaying the Food name together with the duplicate count should there be an existing duplicate food name.
12 (other comment)
Actually, the user guide already mentions that for duplicate food names for a given date, they will be appended with a duplicate count - much like how MacOS and Microsoft Windows does it for duplicate file names. So this is an intended behaviour.
Using a count column for each food name will not work, as different food intake may hold different nutrient values.
Please refer here: https://github.com/AY2021S2-CS2103T-T12-2/tp/blob/master/docs/UserGuide.md#35-input-food-intake
13 (other comment)
Confirmed to be fixed.
14 (other comment)
Thanks for the report! Fixed in #190
@jessen11
(2 comments)1 (commented on others PR)
Maybe include my github link for consistency?
2 (commented on others PR)
Do you forget to add the link? or is this intentional? Also maybe list as examples
3 (commented on own PR)
I copy this design from the addressbook code,
4 (commented on own PR)
changed
5 (other comment)
Thanks Prof~
6 (other comment)
Decided to push manually due to low number of lines
7 (other comment)
This is allowed, we will correct the UG.
8 (other comment)
This is allowed, we will correct the UG.
@justgnohUG
(2 comments)1 (commented on others PR)
The one in address/logic/commands is an {abstract} class and exists in a different package from this Command.java.
I think since they are clearly differentiable by file path, it shouldn't be an issue. Because alias/Command.java is named as such logically.
"Paths (or URLs) are nice because they are nested identifiers."
2 (commented on others PR)
Good catch
3 (commented on own PR)
Made changes to the statement
4 (commented on own PR)
Fixed and removed.
5 (commented on own PR)
This test was originally to ensure the commands are sorted. Under the assumption the "add" command will always be present, regardless, the first command at index 0 should always start with a.
Perhaps a suggestion is to test every first letter of each command and see if they are alphabetical?
6 (commented on own PR)
Modified test case following 1.
Decided to compare element by element.
Thank you for the suggestion.
7 (commented on own PR)
I get your drift.
It was my mistake to include the Collections.sort() again right after calling the method. It is already called in getAutocompleteCommand().
I have implemented your suggestion 2 as per your previous comment. I am using the comparator method so the hard-coding of commands is minimized.
8 (commented on own PR)
Thank you for the spot.
I've added a test case to handle Empty spaces / white spaces.
Documentation for the method getAutocompleteCommands
has been added.
9 (commented on own PR)
Fixed! Thanks
10 (commented on own PR)
Fixed!
11 (commented on own PR)
I believe it was accidentally added
12 (commented on own PR)
Yes it is intentional. Thanks for pointing that out.
13 (commented on own PR)
Added a note in c5811ce
14 (commented on own PR)
As there are quite a few moving parts for the toggling of flags (e.g Command Box, logic, currentList, lastFlag), I'll still need some time to think about how to un-nest this portion.
Small reduction in code in dc2e88d
15 (commented on own PR)
I chose not to convert it to that because it seemed quite verbose to me. I will change it. Thanks for pointing that out
16 (commented on own PR)
That makes sense. Thanks for suggestion.
17 (commented on own PR)
alright this is a cleaner solution thanks!
18 (commented on own PR)
Removed command and it works.
19 (commented on own PR)
Alright I will need time to process this. I will set a "TODO" for now for v1.4.
20 (commented on own PR)
Very good point. Thank you.
21 (other comment)
LGTM
22 (other comment)
LGTM
23 (other comment)
@yaowei-soc fixed PR naming convention to provide more context and information.
Thanks for the reference.
24 (other comment)
Bug found, commands do not show up on start-up sometimes.
25 (other comment)
Nice. Thanks for enabling assertions.
26 (other comment)
Works for me.
27 (other comment)
LGTM.
28 (other comment)
Closed in #124
29 (other comment)
Closed in #124
@tashawan23
(2 comments)1 (commented on others PR)
AddressBook has been changed to HeyMatez
2 (commented on others PR)
Just need to change these names to HeyMatez
3 (commented on own PR)
This is for the editTask command to be added later so that the user can specify which attribute of the task to edit
4 (commented on own PR)
I thought it was simpler to follow what was already implemented so that it is easier to check whether the description is valid too
5 (other comment)
HI! I think it may just be an error in the formatting and the quotation marks because i could add a Task without any data and header. Sorry for not clarifying further!
6 (other comment)
Implemented and merged
7 (other comment)
Implemented and merged
8 (other comment)
Merge add deadline
@mabel-kang
(2 comments)1 (commented on others PR)
Perhaps this should be changed to one that fits the ScheduleCommand class
2 (commented on others PR)
Perhaps this should be changed to one that fits the ScheduleCommand class
3 (other comment)
There is an existing option to only add the student's name and mobile number.
4 (other comment)
Command format is only considered valid when the index is a positive integer and lesser than 2147483647 (Integer.MAX_VALUE)
Index is only valid if a student with the specified index exists
5 (other comment)
Feature can be implemented in v1.5
6 (other comment)
We would like to give our users more flexibility in specifying the time of their lessons.
@maikongeh
(2 comments)1 (commented on others PR)
Looks good to me. SLAP is adhered to and method is not too long or overly nested
2 (commented on others PR)
is RemindedParser a typo?
3 (other comment)
I can do general event done and delete
GE attributes, String description, LocalDateTime
general event description prefix - g/
general event LDT prefix - on/
4 (other comment)
looks good. Follows the same format as the other edit commands and parsers
@xinweit
(2 comments)1 (commented on others PR)
The GUI similar to the picture below
2 (commented on others PR)
lgtm. just want to clarify the JSONArray jsonTags passed as a parameter here is a json array of all of the 'tagged' field values in our database flashcards.json?
3 (commented on own PR)
I think so too. However only the modelmanager is passed into execute and since the mode resides in modelmanager I cant find a way to abstract it out
4 (commented on own PR)
good idea, implemented
5 (commented on own PR)
added to gitignore in new PR
6 (commented on own PR)
thanks for spotting. removed
7 (commented on own PR)
changed to 1 million maximum
8 (other comment)
Added greetings message for the app.
9 (other comment)
Figured out logic behind GUI display
10 (other comment)
Added greetings message for the app.
Perhaps create a PR for it, as it will probably be something useful for the application? 😃
Sure yucheng, created the PR
11 (other comment)
@xinweit after I merged my previous PR into the code base there seems to be a conflict. The conflict is in
MainWindow.java
and it seems its relatively simple to resolve from your side. Its a bit troublesome from my side as I would need to make changes of your PR locally, so can help?
You can resolve it by trying to pull the latest master branch to your GUI-display branch. Thx!! 😃
Sure bro ill do that, no prob
12 (other comment)
updated
13 (other comment)
right now to change the mode of display we are hiding and showing the flashcard panel using setVisibility(boolean) method of javaFX. but I think this mode class will come into handy next time when we want to say parse different commands based on the current type of mode (quiz or learn), ie. commands specific to quiz or learn mode
14 (other comment)
nice. lgtm
15 (other comment)
Should only be able to start when user is in quiz mode I think. Working on it.
16 (other comment)
Err so this PR is a super set of your PR 74 and 76? Sorry I am a bit confused
Yeah it includes those as well.
17 (other comment)
Will be closing this pull request due to a problem in pushing to this quiz-duration branch.
18 (other comment)
Feature, not a bug
19 (other comment)
Hi, that's a great query. However we have decided to leave this feature for future implementations and as of the current version, by managing flashcards we mean adding tags and removing tags from flashcards. We will clarify this further in the user guide. Thanks!
@ljhgab
(1 comments)1 (commented on others PR)
Maybe can change the parseTags here to a parseCategories? 🤔
2 (commented on own PR)
Ok thanks!
3 (commented on own PR)
Maybe i will hand over this part to you haha.
4 (other comment)
I haven't inspect on that deeper so I am not quite sure 🤔
5 (other comment)
LGTM
6 (other comment)
It is meant to be in this way. delete_task/event + an index out of bound and delete_task/event + an index that is not a positive integer are treated as two different types of invalid inputs. The former one is indicating that this index might be correct given sufficient tasks/events in the list, while the latter one is indicating that the index itself is meaningless.
7 (other comment)
The deadline entered is 2021-03-04, March 4th, not April 3rd, and the app does allow to add a task with today as a deadline
8 (other comment)
closed along with #282
@laurenlhy
(1 comments)1 (commented on others PR)
This link doesn't work, there is also a typo in "commands"
I think it should be address/logic/commands/DoneCommand.java?
2 (commented on own PR)
Maybe they can serve as examples of low priority tasks?
3 (commented on own PR)
I wanted to use the same autogenerated TOC as DG
4 (commented on own PR)
The data folder appears for me.
5 (other comment)
Duplicate of #77
@vvan-essa
(1 comments)1 (commented on others PR)
Nice catch!! 👍
2 (other comment)
LGTM!
3 (other comment)
im so sorry i clicked the wrong link!! thank you!!
@Sidney011100
(1 comments)1 (commented on others PR)
java version should be less than or equal to 11
2 (other comment)
Done with the merging of ui-for-school-tags
3 (other comment)
place angle bracket in Keywords
4 (other comment)
removed first additional list
5 (other comment)
add this in ug
6 (other comment)
User Guide has 'Command Summary' and each command has 'Format" shown.
7 (other comment)
Add range to price and show before and after for edit and addon to show the difference
8 (other comment)
"only add on extra things" as Tester has said, thus the command "Add On" is suffice, but will be more explicit
9 (other comment)
edit Delete UG to remove being able to delete by name
10 (other comment)
Two shops can be in the same place, eg in a kopitiam, cannot limit user's usage of the application.
11 (other comment)
allowed same name but different address
12 (other comment)
have specified as such
13 (other comment)
removed extra
14 (other comment)
delete should only allow index
15 (other comment)
will include screenshots
16 (other comment)
agreed, rectified
17 (other comment)
rectified
18 (other comment)
rectified
19 (other comment)
removed price range.
20 (other comment)
bug was written due to incorrect inclusion of delete name.
21 (other comment)
closed issues with pull request that could not be linked #125, #123, #122, #121
@internityz
(1 comments)1 (commented on others PR)
would this cause a problem where name will be searched when user searched for a student's school
2 (other comment)
User can choose not to use mouse by simply using alt-tab and alt-f4 to close popup and switch between tabs
@banchiang
(1 comments)1 (commented on others PR)
execute method looks good but might want to do abit more abstractions to make the method LOC to be less than 30!
@fairyinabottle4
(1 comments)1 (commented on others PR)
Yeah this line I feel you should change to "No appointment found for this student". So it tells the user that the student exists, but no appointment is found for that student
2 (commented on own PR)
Amended
3 (commented on own PR)
Amended
4 (commented on own PR)
I amended and placed quotations around Add. However I did not place quotations around Student as well because I do not want to give the false impression that that is the correct input format for the Add command.
5 (commented on own PR)
Amended
6 (commented on own PR)
Amended. I also changed the SchoolResidence to be "0..1" to enforce that there can only be 1 SchoolResidence if present.
7 (commented on own PR)
Amended
8 (commented on own PR)
Noted, I'm now using an assertion for defensive purposes instead of throwing an exception
9 (commented on own PR)
Or do you consider this as defensive programming?
Yes, this is defensive.
Does it mean if the Model happens to have an appointment that corresponds to no student, this appointment cannot be edited
Yes
10 (commented on own PR)
Thank you and noted, I have abstracted this in Model in my latest commit.
11 (other comment)
Noted on both, I'll make the changes
12 (other comment)
@picasdan9 I have pushed the changes, I also added the 'x' under AddCommandParser to indicate that it is garbage collected, as you suggested earlier
13 (other comment)
Hmmm I don't think it's a documentation bug. I think I need to make it clearer that if the School Residence field is left blank, it will default to DOES_NOT_LIVE_ON_CAMPUS. Then maybe in the filter/stats command we can also specify that DOES_NOT_LIVE_ON_CAMPUS is a valid input.
But @SiTingST, I believe that filter DOES_NOT_LIVE_ON_CAMPUS
should not return nothing?
14 (other comment)
@picasdan9 @SiTingST I like the idea of using boolean values, since it is unambiguous and yet keep the command format intact.
In fact I think using 0 and 1 would be the best. This is to prevent ambiguity regarding the capitalization of the boolean values e.g. true vs True
. We are already using enum for this, so it should be quite similar
15 (other comment)
Yup agreed. No such restrictions as discussed.
16 (other comment)
More of a documentation flaw to me. Let's explain why it is not restricted to 8 digits
17 (other comment)
No need to validate address
18 (other comment)
Agreed, option 1 is the best
19 (other comment)
Strange, I'm not able to replicate this. I think it's because of that one big problem that led to all these smaller issues
20 (other comment)
Add a tip in the UG for add command: If r/ is blank, it will default to DOES NOT LIVE ON CAMPUS
21 (other comment)
Not a bug.
22 (other comment)
for the MESSAGE_NON_EXISTENT_APPOINTMENT, can we mention explicitly that there is no appointment found? So I would word it as " "Found student with matriculation number %s \n" + "However, no appointment was found in the records." I think this would reduce ambiguity greatly.
Other than that, looks great!
23 (other comment)
Introduced amendment to disable editing the matric number of an existing student to prevent confusion. The user guide has also been updated to explicitly mention the different inputs for the two commands
24 (other comment)
Updated UG in the add
command that the default value for SCHOOL_RESIDENCE is DOES NOT LIVE ON CAMPUS
@lrj689
(1 comments)1 (commented on others PR)
Contact instead of persons
2 (commented on own PR)
Used by getTypicalTeachingAssistant method
3 (other comment)
Merge this
@Sharptail
(1 comments)1 (commented on others PR)
Is this printing intentional? If it is, should use logging instead 😃
2 (other comment)
Looks good to merge
3 (other comment)
Reopen to link PR
4 (other comment)
Looks good to merge to fixes #9
5 (other comment)
Reopen to remove traces of AB-3
6 (other comment)
Reopen to remove traces of AB-3
7 (other comment)
Reopen to remove traces of AB-3
8 (other comment)
Reopen to remove traces of AB-3
9 (other comment)
Reopen to remove traces of AB-3
10 (other comment)
fixes #9 as well
11 (other comment)
Fixed by #28
12 (other comment)
Fixed by #23
13 (other comment)
Closing this issue because is fixed with #53
14 (other comment)
Closing this issue because is fixed with #53
15 (other comment)
Closing this issue because is fixed with #53
16 (other comment)
Closing this issue because is fixed with #48
17 (other comment)
Closing this issue because is fixed with #48
18 (other comment)
Closing this issue because is fixed with #48
19 (other comment)
Closing this issue because is fixed with #48
20 (other comment)
closed for potential feature
21 (other comment)
Closing this due to duplicated issue #157
22 (other comment)
Closing this due to duplicated issue #157
23 (other comment)
Closing this due to duplicated issue #157
24 (other comment)
Closing this as it is resolved with #150
25 (other comment)
Unable to replicate this issue with any of device. Closed for invalid bug.
26 (other comment)
Closing this issue as it was fix in #218
27 (other comment)
Closing this issue as it is fixed with #218
28 (other comment)
Closing this issue as it is a suggestion, not a bug
29 (other comment)
Closing this issue as it is a suggestion not a bug.
30 (other comment)
Closing this as it is a duplicated post #200 from the same user.
31 (other comment)
Closing this issue as it is a duplicated post #181
32 (other comment)
Closing this issue because it is an duplicated post #203
33 (other comment)
Closing this issue because it is a duplicated post #181
34 (other comment)
Closing this issue because it is a duplicated post #179
35 (other comment)
I think Jay meant 't' tag is not shown in UG as one of the parameter
36 (other comment)
Closing this issue because it is a duplicated post #181
37 (other comment)
Closing this issue as it is a duplicated post #173
38 (other comment)
Marked as bug instead as customer delete failed is not caught
39 (other comment)
Closing this issue as it is a duplicated post #168
40 (other comment)
Closing this issue as it is a duplicated post #173
41 (other comment)
Closing this as it is fixed in #224
42 (other comment)
Closing this as it was fixed in #224
43 (other comment)
Closing this issue as it was fixed on #150
44 (other comment)
Closing this as it is a similar issue with #189
45 (other comment)
Validation of negative phone number should be included as well from #215
46 (other comment)
Reopen due to accidentally closing the issue
47 (other comment)
Marked as invalid as it is merely suggestion
48 (other comment)
Closing this issue as it is an duplicated post #211
49 (other comment)
Closing this issue as it is a duplicated post of both #198 and #189
50 (other comment)
Should direct user to the help page instead
51 (other comment)
Closing this issue as it is an duplicated post #211
52 (other comment)
This is an intended behaviour, will explain this in the User Guide
@jamesleeht
(1 comments)1 (commented on others PR)
Variable naming convention
2 (other comment)
LGTM!
3 (other comment)
LGTM
4 (other comment)
Not a real bug, substring search not intended. Closing for now.
@Marc-97
(1 comments)1 (commented on others PR)
Should the link be from our repo instead?
2 (commented on own PR)
Thanks for the catch, will update accordingly
3 (commented on own PR)
Understood. I updated the prefix for alias to be "cmd/" for command and "al/" for the alias name
@ssoonwee
(1 comments)1 (commented on others PR)
I feel the command should be rephrased to foodintakeupdate for consistency with the rest
2 (other comment)
LGTM with more detailed descriptions.
3 (other comment)
lgtm.
4 (other comment)
looks good!
5 (other comment)
The issue is now fixed by allowing the parser to allow integer characters.
6 (other comment)
The issue is now fixed by allowing the parser to take in number and space inputs.
7 (other comment)
The reason for this error could be because you did not change any nutrients values, which is an intended behavior of the update function. We will update the user guide to be more clear on this and the error message. As what @sjq-sohjunqi mentioned, we have also set a 2dp limit for nutrient values to prevent such use case of many decimal points.
@deyixtan
(1 comments)1 (commented on others PR)
@eksinyue I think you can use the logger
instance to print out your debug messages.
2 (other comment)
@lyueyang Hmm, I meant like crop away the black borders around the screenshot haha, just like your other screenshots in the UG
3 (other comment)
@lyueyang
Oh, I mean it's just a suggestion. Alternatives like:
Category = c/
Label = l/
Becos tag/
is quite out of place
4 (other comment)
@jxrrelo Got it, let me take a look!
5 (other comment)
@eksinyue Is this the same as #115?
6 (other comment)
@eksinyue Hmm, the exceptions can be seen in the console logs ahaha
7 (other comment)
@eksinyue I tried to apply the changes on my side and I'm still getting those exceptions 😮
8 (other comment)
@eksinyue
Hmm I think the root of the issue stems from your addFinancialRecord
in BudgetBabyModelManager
. The condition always return false
.
Maybe you can try this and see if the issue still persist?
9 (other comment)
Hi, btw I think I just discovered a possible bug. When the category statistics window is opened, and I typed exit in the command box to exit, the app closes but the graph window is still open. This is not consistent with the behavior of the help window. i.e. the help window will close automatically if the app exits.
@tlylt thank you, submitted #202 😄
10 (other comment)
@eksinyue @natosy I think we just need to set the upper bound of getPastMonthStatistics()
to be the current month.
I believe getPastMonths()
will be called, which eventually limits the number of "past months" to 6.
11 (other comment)
Hmm I guess I can implement it via hotkeys in the UI.
@natosy you can decide if you want to implement them as CLI commands
@vivegank
(1 comments)1 (commented on others PR)
Another one
2 (other comment)
Just to have a user story to close after we finish adding stuff for v1.2
3 (other comment)
I'll incorporate your code into mine when I do the other fields since there seem to be many conflicts
4 (other comment)
I think this is not an issue as there can be family members who register with the same phone number or email.
5 (other comment)
I think this was an oversight. It is in the user guide under Notes about command format in the Features sub-section.
@khiaxeng
(1 comments)1 (commented on others PR)
Just to confirm, is System.out.println() supposed to be there?
2 (commented on own PR)
Done, added a test case for invalid args
3 (commented on own PR)
Taskify.java has an equals() method that checks if the list of tasks
is equal to the other Taskify object's tasks
right?
4 (commented on own PR)
Ah nevermind, I compared the ReadOnlyTaskify instead of comparing the ReadOnlyTaskify#getTaskList(), I pushed a new commit
5 (other comment)
LGTM *
6 (other comment)
PR has been merged already.
7 (other comment)
Decided not to remove any fields in Person.
8 (other comment)
If add command does not specify date, default the date to 'today'
9 (other comment)
Show all tasks with one specified deadline (in 2nd column)
10 (other comment)
Show Tasks based on State
11 (other comment)
Example: 'delete completed' will delete all completed Tasks
12 (other comment)
Did you mean to link issue #81 ?
13 (other comment)
I believe this is related to the bug of switching tabs via clicking, then inputting commands such as view tomorrow
14 (other comment)
~~Just need to edit UG saying that if a command does not expect parameters, it will just execute the first command.
eg:
list exit
will call list
exit list
will call exit~~
Edit: calling list
in another tab other than Home
tab should prompt the user to go to the Home
tab first, before executing list.
(Also good to note down in UG that commands that do not expect parameters will just execute the command regardless of what comes after the command)
15 (other comment)
This section of the UG resolves this.
16 (other comment)
This PR resolves issue #120
17 (other comment)
PR #168 resolves this
@yuheem
(1 comments)1 (commented on others PR)
Indentation for wrapped lines should be 8 spaces according to CS2103T's coding standard. Not a major issue.
@ZhangAnli
(1 comments)1 (commented on others PR)
Could you use the [] brackets instead of the >> brackets as per the format above
2 (commented on own PR)
Edited
3 (commented on own PR)
Edited
4 (commented on own PR)
Edited
5 (commented on own PR)
Edited
6 (commented on own PR)
Edited
7 (commented on own PR)
Edited
8 (commented on own PR)
Edited
9 (commented on own PR)
Edited
10 (commented on own PR)
Edited
11 (commented on own PR)
I think for this I didn't use the asObservableList method
12 (commented on own PR)
Removed
13 (commented on own PR)
Edited
14 (commented on own PR)
Edited.
15 (commented on own PR)
Edited.
16 (commented on own PR)
Edited.
17 (commented on own PR)
Edited.
18 (commented on own PR)
Edited.
19 (commented on own PR)
Ok, I'll just leave it here and wait for their merge.
20 (commented on own PR)
Actually I checked this part against the old AB3 legacy code, it was written in this way as well so I think its fine?
21 (commented on own PR)
Same comment as the one below.
22 (commented on own PR)
Ok, I'll just leave a line break since most of the code has one.
23 (commented on own PR)
Reverted.
24 (commented on own PR)
Reverted, but I found it slightly weird but I'm ok with this, no big problem.
25 (commented on own PR)
Reverted.
26 (commented on own PR)
Edited.
27 (commented on own PR)
Oops, did not know that. Reverted!
28 (commented on own PR)
Edited.
29 (commented on own PR)
Edited.
30 (commented on own PR)
Edited.
31 (commented on own PR)
Edited.
32 (commented on own PR)
Edited.
33 (commented on own PR)
Fixed.
34 (commented on own PR)
Was a work in progress, removed for now.
35 (commented on own PR)
Done.
36 (commented on own PR)
As of now, I couldn't find. Will try to implement this in the next PR if possible.
37 (other comment)
No longer relevant.
38 (other comment)
Refactor UniqueEntityList to remove unnecessary methods that use Entity parameters.
39 (other comment)
Closes #236.
40 (other comment)
Minimum requirement: ready for Saturday dry run.
41 (other comment)
Need to modify documentation.
42 (other comment)
UI issue, need to differentiate ID from list number.
43 (other comment)
UG Issue.
44 (other comment)
Added Entity icon and Entity ID static field
45 (other comment)
Done.
46 (other comment)
Done.
47 (other comment)
Done.
48 (other comment)
Done.
@BigDoot
(1 comments)1 (commented on others PR)
Typo on this line
2 (other comment)
Done
3 (other comment)
LGTM. Nice UML diagram ahaha XD
Will finish it next time LOL
4 (other comment)
Fixed
5 (other comment)
Incorrect usage of command(will update UG to make it clearer)
6 (other comment)
Fixed in latest PR
7 (other comment)
Unable to be reproduced, seems to be working!
8 (other comment)
Fixed in latest PR
9 (other comment)
Fixed
10 (other comment)
Fixed in PR
11 (other comment)
Implemented
12 (other comment)
Fixed in PR
13 (other comment)
'clear' command now displays a message instead of the old patient's info
14 (other comment)
Fixed, it now displays the proper error message
15 (other comment)
Fixed in a PR
16 (other comment)
Fixed in a PR
17 (other comment)
Fixed, the UI now displays the year as well
18 (other comment)
Fixed in a pr
19 (other comment)
Incorrect usage of command!
20 (other comment)
Fixed, now docbob prints an error message instead!
21 (other comment)
vrec is now updated to display the correct error message
22 (other comment)
Fixed, the viewbox is now updated when a medical record is added
23 (other comment)
Fixed, the app now displays a custom error message to let the user know that the patient has no medical records to be viewed
24 (other comment)
Fixed, The viewbox now correctly displays the new patient
25 (other comment)
The UG is now updated
26 (other comment)
Fixed, listappt now works
27 (other comment)
Fixed, vrec works as intended now, and the viewbox updates as soon as the command is executed
28 (other comment)
Fixed, editing details of a patient now does not remove appointments and medical records
29 (other comment)
Error message is now updated to inform user of proper date formatting when invalid input is entered.
@jxrrelo
(1 comments)1 (commented on others PR)
Both the BudgetDisplay() and updateObservableList() methods appear to have a number of lines of repeated code which violates the DRY principle. You could perhaps refactor your code to patch this up 😃
2 (other comment)
implement find-fr
command
3 (other comment)
Thank you for your input! This is the intended function of the find command. Should the user wish to apply multiple filters, he/she can do it in a single find-fr command by adding more parameters.
4 (other comment)
Thank you for input! This has been fixed
5 (other comment)
Thank you for input! This has been fixed
6 (other comment)
Thank you for input! This has been fixed
7 (other comment)
Thank you for input! This has been fixed
8 (other comment)
Thank you for input! This has been fixed
9 (other comment)
Thank you for input! This has been fixed
10 (other comment)
Thank you for input! This has been fixed
11 (other comment)
Thank you for input! This has been fixed
12 (other comment)
Thank you for your input! This has been fixed.
13 (other comment)
Thank you for your input! This has been fixed.
@JerardSoh
(1 comments)1 (commented on others PR)
Should it be showEvent( instead?
@sjq-sohjunqi
(1 comments)1 (commented on others PR)
Would it be better if the regular expression was defined as a final variable instead?
2 (commented on own PR)
I see! Thanks for the suggestion!
3 (other comment)
There are issues when calling progress while no active diet plan is selected as well as printing the total adherence to plan
4 (other comment)
Remove numbering from plan_recommend/use actual ID
5 (other comment)
Revise parsing of integers
6 (other comment)
Set upper limit for macros
7 (other comment)
Immediately show food list after food_add
8 (other comment)
Set with 2 dp limit for macros
9 (other comment)
Document this in UG - intended behaviour as users can consume same food during a day
10 (other comment)
Document in UG
11 (other comment)
This is an intended behavior as we allow users to input food intakes for the future for forecasting purposes.
12 (other comment)
This is an intended behavior. This is a duplicate issue with #166 . We will document this in UG. Thank you!
13 (other comment)
This is a duplicate issue with #155 . We will correct this. Thank you.
14 (other comment)
Any invalid date after 28 Feb will be casted into 28 Feb. We understand this may cause confusion and we will fix this accordingly.
15 (other comment)
Thank you, we will remove this.
16 (other comment)
We are unable to reproduce this error. Can you provide us with more information? Thank you.
17 (other comment)
We will update the UG. Thank you.
18 (other comment)
We will limit the input for food attributes to 2 decimal places. Thank you.
19 (other comment)
This is an intended behavior as food names are not supposed to be capitalized by convention.
20 (other comment)
Thank you. We will correct this and make the error message more user-friendly. We will also allow for numbers within food names.
21 (other comment)
Thank you! We will correct this issue and make the error message more informative.
22 (other comment)
Thank you! We will update the UG accordingly.
23 (other comment)
This is an intended behavior as the duplicated food intakes have appended with an identifier and should be updated with said identifier.
24 (other comment)
This is an intended behavior as the duplicated food intakes have appended with an identifier and should be updated with said identifier.
We will add an explicit message after adding duplicate foods to indicate that an identifier has been appended.
25 (other comment)
This is a duplicate issue of #155. We will correct this. Thank you.
26 (other comment)
This is an intended feature. Please use the scroll bars to view the output. Thank you!
27 (other comment)
We will correct this to allow for numbers to be added as part of food names. Thank you!
28 (other comment)
This is a duplicate issue of #155. We will correct this. Thank you!
29 (other comment)
This can be something to improve on for future iterations. Thank you for the suggestion.
@eksinyue
(1 comments)1 (commented on others PR)
Just a thought, is it a good idea to return past month's statistics as a String? Maybe it would be a better idea to return as a List
or HashMap
? That way, it will be easier to format and display on the Ui side.
2 (commented on own PR)
Good catch. Thanks!!
3 (commented on own PR)
Thanks for pointing it out. I forgot to remove it before pushing.
4 (other comment)
Is this similar to issue #74 ?
5 (other comment)
@eksinyue I don't think it will fully resolve #73. If I'm not wrong, after adding/deleting a financial record, the budget will still retain at its original displayed value. But apart from that, I think LGTM!
oh okay!! Sorry I misunderstood issue #73. I will merge this PR first without closing the issue.
6 (other comment)
@deyixtan I followed the instructions and did not get the IndexOutOfBoundsException.
Here is a screenshot of the app after the last delete-fr 2
command
7 (other comment)
@yuheem Maybe we can consider setting an upper limit to the budget value, and specify it in the User Guide.
8 (other comment)
Same bug as #189
9 (other comment)
@natosy Maybe we should specify the months to be included to be current month and 4 months before current months. Currently, we are displaying all months in the MonthList which may not be ideal.
10 (other comment)
@yuheem I think changing the budget of previous months is not an expected behaviour. However, we can update the UG to make it clearer.
11 (other comment)
Repeated issue.
12 (other comment)
Repeated issue.
13 (other comment)
Repeated issue.
14 (other comment)
Fixed.
15 (other comment)
@yuheem I have restricted the FR_AMOUNT
input by user to be a positive number less than 1,000,000.
Maybe we can add the same restriction for budget amount as well.
16 (other comment)
Repeated issue.
17 (other comment)
The issue will be resolved when all UG screenshots are updated using the latest UI design.
18 (other comment)
Hi @gycc7253 can we ask for more details on how to reproduce this issue? If I am not wrong, the exception is not thrown every time a financial record is edited. Do you happen to remember what were the exact steps you took for this error to happen? 😅 Thank you!!
@andrea-twl
(1 comments)1 (commented on others PR)
Probably need to change this class name eventually to accommodate searching by tag
@hengyiqun
(0 comments)1 (other comment)
@totoyoyo
Rectified
2 (other comment)
LGTM
3 (other comment)
Thanks for informing us of the above.
We have updated our UG to reflect that the actual prefix should be ph/ instead of p/
The reason you see the error above is because there is no prefix ph/ in your command. This causes the application to read "John Doe p/98765432" as the name of the contact. This is not permissible as our name only allows alphanumeric characters and spaces, and not '/'.
@geraldfan
(0 comments)1 (other comment)
As a busy CS student, I want to know which deadlines are coming up, so I can focus on them first.
As a CS student who has weekly quizzes, I can be alerted when the deadline of the quiz is coming up, so that I don't miss any quiz.
As a CS student, I can check my module deadlines and information at the same location, so that I don't have to navigate between multiple tabs.
As a CS student, I can set notes for the tasks, to record information about the task.
As a CS student, I can break a task down into several smaller tasks to better organize my tasks
As a CS student, I can view my schedule in calendar format to better plan my time.
As a first-time user, I can view a help message explaining the features so that I can orientate myself with the app
As a CS student, I can delete tasks that I no longer need to track.
@douglaswja
(0 comments)1 (other comment)
done with my commands
2 (other comment)
done w my portion
3 (other comment)
The Ubuntu and Macos CI's seem to be failing due to test cases, so for now we can ignore these.
Not too sure why the Windows CI is failing, could attempt to address test cases first.
4 (other comment)
Hey, you currently have some merge conflicts in your PR, could you update your local master branch and resolve them.
Thanks!
Can let me know if you need help with this.
5 (other comment)
Done with User Stories
6 (other comment)
Need to update the existing bullet points in README.md to include a short summary of our product.
7 (other comment)
INCOMPLETE:
Needs the current semester
and master plan
functionality.
8 (other comment)
@Yihe-Harry Could you close this issue if grades can now be added.
Feel free to link your relevant PR that solves this issue.
9 (other comment)
The history
command does this, dependent on modules being able to be added with a grade.
10 (other comment)
Now able to work via history
command.
11 (other comment)
Incomplete PR, just leaving it open.
12 (other comment)
Pls close once everyone has updated their portions of DG.
13 (other comment)
Done
@Maurice2n97
(0 comments)1 (commented on own PR)
fix towards the end.
2 (other comment)
LGTM
3 (other comment)
LGTM
4 (other comment)
Attach to issue
5 (other comment)
Closed.
6 (other comment)
Still need to do integration tests of meetings with
-StorageManager
-LogicManager
7 (other comment)
Tests have not been written, will leave to after v1.3 due to time constraints.
8 (other comment)
Possibly text may not be able to display in timetable if meetings are too short.
9 (other comment)
Additionally now the following command works
setTimetable startDate (sets timetable to start at startDate)
setTimetable default to the standard date.
10 (other comment)
for some reason Mac workflow is queued and not running, could be GitHub issue
I'll just commit first for the release
11 (other comment)
This is due to LocalDate being "smart".
12 (other comment)
@totoyoyo can look at this
13 (other comment)
des should be desc/ but it throws a date time invalid error instead
14 (other comment)
@totoyoyo flag it in UG. If they do not put the prefix incorrectly the date will be parsed wrongly
15 (other comment)
@hengyiqun please fix this ASAP thanks
16 (other comment)
LocalDate Autocorrect. Will add a note in the user guide about it.
17 (other comment)
@totoyoyo please correct the UG ASAP.
18 (other comment)
Should be made clearer in the UG.
19 (other comment)
@totoyoyo fix this thanks
20 (other comment)
@hengyiqun please look into this for the docs
21 (other comment)
@totoyoyo please correct this. Should be minor. Just add to the glossary. I have already made a glossary section in the merge request I am about to pull in.
22 (other comment)
@hengyiqun @totoyoyo please look into this. Thanks
23 (other comment)
small issue.
24 (other comment)
Same, add this to glossary @totoyoyo
25 (other comment)
do we need to change the name or stick to addressBook? @totoyoyo . I think this should be included in the glossary to clear up confusion.
26 (other comment)
Will include screenshots for setTimetable.
@totoyoyo Should put screenshots
27 (other comment)
@hengyiqun
28 (other comment)
fixed
29 (other comment)
fixed, but this issue is really up to implementation.
I have fixed min column size, though some people might complain they can't see all the columns
30 (other comment)
@totoyoyo
31 (other comment)
No clear command has been implemented for meetings.
32 (other comment)
@skinnychenpi
33 (other comment)
@totoyoyo
34 (other comment)
@hengyiqun
35 (other comment)
Fixing CI
36 (other comment)
SOlved
37 (other comment)
Add glossary to explain what addressbook refers to. @totoyoyo @hengyiqun
38 (other comment)
@totoyoyo @hengyiqun
39 (other comment)
Solved
40 (other comment)
Find free time can be done via timetable
@jaredtengsw
(0 comments)1 (other comment)
Redo PR
2 (other comment)
LGTM
3 (other comment)
Made a new PR due to big changes done after this PR
@JQchong
(0 comments)1 (commented on own PR)
I added it instinctively.
2 (other comment)
LGTM
3 (other comment)
probably not.
4 (other comment)
I see there are quite a lot of repeated code in here, maybe can try to clean it up?
5 (other comment)
Probably will, though I will still need to see if Ryan has implemented dark mode and light mode, so that conflicts can be avoided
6 (other comment)
Closed due to a better representation of this feature.
7 (other comment)
This issue is resolved when the user interface is being updated.
8 (other comment)
This is closed together with @rjeez's pull request regarding light mode implementation.
9 (other comment)
Resolved in v1.4
10 (other comment)
Resolved in v1.4
11 (other comment)
Fixed in v1.4
12 (other comment)
Turning user's background to black after blacklisting a person provides a visual response and it is certainly obvious for the users to deduce this fact.
13 (other comment)
Resolved together with #119.
14 (other comment)
This feature is implemented just like in usual terminals such as Command Prompt and Linux terminal. User guide will be updated to reflect this subtlety.
15 (other comment)
Duplicate of #88. Fixed in #145.
16 (other comment)
Duplicate of #101. Fixed in #147.
17 (other comment)
Duplicate of #101. Fixed in #147.
18 (other comment)
Duplicate of #101. Fixed in #147.
19 (other comment)
Duplicate of #101. Fixed in #147.
20 (other comment)
Will be resolved together with #108.
21 (other comment)
I was browsing some other repos earlier, then I saw one of the teams decided to address this issue by explicitly stating that adding people with the same name is disallowed in the user guide. They further claimed that this restriction is for the better of users since it minimizes confusion. 🤔🤔🤔
@IceBear789
(0 comments)1 (commented on own PR)
"e" is already used for email. I'm not sure if I should reuse the same letter for a different function.
2 (other comment)
Are you planning to add support for deletion of nodes in the future?
3 (other comment)
Will you be editing the background colour as well?
4 (other comment)
How will the change be reflected in the UI?
@zoeykobe
(0 comments)1 (other comment)
Well done!
2 (other comment)
LGTM
3 (other comment)
Well done!
4 (other comment)
LGTM
5 (other comment)
LGTM
@xuanqi966
(0 comments)1 (other comment)
Indicate different roles and responsibilities of each member
2 (other comment)
Team lead: Xuanqi
Documentation: Weiming
Testing: Xuanqi
Code Quality: Jiefeng
Deliverables and deadlines: Vanessa
Integration: Jiaying
Scheduling and tracking: Vanessa
3 (other comment)
And automatic saving
@Tomashiwa
(0 comments)1 (commented on own PR)
Good observation, I will be removing that check condition then
2 (commented on own PR)
I understand your reasoning but by omitting the year, won't the tester just complain that the message is unclear because 29-02
is not a full date or something?
3 (commented on own PR)
Sure, I will update to that and merge then
4 (other comment)
Another teammate has already been assigned this task
5 (other comment)
Note: User may create an instance of Meeting but there is no way to use the instance at this point (eg. cannot add to storage)
6 (other comment)
LGTM
7 (other comment)
Commit names could be improved. Other than that, LGTM.
8 (other comment)
Will be merge first to implement MeetingBookParser.
9 (other comment)
LGTM
10 (other comment)
Decide whether findmeet's keyword works by AND or OR.
11 (other comment)
Calling editmeet with same parameter values as the original meeting should return a specific error message to indicate no changes.
12 (other comment)
Add the ability to find meetings by status and correct the search scope of findmeet.
13 (other comment)
Change the UI elements for those fields to stop using elipsis.
14 (other comment)
Duplicate of #161 .
15 (other comment)
Duplicate of #164
16 (other comment)
Check again after resolving #164
17 (other comment)
Remove the ability to edit a completed meeting unless it involves setting it to incomplete.
18 (other comment)
Similar to #150 and check again after resolving #164
19 (other comment)
Duplicate of #164
20 (other comment)
Duplicate of #157
21 (other comment)
Duplicate of #153
22 (other comment)
Rephrase the feedback message to indicate the need for a value for the date-time field.
23 (other comment)
The user misunderstood how the keyword searches any part of the fields, not the whole word.
24 (other comment)
Consider including search by days in findmeet (eg. findmeet thur)
25 (other comment)
Tester did not understand that keywords can be matched partially.
26 (other comment)
Duplicate of #161
27 (other comment)
Duplicate of #161
28 (other comment)
The ability for users to execute meeting commands in client mode causes this misunderstanding.
29 (other comment)
Duplicate of #153
30 (other comment)
Duplicate of #169
31 (other comment)
Will be fixed via #169
32 (other comment)
Will be fix via #169
33 (other comment)
Will be fix via #169
34 (other comment)
Tester didn't know about the existence of client and meeting mode which led to his/her misunderstanding and uses meeting command when the application is in client mode.
35 (other comment)
Will be improve via #170
36 (other comment)
Will be solve via #169
37 (other comment)
LGTM.
38 (other comment)
No more switching between modes
39 (other comment)
Cannot be replicated.
40 (other comment)
Fixed via #142 #114
41 (other comment)
Cannot be replicated.
42 (other comment)
Regression happened where editmeet with just a name parameter cannot work.
43 (other comment)
Preventing relocation of completed meetings was handled in #133.
However, it is possible that an incomplete meeting dated in the past may be rescheduled to another date-time but the client has yet to get back on a suitable date-time. Since such a meeting is still open, its location must remain changable.
44 (other comment)
Indirectly fixed via #186.
45 (other comment)
Duplicate of #135.
46 (other comment)
Duplicate of #152
47 (other comment)
Remaining classes to add tests:
48 (other comment)
The remaining tests will be done by #203
@seaniy
(0 comments)1 (other comment)
done
2 (other comment)
Everyone's done with individual tasks. Closing issue.
3 (other comment)
done w my portion
4 (other comment)
Done with Use Cases, added 3 use cases. Not sure if need to add more.
5 (other comment)
Completed add/delete plans
6 (other comment)
Need to standardise user guide formatting.
7 (other comment)
Done
@ssagit
(0 comments)1 (other comment)
This task is to add/delete plans, semesters and modules as stated in the user guide
2 (other comment)
This is for singular adding of modules (i.e. if I add 3230, I may be reminded that I have not completed CS2040), different from https://github.com/AY2021S2-CS2103-W17-1/tp/issues/17
3 (other comment)
done w my portion
4 (other comment)
done w my portion
5 (other comment)
done w my portion
6 (other comment)
CI matters resolved, matters to note for future CI issues:
Always clear checkstyle before pull requests
Ensure files use LF for line breaks instead of CLRF
Ensure there is a single line break at EOF
7 (other comment)
Test PR used with Week 7 Tutorial
8 (other comment)
Test PR used with Week 7 Tutorial
9 (other comment)
duplicate issue
10 (other comment)
This issue is closed with the current semester command, which is already completed.
11 (other comment)
This is already done with 1.2, with info command.
12 (other comment)
Completed with #102
13 (other comment)
Closed after release.
14 (other comment)
Done
15 (other comment)
Closing as requirements changed: this feature would have taken too long to do.
16 (other comment)
Closing as requirements changed: this feature would have taken too long to do.
17 (other comment)
this was completed with the early 1.3 release.
18 (other comment)
Closing as requirements changed: this feature would have taken too long to do.
19 (other comment)
list does not take arguments. As per the UG:
Extraneous parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
20 (other comment)
This is a feature flaw as pre-requisites are not checked. Decided against adding this feature by 1.3 due to limited time, will add this as a limitation into the UG.
possible to resolve this in add modules as well, not allowing additions of modules without completed pre-requisites but not as a new command.
21 (other comment)
Add in UG justification or add modules
22 (other comment)
duplicate with #193
23 (other comment)
duplicate with #181
24 (other comment)
Duplicate with #189
25 (other comment)
As this bug was reported multiple times, see #177, I think we should resolve this in add modules.
26 (other comment)
After discussion on rationale of add module not checking for pre-reqs, it should be better to add justification in the UG and perhaps add this as a bug fix in the validate command.
27 (other comment)
duplicate with #198
28 (other comment)
duplicate with #181
29 (other comment)
duplicate with #194
30 (other comment)
This is a feature flaw. Will add justification to this issue in UG as it is not feasible to add all the modules manually in json which is what we're currently doing.
31 (other comment)
duplicate with #192
32 (other comment)
duplicate with #181
33 (other comment)
duplicate with #183
34 (other comment)
duplicate with #193
@BenedictBCJJ
(0 comments)1 (other comment)
done
2 (other comment)
Done and closed
@austenjs
(0 comments)1 (other comment)
As a CS student who does tasks near deadlines, I want to know which task is coming the soonest, so that I can finish it first.
As a CS student who has recurring tasks every period of time (e.g. weekly, monthly, etc), I want to add the task and set a recurring time, so that I don't need to add the same task multiple times.
As a CS student, I want to have notes for each task, so that I remember important information about the task
As a CS student, I want to sort deadlines from each module, so I can estimate how much workload needed for each module
As a CS student, I want to put multiple tasks instantly, so that I don't need to submit multiple times
As a CS student, I want my reminders to show the module code and name
As a CS student, I want to move the reminders easily, so that if the deadline change I can change the reminder easily
As a CS student, I want to know how many deadlines I have and how many deadlines I have done, so I can know whether I am lacking behind or not
As a CS student, I want to have the email of the prof or ta of the module, so that I can contact them if I have an issue with a deadline
As a CS student who just finished a holiday, I want to reset my calendar, so that I can start a new semester with new deadlines
2 (other comment)
wrong issue for current iteration
3 (other comment)
wrong issue for current iteration
4 (other comment)
Yes, i am confused with the additional tasktracker.json. I check the UserPrefs and the default path is to that tasktracker.json instead of /data
5 (other comment)
Removed this feature
6 (other comment)
Invalid (cannot add new feature)
7 (other comment)
Invalid (cannot add new feature)
@Zaiah0505
(0 comments)1 (other comment)
LGTM!
@rjeez
(0 comments)1 (other comment)
Fixes #60
Added switch statement to add mode of contact picture beside their descriptions
2 (other comment)
Fixes #89
@NiniJiaying
(0 comments)1 (other comment)
LGTM
2 (other comment)
#94
3 (other comment)
LGTM!
4 (other comment)
LGTM!
@kwmiw
(0 comments)1 (commented on own PR)
Ahh okay, I didn't know about the runtime and checked exceptions part. Will revise it, thanks!
2 (commented on own PR)
Ok! I've gone with both suggestions:
Deleted Regex class to use an enum in TimeslotParser
class
Merged both date and time for the non-next commands but of course means there are twice as many enum variables now, but beats creating another enum class just for time.
3 (commented on own PR)
Hmm aites! I changed it to use matcher instead, and to catch exceptions with a boolean isInvalidTime
to differentiate the messages likein seb's PR.
But I only created one format with the time -> meaning user has to key in the time and will not be able to leave it empty. Unless I add another conditional for the inputs without time and repeat the matching for dates
alone, and create another help method to cut short the matching for date. What do yall prefer!
try {
LocalDateTime currentDateTime = LocalDateTime.now().withSecond(0).withNano(0);
LocalDateTime parsedDate = null;
if (nextDateTimeMatcher.matches()) {
final String nextTimePeriod = nextDateTimeMatcher.group("nextTimePeriod");
final String timeInput = nextDateTimeMatcher.group("timeInput").trim();
// need to repeat matching of dates again, because both are separated and process differently for the next command
if (Arrays.stream(Day.values()).anyMatch(e -> e.name().equals(nextTimePeriod))) {
parsedDate = currentDateTime.with(TemporalAdjusters.next(DayOfWeek.valueOf(nextTimePeriod)));
} else if (nextTimePeriod.contains("MONTH")) {
parsedDate = currentDateTime.plusMonths(1);
} else if (nextTimePeriod.contains("YEAR")) {
parsedDate = currentDateTime.plusYears(1);
} else {
isInvalidTime = true;
}
int[] hoursMinutesArray = parseTime(timeInput);
parsedDate = parsedDate.withHour(hoursMinutesArray[0]);
parsedDate = parsedDate.withMinute(hoursMinutesArray[1]);
parsedDate = parsedDate.withSecond(0).withNano(0);
}
4 (commented on own PR)
hi im facing some issue with this!
currently, if i input without timing:
add-appt pt/5 dr/dr. pluto at/next month dur/1H 30M t/flu t/covid
there will be a NullPointerException
and InvocationTargetException (checked)
. I tried to catch both in the parseNextDateTime
and removeMeridian
method but no avail... the former says that InvocationTargetException
is never thrown too? have yall encountered such an issue before 😊
5 (commented on own PR)
Think EventHandler not working. nt sure if its cux of the commandTextField. trying to use the scene
way instead? but can't identify it in the MainApp
6 (commented on own PR)
when I tested this there are no inputs being added to the inputcommand storage zz fixing this too
7 (commented on own PR)
oh got it!
8 (other comment)
user input is wrong, should be edit-appt 1 pt/4 dur/ 1H 00M
, i can help standardize in UG.
but hmm even if the correct input I still get a NoSuchElementException
not sure why... does the EditAppointmentCommand
handles a dur/
prefix? Or do you think it's a problem with the timeslot parser
9 (other comment)
Not wrong date! edit-appt
will make changes due to the pt/1
, hence datetime remains the same. No invalid message comes up cux patient has be edited.
Should the editAppointmentDescriptor
check against every field and existing prefix? if not every valid and non-valid command combo will have the same error
also not sure if severity is high, cux it works the way it should, where at least one of the optional fields have been filled.
@Juzzanoob
(0 comments)1 (other comment)
Closed to allow for new PR to be made without conflicting file.
2 (other comment)
Clarification: CRUD is an acronym for "Create, Read, Update and Delete".
3 (other comment)
LGTM
4 (other comment)
Update EditCommand.java to fix edit bug whereby edit doesn't work if Insurance Plan is the only field of client edited
5 (other comment)
LGTM
6 (other comment)
Code well written and follows proper code principles!
7 (other comment)
Patched with previous PR
8 (other comment)
LGTM
9 (other comment)
LGTM
10 (other comment)
LGTM!
11 (other comment)
We disagree with the recommendation as including the Insurance Plan within the Client UI may result in the UI becoming too "wordy", especially if the client has many Insurance Plans. Instead, we will explore showing the number of Insurance Plans a client has within the Client UI, though this feature will be postponed to a later version of the app.
12 (other comment)
LGTM, thanks so much, Isaiah!
@chanellNg
(0 comments)1 (other comment)
Added Delete Session Command
Added the relevant classes (deleteSessionCommandParser etc) for the new delete command
updated current test files
Added Ui view for List Persons Command
2 (other comment)
List Sessions Command added
Added Ui view for List Sessions
3 (other comment)
duplicate
4 (other comment)
by checking assigned tutor, assigned timeslot
5 (other comment)
Update Find Command
6 (other comment)
Mentioned that only last occurrence is counted in the UG under "Notes about command format".
@Yihe-Harry
(0 comments)1 (other comment)
done, ive made the pr
2 (other comment)
Hi i think i resolved the conflict
3 (other comment)
Done
@mrweikiat
(0 comments)1 (other comment)
As an SoC student I can filter out non-soc and soc assignments and tasks to improve productivity
As an SoC student i can manage CS coded deadlines by itself since they are not mixed with other faculties mods
As an SoC student I can set reminders for CS coded modules to remind myself of deadlines
As an Soc student i often mix up SoC mods deadlines with other modules, reducing my productivity
As an SoC student, I want to know my CS assignments and deadlines well so i will not confuse with other mods
As an SoC student, I can focus more on my core CS modules by filtering out using the SW
As an SoC Student, I can delete, edit and add CS assignments that are often my core modules. So that I can concentrate better
As an SoC student, I want to finish the CS coded assignments first before other non-CS mods, this SW can consolidate all CS assignments
2 (other comment)
lgtm!
3 (other comment)
lgtm!
4 (other comment)
lgtm!
5 (other comment)
lgtm!
6 (other comment)
lgtm
@yanlingkuek
(0 comments)1 (other comment)
is the same person when:
OR
@danielonges
(0 comments)1 (other comment)
As a CS student, I want to be able to record down all my upcoming deadlines and assignments so that I have a clearer view on how to manage my time effectively.
As a CS student, I would like to sort my deadlines according to the most urgent ones first, so that I can prioritise my work better.
Being a CS students with many other commitments, I would appreciate reminders when I have a CS related deadline approaching, as I might forget some of them due to my busy schedule.
As a CS student that probably has multiple ongoing coding projects, I can tag each project with the language(s) that they are written in, so I know which languages I need to be proficient in
As a CS student, I can tag each assignment with a priority level so that I know where to focus my efforts on.
As a CS student that does work daily, I would like to be able to assign my tasks to a daily to-do list so that I can plan out my day and the work that I need to accomplish for that day.
As a CS student, I would like to be able to make quick notes on the assignments that I have noted down. This could help me get out a quick idea, or leave remarks on certain tasks that might be relevant.
As a CS student, I can mark assignments that I have finished as completed so that it lets me feel a sense of accomplishment.
2 (other comment)
Will resolve merge conflicts later
3 (other comment)
Will merge in my own tutorial since this is my part!
4 (other comment)
Will merge in my own tutorial since this is my part!
5 (other comment)
Will merge in my own tutorial since this is my part!
6 (other comment)
Ok, maybe we can discuss this later? Maybe somebody changed the path accidentally
7 (other comment)
Will fix CI failures
8 (other comment)
Merging to wrong branch
9 (other comment)
Looks like some of the tests weren't refactored from ModuleName to TaskName after the merging with my previous branch
10 (other comment)
lgtm
11 (other comment)
lgtm
12 (other comment)
lgtm!
13 (other comment)
lgtm!
14 (other comment)
CI check failed because of checkstyle
15 (other comment)
lgtm
16 (other comment)
lgtm!
17 (other comment)
Don't know why it merged without even requiring reviews, shall revert and PR again
18 (other comment)
lgtm!
19 (other comment)
lgtm!
20 (other comment)
Updated two things:
Added the header for "All tasks" and "Daily tasks"
Enabled colour for the priority tags
21 (other comment)
lgtm
22 (other comment)
lgtm
23 (other comment)
lgtm
24 (other comment)
Invalid; the user input isn't even in the prefix format. Our UG addressed what would be considered a valid prefix.
25 (other comment)
Update UG and DG to specify that only positive integer percentages will be allowed. Exception thrown to also be updated to reflect positive integer percentage value
. Reason being that not many modules have half percentages.
26 (other comment)
If we want to persist daily tasks into storage, it would also make sense to be able to clear all daily tasks. Check with tutor/prof if this is allowed.
27 (other comment)
Specify usage in the error message
28 (other comment)
Specify which index is to be used for every portion that involves index. --> specify whether it's index in All Tasks, or index in Daily Tasks.
29 (other comment)
Review duplicate task checker (how the code checks for equality - the #equals() method might not be updated for Task)
30 (other comment)
Modify regex string
31 (other comment)
Fix if possible (bugs in UI may not be counted)
32 (other comment)
See if can put them in the same box (bugs in UI may not be counted)
33 (other comment)
Same as previous
34 (other comment)
Some assignments might not contain weightage. Update the UG.
35 (other comment)
Same as previous
36 (other comment)
Can check Storage component to see if it can be refactored.
37 (other comment)
The logger might name the file as addressbook; can go and check
38 (other comment)
Apply notes label
39 (other comment)
Update UG to restrict to upper case, and also specify in the error message
40 (other comment)
Specify in the app
41 (other comment)
Add segment for notes
42 (other comment)
Standardise the error thrown
43 (other comment)
Regex to support up to CS6k mods
44 (other comment)
Same as previous
45 (other comment)
Same as previous
46 (other comment)
Same as previous
47 (other comment)
Check for duplicate daily tasks.
48 (other comment)
Same as previous
49 (other comment)
Same as previous
50 (other comment)
I'm using Big Sur to develop this and there is no problem on my computer
51 (other comment)
Don't know whether we can implement another function?
52 (other comment)
Email the tutor and see if possible to add feature for auto complete?
53 (other comment)
Same as previous
54 (other comment)
Same as previous
55 (other comment)
Same as previous
56 (other comment)
Same as previous
57 (other comment)
Update predicate
58 (other comment)
Same as previous
59 (other comment)
Same as previous
60 (other comment)
Same as previous
@JodyLorah
(0 comments)1 (other comment)
looks good 😃
2 (other comment)
Thanks for rmbering abt the CI
~From my iPhone
3 (other comment)
lgtm
4 (other comment)
nice!
5 (other comment)
lgtm
6 (other comment)
noice
7 (other comment)
noice
8 (other comment)
nice
9 (other comment)
goot!!
10 (other comment)
lgtm
11 (other comment)
nice!
12 (other comment)
well done!
13 (other comment)
nice!
14 (other comment)
looks good
15 (other comment)
nice
16 (other comment)
goot
17 (other comment)
noice
@ming-00
(0 comments)1 (other comment)
Changes already merged.
2 (other comment)
Already mentioned
Not sure what the problem is because no screenshot was attached to the issue + screenshot provided is the same?
3 (other comment)
testing@gmail nono check the regex
4 (other comment)
Need to check for venue and persons also
5 (other comment)
Now allowing apostrophes and hyphens
@skinnychenpi
(0 comments)1 (other comment)
Due to EOF at newline issue, the CI test can't pass.
But the code should function with no error.
2 (other comment)
Finish this task.
3 (other comment)
My checkstyle has some issue, so I can't see where I am wrong in terms of style. Please help me to correct those if you can run the checkstyle, thanks!!!!
4 (other comment)
Simply add the class, further job including integrate it into the model. (Coming up soon)
5 (other comment)
Errors occur because of new methods need to override on the model interface.
6 (other comment)
LGTM!
7 (other comment)
LGTM as well.
8 (other comment)
Looks good!
9 (other comment)
LGTM,
10 (other comment)
Done!
11 (other comment)
Done!
12 (other comment)
LGTM.
13 (other comment)
Complete merging Maurice's modification.
14 (other comment)
Fix this bug already.
15 (other comment)
Bugs fixed already.
16 (other comment)
You mentioned that: "Also seems like we need check a lot of conditions
For example if delete/edit person -> we need to remove/edit from connections
if delete/edit meeting, we need to remove/edit from connections the meeting"
I have already implemented those cases except the clear command. Will do it later.
17 (other comment)
Also it seems that the CI didn't pass.
18 (other comment)
Fixing CI
OK.
@wangtao0717
(0 comments)1 (commented on own PR)
oh,i don't know when i space here... just delete it
2 (commented on own PR)
it is for checkstyle i think
3 (other comment)
good
4 (other comment)
looks Great
5 (other comment)
Looks Great!
6 (other comment)
Looks Great!
7 (other comment)
Looks Great
8 (other comment)
Looks Great
9 (other comment)
the posithon of "unclean" is Index1, just like input "status clean no-index 1", so error message "index is not a none-zero undigned integer"make sense.
10 (other comment)
similar issue to #213, colse first
11 (other comment)
the issue is same as #211, I have fix it in a PR. the issue can be closed
12 (other comment)
This is not so important, because we just want to show all list after each time updating
13 (other comment)
maybe miss some message about sorting way in UG?
14 (other comment)
same issue as #195, close this first
15 (other comment)
this issue is similar to #226 , it has fixed in my new pr for index problem
16 (other comment)
Looks great
@CSjiade
(0 comments)1 (other comment)
Update the index.md file to fit TimeforWheels product
2 (other comment)
Update DoneCommand
DoneCommand "done [index]" will create a checkmark on the entry
3 (other comment)
enable assertion in the gradle file
4 (other comment)
Could try adding test cases for the stats command to ensure it works well
Ok noted will do so asap
5 (other comment)
import * in DeliveryListParser.java preventing the checks from passing
6 (other comment)
Change Syntax of the GUI
7 (other comment)
will update user guide
8 (other comment)
we will update user guide
9 (other comment)
think is because done 2 is out of index in the filtered list
10 (other comment)
for users to undo if they make a mistake
11 (other comment)
12 (other comment)
works fine on our side
13 (other comment)
update the ug
14 (other comment)
update ug
15 (other comment)
update in ug
16 (other comment)
thanks will update the ug
17 (other comment)
thanks will update the ug
@kangtinglee
(0 comments)1 (other comment)
LGTM
2 (other comment)
Instead of deleting orders when the menu items they contain are removed, mark them as cancelled instead
3 (other comment)
Also changed all instances of contacts
to customer
in the UG.
4 (other comment)
Also modified menu list
to only show dishes that can be produced given the state of the inventory.
5 (other comment)
Bug in the ammended statement resulted in improper Menu
item creation as the ingredientID should be checked against the Ingredient
list and not the Dish
list.
6 (other comment)
This might be deliberate so as to accommodate various phone number formats.
@IanCKW
(0 comments)1 (other comment)
Target user profile, value proposition, user stories, and use cases added. Glossary and NFRs are kept the same
2 (other comment)
LGTM
3 (other comment)
updated Developer guide
4 (other comment)
Added user story in DG. Linked PR for the change
5 (other comment)
all to implement
6 (other comment)
Failed tests. Close
7 (other comment)
LGTM
@nicholasnge
(0 comments)1 (other comment)
nice LGTM
2 (other comment)
lgtm, nice \n
s
@kaixiangtay
(0 comments)1 (commented on own PR)
This is for list command, list all tasks the user has
2 (commented on own PR)
alright ok just for basic instructions then
3 (commented on own PR)
For now, we will stick to this, it will definitely be applicable and can be extended if required next time.
4 (commented on own PR)
I have fixed my comment to missing year from the starting date.
5 (commented on own PR)
I have fix the correctness of month in starting date
6 (other comment)
I will be refactoring the email field to recurringDate in v1.3 milestone
7 (other comment)
Remember to link the PR to the issue you have been assigned
8 (other comment)
I just help to link the pull request #61 of done command and status attribute to this issue
9 (other comment)
Not required since PR #114 CI check can be rerun
Also can be ignored. Nothing doing
10 (other comment)
There is no point in leaving so many upcoming recurring dates
since it will not be useful to the user and our current UI design
limits up to 3 recurring dates to be shown at a time.
When the recurring date has expired, a new date will replaced
the old one.
11 (other comment)
It is mentioned in the error message index must be a positive integer
12 (other comment)
The conditions are stated clearly and comprehensive
enough for the user to understand in the error message
as well as the add/edit recurring schedule in the UG
13 (other comment)
General message is being used and
a example is provided in error message
User guide has also mentioned the date format clearly.
14 (other comment)
There is no point in leaving so many upcoming recurring dates
since it will not be useful to the user and our current UI design
limits up to 3 recurring dates to be shown at a time.
When the recurring date has expired, a new date will be
replaced with the old one.
15 (other comment)
After thinking about it, I still feel that as long as
the error message displays the correct string
values accepted for day of week and week frequency.
It is very easy for the user to follow.
16 (other comment)
First of all, we have to account that the users
cannot remember the title fully. If we design full
title matching, it will be a disaster if the user wants
to find the task urgently but only can remember partial
words.
Next, I noticed that there is an input error you did not
state find test 5 but test 5 only in the screenshot.
17 (other comment)
General message is being used and
a example is provided in error message
User guide has also mentioned the date format clearly.
18 (other comment)
It is a documentation bug and
not a functionality bug.
I will fixed it under the issue #16
you have opened.
19 (other comment)
Recurring schedule is designed in a way that
it will find the next upcoming Sat away from
the current system date (non-inclusive of the
current system date when the user entered the input)
It is not a functionality bug but thanks for highlighting
this issue, I will update user guide will update to avoid confusion.
20 (other comment)
It was mentioned in the documentation already
that the no d/ prefix should appear in
search by title query.
21 (other comment)
Added a screenshot with example
22 (other comment)
It is a wrong use of the feature, it is
date prefix set/ that you should
be using for deadline tasks.
23 (other comment)
I went to look up abit online and ddd is actually
representation of julian day format.
24 (other comment)
Resolved in PR #206
25 (other comment)
hanbin ytd already removed the unnecessary part
@WeiLiangLOL
(0 comments)1 (commented on own PR)
Ayeee! You're welcome! :DDDDD
2 (other comment)
Merge will close linked issue #54
3 (other comment)
Linked issue #76
4 (other comment)
Closed as mentioned issue proposes fix
5 (other comment)
I would propose using the format below!
{
"foodIntakeLists": [ {
"date" : null,
"foodIntakes" : [ {
"name" : "test",
"fats" : 10.0,
"carbos" : 10.0,
"proteins" : 10.0,
"date" : "0001-01-01"
}, {
"name" : "test",
"fats" : 10.0,
"carbos" : 10.0,
"proteins" : 10.0,
"date" : "2050-06-20"
} ]
} ]
}
6 (other comment)
After discussion, proposed solution:
{
"foodIntakes" : [ {
"name" : "test",
"fats" : 10.0,
"carbos" : 10.0,
"proteins" : 10.0,
"date" : "0001-01-01"
}, {
"name" : "test",
"fats" : 10.0,
"carbos" : 10.0,
"proteins" : 10.0,
"date" : "2050-06-20"
} ]
}
7 (other comment)
For issue #77
8 (other comment)
Thanks for quick fix!!
@guanyz
(0 comments)1 (other comment)
Looks good to merge!
2 (other comment)
People's names can have non-alphabetical characters in them. Closing.
@adidoesnt
(0 comments)1 (commented on own PR)
Thanks!
@cheunggalen
(0 comments)1 (other comment)
Failed CI checks
2 (other comment)
Failed CI tests
3 (other comment)
Failed CI tests
4 (other comment)
Failed CI tests
5 (other comment)
Failed CI tests
6 (other comment)
Failed CI tests
7 (other comment)
Conflicts
8 (other comment)
Failed checkstyle
9 (other comment)
Fail CI tests
10 (other comment)
Failed CI tests
11 (other comment)
Failed CI tests
12 (other comment)
Failed CI tests
13 (other comment)
Pull first then add the date field since the latest commit has passed all the CI checks.
14 (other comment)
Failed CI tests
15 (other comment)
Wrong branch
16 (other comment)
Thanks for reporting the bug, will update the UG.
17 (other comment)
Thanks for reporting the bug, will update the UG.
@GJ0407790
(0 comments)1 (other comment)
@Nanxi-Huang did u pull the latest version before you modify the file, cause right now there seems to be a conflict happening.
2 (other comment)
LGTM
3 (other comment)
Cannot pass the test
4 (other comment)
lgtm
5 (other comment)
lgtm
6 (other comment)
lgtm
7 (other comment)
lgtm
8 (other comment)
Lgtm
9 (other comment)
Seems like my checkstyle not running in DeveloperGuide.md
10 (other comment)
@Andrewzhang217 I never add a new line at EOF in one of my puml file. It's fixed now. Thanks
11 (other comment)
Add a new line at EOF at AddReaderSequenceDiagram.puml should be able to solve the issue
12 (other comment)
lgtm
@branzuelajohn
(0 comments)1 (commented on own PR)
I agree, I think the userIDcounter should be implemented perhaps in addressbook instead as certain tests fail currently due to ID not syncing up
2 (commented on own PR)
Thanks for pointing this out! Will amend the code now!
3 (commented on own PR)
This will take in dd/mm/yyyy, dd-mm-yyyy or dd.mm.yyyy and helps validate leap year as well. Do you want me to modify it to only support dd/mm/yyyy?
4 (commented on own PR)
Just male and female
5 (commented on own PR)
Alright i'll edit this. Does this mean that we input the ID of the owner when creating a Dog?
6 (commented on own PR)
I agree, will amend this!
7 (commented on own PR)
Is a set better? Because there is no java implementation of ArraySet
8 (commented on own PR)
Modified it.
9 (commented on own PR)
I agree, will change it!
10 (commented on own PR)
I see, ok will remove these lines!
11 (other comment)
Will create new issue to add tests.
12 (other comment)
I think you can proceed to do the adding and deleting, just that the execution part don't call on model to do the adding, perhaps give a successful response and make use of the gui to get some feedback.
Alright, this is so I can test the classes I just created right?
13 (other comment)
Added DeleteActivityDiagram
14 (other comment)
Added "Navigating the User Guide" section and added symbols to help the reader understand the syntax in the UG
15 (other comment)
LGTM 👍
16 (other comment)
I like the colour change, but it doesn't seem like the issue has been resolved. I think what users expect is that the suggestions isn't selected unless arrow keys or tab is used to trigger the selection, then without those keypresses, the enter key will work for the command box directly, so commands like
list
andexit
only need to press once without dismissing the suggestions.
Ok will look into this!
17 (other comment)
@kouyk done with the changes
@NightRaven49
(0 comments)1 (commented on own PR)
hmm that's interesting. cos i followed the format of the other implementations where the diagram is below the words
2 (other comment)
I agree with your observation, though instead of removing the menu bar outright, I feel that we can replace it with a banner saying History and Response, much like your original UI mockup. We can discuss this tomorrow along with other UI tweaks we can make this coming week.
3 (other comment)
did not realise this is intended behaviour...
4 (other comment)
ok currently i got the tags to show up for these commands, but i realised that the only relevant tag for these commands is the method tag; the other tags do not make sense to be included since no api is actually called, so there is no data to be shown in those tags unless we want to actually run it like the show command.
5 (other comment)
hmm, in that case i can see the point of beautifying for add and edit, but it would make show a redundant command imo, since the result would be indistinguishable from run/send on first inspection.
6 (other comment)
I've also implemented roughly the same thing in #568, but with added beautification for the response. I also see a few other changes elsewhere, so I'm not too sure about merging
7 (other comment)
Resolved with #572.
8 (other comment)
Closed with #572.
9 (other comment)
Default theme fixed by @ong6 in #572.
10 (other comment)
I've been working on this since formatting the DG.
11 (other comment)
@ong6 where are u printing from? on my end (https://nightraven49.github.io/tp/DeveloperGuide.html) no issue.
@shaelynl
(0 comments)1 (commented on own PR)
okay i will add that!
2 (commented on own PR)
oh, so we will include finance-related stuff also? okay no prob i will remove number 7!
3 (commented on own PR)
sorry yk what do you mean by this, it was bc yt accidentally put 1 instead of 2 (its by right supposed to be 2), but bc it was a failure test it still can pass the checks, so i j changed it for her!! but all the other testing functions use ...1 and ...2 if there are multiple programs involved!!
4 (commented on own PR)
haode!!
5 (commented on own PR)
okay, ill work on that in a separate commit!! i will add more failure tests first, thank u boss!! 😄
@gycc7253
(0 comments)1 (other comment)
LGTM
2 (other comment)
lgtm
3 (other comment)
Tutorial no need to merge thx!
4 (other comment)
missed check
5 (other comment)
This is to fix the return unable to update UI issue.
Record's dateReturned attribute to final.
And set record to a new record object.
6 (other comment)
fixed
7 (other comment)
Very solid testcases!
@chenzaza
(0 comments)1 (other comment)
Fix #26
2 (other comment)
UG has been updated
3 (other comment)
@VisnuRavi
(0 comments)1 (other comment)
Completed and approved
2 (other comment)
LGTM
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
Looks great, good job!
6 (other comment)
LGTM
7 (other comment)
Looks great!
8 (other comment)
Looks Amazing To Merge
9 (other comment)
LGTM
10 (other comment)
Yes, we are looking to use more colours in the future interations. Currently we do provide support for the more general colours, such as black, blue, white and so on, but in the future, we would look to add in more colours, and also likely an RGB selector
11 (other comment)
We thank you for this suggestion. However, as we are not able to add in new features now, we would look to add this in future iterations.
@mesyeux
(0 comments)1 (other comment)
This is intentionally done this way for cohesion across commands as our other commands such as edit do not specify the field edited as well.
@Andrewzhang217
(0 comments)1 (other comment)
As an individual operating a private book loaning service. I can rank least borrowing books, so that I know customers’ preference and reduce importing of those types of books
2 (other comment)
Looks good to me
3 (other comment)
Please fix the checkstyle error before merging to master branch
4 (other comment)
This pull request looks good to me and can be merged to the master branch of our team repository
5 (other comment)
This pull request looks good to me and can be merged into our team repo master branch
6 (other comment)
Solved the typo.
7 (other comment)
Thanks for your suggestion but when the app window is too small it is unable to show much information. Simply magnify the main window can show the full tag.
8 (other comment)
Thank you for your advice. It is solved alr.
9 (other comment)
Thank you for advice. It is solved alr
10 (other comment)
Fixed
11 (other comment)
Fixed
@XindiTian
(0 comments)1 (commented on own PR)
Ok thanks! I've edited the code
2 (other comment)
Error in commiting, please do not merge
3 (other comment)
Error, please ignore
@Nanxi-Huang
(0 comments)1 (other comment)
good edit.
2 (other comment)
lgtm
3 (other comment)
lgtm
4 (other comment)
lgtm
5 (other comment)
looks good to be merged!
6 (other comment)
looks good to be merged into our team repo.
@HuaiZe
(0 comments)1 (other comment)
LGTM!
2 (other comment)
LGTM
3 (other comment)
LGTM
4 (other comment)
LGTM
5 (other comment)
Ctrl-f "address book", "ab3", "AB" etc over entire code base
6 (other comment)
Accept M/m/male/Male/MaLe/mALe
7 (other comment)
^ We confirmed this with a real insurance agent. Thanks for the comment though!
8 (other comment)
The meeting list is already sorted from earliest to latest, so the user can simply look at the meeting list.
9 (other comment)
Not clickable because the app is optimised as a CLI
10 (other comment)
The error is due to the fact that he used "/eep" prefix for the phone number field
11 (other comment)
Make error messages consistent for index 0 and index out of bounds
12 (other comment)
Change to 1 whole code block
13 (other comment)
Change UG to tell users not to touch the data file, if they accidentally edited it and made it invalid, delete it and restart the app
14 (other comment)
Standardise format for notif and meeting
15 (other comment)
Kenny: change file name to linkme.json
George: change UG
16 (other comment)
LGTM
17 (other comment)
Fix "initialising AddressBook", "Will be starting with a sample AddressBook", "addressbook.json", "Starting AddressBook"
18 (other comment)
Handle both cases where there is no space in front and behind the @ symbol
19 (other comment)
Allow parentheses for name
20 (other comment)
Oh I see, I think you're right. Thanks for spotting that constraint!
21 (other comment)
LGTM
22 (other comment)
LGTM
@wei-yutong
(0 comments)1 (commented on own PR)
my bad i put ur link in and it just gave me our team's one so i thought it was the same oops 😅
2 (commented on own PR)
yea i agree that the INDEX_ references are not that necessary
3 (commented on own PR)
ok i'll look into it another time! let's merge this PR first and i ll continue from there onwards 😃
4 (commented on own PR)
right my bad!
5 (commented on own PR)
oh ok i see alright i can modify getTypicalDatabase to contain programs as well then
6 (commented on own PR)
omg my bad LOL i think i was doing some debugging and changing back and forth
7 (commented on own PR)
okie!
8 (commented on own PR)
yea i will thanks i totally forgot that existed!
9 (commented on own PR)
on it
10 (commented on own PR)
hmm i tried to add the programs into getTypicalDatabase, but it caused some errors with the JsonDatabase side and caused multiple tests to fail. I reverted back to using a separate one that includes programs, but have made all the other changes 😃
11 (commented on own PR)
hmm i didnt do this, just changed it to an available constant from the util class, but i can add some in!
@pasha-292
(0 comments)1 (other comment)
I am merging this PR here, since integrating the Date class with the Person class would mean a lot of work. So, better to keep this part of the work intact, and do the remaining part by generating a new PR.
2 (other comment)
Hi, could anyone tell me why I am failing the test cases?
3 (other comment)
Okay, I passed all test cases and the app runs fine with all the features working after adding Date.
4 (other comment)
I think you need to fix the order of imports for the checkstyle test to pass. Apart from that, is it possible to make the filter command more versatile, by filtering data using other criteria apart from deliveries labelled as done?
5 (other comment)
Also, you need to create test classes for any new class that you create, in order to get the PR to pass all the checks if I'm not wrong. Here is a reference to adding a new command to help you: Adding New Command.
6 (other comment)
I think some of the fields in the StatsCommand class need to be changed to private.
7 (other comment)
For the developer guide and user guide, don't we need to put a screenshot of the commands?
8 (other comment)
Okay, updated developer guide.
9 (other comment)
Changed the title for the developer guide to the previous version before PR 55.
10 (other comment)
Updated the User Guide
11 (other comment)
Enable search by address and remarks.
12 (other comment)
Enabled searching by all customer attributes.
13 (other comment)
Okay, fixed bug
14 (other comment)
I think you need to update the storage files, and also modify the parser tests since most of the issues seem to be from there.
15 (other comment)
This seems to fail a lot of test cases. I guess you can run the test on Gradle to see which test cases are failing and try to fix them.
16 (other comment)
Hi, could you tell what the error message is? It works fine on our end. I'm guessing the date format is wrong.
17 (other comment)
Okay, will look into it.
18 (other comment)
Will update the user guide.
19 (other comment)
It's meant to be unmarked in case of mistakenly marking a delivery as done. So, it is not a functionality bug but rather deliberately done in this way.
20 (other comment)
It's is implemented that way, to ensure that if you mistakenly mark a delivery as done, then it can be unmarked. So, it is not a functionality bug, but a deliberate extension to the feature to make things easy for the user. However, we will look into it to see if we can offer the same functionality in a different way.
21 (other comment)
Okay, will update the User Guide for this.
22 (other comment)
Hi, for 2 you get both because both entries have the same telephone number, and the find command allows you to search by multiple attributes for the same command, so you were effectively searching for entries named Mark as well as entries with the stated phone number. For 1, so far we return matches only if the keyword completely matches an entry, so partial keyword will not yield results. However, we will look into this to see if we keep it the way it is based on the requirements of our app.
23 (other comment)
Will update the UG
24 (other comment)
Updated my PPP.
25 (other comment)
Hi, I think you entered the date in the wrong format since on my end it works.
26 (other comment)
Updated.
27 (other comment)
Added the edit command to the user guide.
28 (other comment)
The issue here is that the date is validated using Java's localDate which allows taking in the dates specified above. Now, for the first date included, the date looks wrong but is actually valid. Adding a range for appropriate years might sound good, but may actually reduce the functionality of our app. Java's localDate also allows taking in negative years given that it allows entering date in two eras. For the time being, the advice would be to refrain from entering negative years.
29 (other comment)
The issue has been fixed.
@natosy
(0 comments)1 (commented on own PR)
Yes, I was just thinking about that too. Looking at the other methods that were implemented in BudgetBabyLogicManager, I realised that it shouldn't be a problem if I returned a List. Thanks for the suggestion!
2 (other comment)
I think it would be good if you could make this title more specific? Like what aspects of a month in particular? As @eksinyue mentioned, I also feel this PR is similar to #74, solely from the title.
3 (other comment)
Hi, may we get the steps to reproduce this error? I'm not exactly sure of what's happening here and how this graph is obtained. @tlylt
4 (other comment)
I see, thank you for mentioning the additional bug as well! We will take a closer look into it and solve it ASAP 👍
@Jacob-109
(0 comments)1 (other comment)
Could try adding test cases for the stats command to ensure it works well
2 (other comment)
Looks good, maybe you can try to increase the test coverage further
3 (other comment)
For your month input its 2 when it should be 02 as the date takes in YYYY-MM-DD hence the error. The error message should have stated that "Dates should be of the format YYYY-MM-DD, and must not be blank."
4 (other comment)
Thanks for spotting the bug, will update the user guide.
5 (other comment)
The application is not meant to serve not Singapore hence we didn't limit the phone number digits.
6 (other comment)
Thanks for reporting the bug, will update the UG.
7 (other comment)
Thanks for reporting the bug, will update the UG.
8 (other comment)
Thanks for reporting the bug, will update the json file to match the latest version.
9 (other comment)
Thanks for reporting the bug, will update the error message in the application.
10 (other comment)
Thanks for reporting the bug, will update the UG.
11 (other comment)
Thanks for reporting the bug, will update the UG.
12 (other comment)
Thanks for reporting the bug, will update the UG.
13 (other comment)
Thanks for reporting the bug, will update the json file.
14 (other comment)
Thanks for reporting the bug, will update the UG.
15 (other comment)
Thanks for reporting the bug, will update the UG.
16 (other comment)
Thanks for reporting the bug, will update the UG.
17 (other comment)
Thanks for reporting the bug, will update the UG.
18 (other comment)
Thanks for spotting the bug, actually calling done on a done delivery will change it back to undone but it wasn't clarified. Will update in the UG to make it clearer
19 (other comment)
Thanks for reporting the bug, will limit the date to fix this bug
@CharlesLee01
(0 comments)1 (commented on own PR)
I just wanted to leave the hash-tag before the line.
2 (commented on own PR)
Yea, you can refer to our submitted user guide.
3 (commented on own PR)
Mostly formatting issues as far as I can tell, you can just amend your commits and force push to this branch, no need to close and create another pull request. Or maybe you want to do the formatting once after everything is in?
I closed it because idk how to rename the commit message xD.
4 (commented on own PR)
Ok, I will remove it.
5 (commented on own PR)
Yea, I know but the codestyle forces me to do so. Idk why lol
6 (commented on own PR)
I noticed that too
7 (commented on own PR)
Ah, I see! Coz I was trying to make it to look the same with the MESSAGE_UNKNOWN_ENTITY and MESSAGE_UNKNOWN_COMMAND that were used in addressbook.
8 (commented on own PR)
Noted!
9 (commented on own PR)
Noted!
10 (commented on own PR)
Yea, I made it public just for the testing. Does that mean I only have to test public methods that are written?
11 (commented on own PR)
Weird, didn't notice this earlier on. What can I do if something like this pops out?
12 (commented on own PR)
OK, I will check that again. Coz it shows an error of separator wrap which is regarding the brackets.
13 (commented on own PR)
The examples are at the bottom. I did it just like the add and delete command format.
14 (commented on own PR)
I just wanted to make it easier for me to reference the attributes of a program when writing the DG. Forgot to remove it, thx!
15 (commented on own PR)
Can I just remove >>
16 (commented on own PR)
Um, I thought u told me to remove all unfilteredList related stuff in the comment from my previous PR?
17 (commented on own PR)
If you want, I can put them back
18 (commented on own PR)
Done
19 (commented on own PR)
Done
20 (commented on own PR)
Everything should follow this right? Then most of the help command formats are wrong.
21 (commented on own PR)
So follow the format in UG?
22 (commented on own PR)
Done!
23 (commented on own PR)
Done!
24 (commented on own PR)
Done!
25 (commented on own PR)
OK!
26 (commented on own PR)
I just copy n paste from the previous PR. This part was accepted last time so I assume it works for now?
27 (commented on own PR)
Same reason as above
28 (commented on own PR)
I think this part is causing some bugs. Coz from there's no execute() in editOwnerCommand and editProgramCommand. So this execute() should inherit from editDogCommand as well since it already inherited the editEntityCommand.
29 (commented on own PR)
Remove! Yea, I totally understand, Anli has told that during the meeting. As you can see from my latest commits, I have pushed only small PRs. And also I push this long PR since #281 has already been approved last time. Coz I thought you won't review it anymore as it is exactly the same thing.
Hope you can understand. I apologise for doing this.
30 (commented on own PR)
Remove!
31 (commented on own PR)
Other fields are at the top, right?
32 (commented on own PR)
Wait, I thought this clearly covers the duplicated tags and different tags? I can add different sessions if that will help.
33 (commented on own PR)
what I need from you is to write test methods that instead test if multiple tags & sessions are all accepted.
You mean to test multiple tags and sessions?
34 (commented on own PR)
Um, I know how Pawbook works lol. Instead of explaining how the function work, can you specify which part the error is caused? I tried adding dogId to new owner and remove dogId from the old owner before I pushed the latest commit here but it doesn't work as well. I'll push the one I did which follows the approach u mentioned here, but it has some assertion error which highlights that the owner to remove dog id doesn't have that dog id. Maybe, you can have a look at it.
35 (other comment)
Made the necessary changes.
36 (other comment)
I think we can finalize the formatting in the meeting later. Maybe when we merge, we can just put the parts that others have edited into this.
37 (other comment)
Noted! Sorry for the mails.
38 (other comment)
Sorry, I don't really get you. Can you tell me what's wrong and necessary? I thought I tested on the changes made in your PR?
39 (other comment)
Sync master
40 (other comment)
Ignore this! This is duplicated!
41 (other comment)
I will upload the test cases in another PR when this edit command works yet.
42 (other comment)
I think some of my feedback for the previous attempt at writing test still stands, like the typical addressbook ideally should be combined as one since there's no benefit to having 3 that's hard to maintain, I do see some effort made to refactor some tests, but some generics are not written correctly. Furthermore, I think while most of the edit implementation can be attributed to you, kindly exclude the edit program ones as you initially only implemented edit owner and edit dog partially.
Do you mean combining the TypicalDogs, TypicalOwners and TypicalPrograms into TypicalAddressBook?
43 (other comment)
Can you merge this first? I'll make the changes for the typical addressbook thing in the next PR
44 (other comment)
Although we are not implementing it, I juz changed it to Pawbook for all those diagram so it fits in unless you want to remove. Coz for those parts that we are not implementing is written as address book. This will make it neater.
45 (other comment)
If you look properly, the addressbook in the uml diagram is changed to pawbook.
46 (other comment)
OK, I know why it happens coz our master is updated when I changed it. So when I sync my master with team's master. It is left out 😦
47 (other comment)
Lemme do it real quick
48 (other comment)
Done!
49 (other comment)
Idk how to drop it 😦. When I tried rebase in sourcetree then this happens. How can I put this outdated branch on top of the latest current branch? What's the correct way?
50 (other comment)
Switch to PR #396
51 (other comment)
Made those changes! Just that after restoring the execute() there's one test case failing in editDogCommandTest which I have commented out. I need your help for that, I have tested the database.equals(other.database) in equals() of ModelManager is failing. I tried printing it, the database is exactly the same object but it fails...
52 (other comment)
Also, is possible to merge this PR? coz it's getting bigger
53 (other comment)
This is what I have done so far. I added the part for delete dogid from old owner but it still fails. Do you mind helping me with this part, I'm really stucked. Perhaps, I can start working on developer guide.
@georgepwhuang
(0 comments)1 (other comment)
Force merged due to MacOS building cannot start