project-books / book-project Goto Github PK
View Code? Open in Web Editor NEWBook tracker web app for book lovers
Home Page: https://project-books.github.io/
License: GNU General Public License v3.0
Book tracker web app for book lovers
Home Page: https://project-books.github.io/
License: GNU General Public License v3.0
Verify date finished reading is after date started if both fields are filled (they are both optional).
Something like:
dateStartedReading.getValue().isBefore(dateFinishedReading.getValue());
Branch to merge into: master
A book should be able to have multiple genres.
Suggested implementation:
private Set<Genre> genre;
in backend/model/Book.java
Update
This is now a backend-only issue (no Vaadin or React is required).
Branch from 0.2.0
and create a branch to back into it.
Describe the bug
Null Pointer Exception in ShelfService.java
on the line:
List<Book> books = bookRepository.findAll();
To Reproduce
Steps to reproduce the behaviour:
ui
branchExpected behaviour
No Null Pointer Exception. A list of books should be returned.
Additional context
Commit: 5476667
Line: 68
Error message: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
The current book form does not yet support adding multiple authors.
The Book
entity needs to be modified to store a List
of authors.
Possible implementation: the user types in a book author in the 'new book' form. After typing in the name of one author, a new text field appears below to allow a user to add in another author.
Add the GPL license notices to the top (above the package statement) of the Java source files
Describe the bug
A new book cannot be added as the 'add book' button is greyed out.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The add book button should not be greyed out and the book should be saved into the repository.
Screenshots
Additional context
Branch: ui
Please create your branch off ui and submit a PR to merge into it when done.
Is your feature request related to a problem? If so, please describe.
The rating field in the list of books in a given shelf show as their enum value (e.g. NINE
), rather than 9/10
(see screenshot).
Describe the solution you'd like
Ratings are shown as a fraction out of 10. For example, if the rating is NINE_POINT_FIVE
, it should be displayed as 9.5/10
.
Additional context
How the ratings are shown in the list of books in a given shelf:
Current enum:
public enum RatingScale {
ZERO,
ZERO_POINT_FIVE,
ONE,
ONE_POINT_FIVE,
TWO,
TWO_POINT_FIVE,
THREE,
THREE_POINT_FIVE,
FOUR,
FOUR_POINT_FIVE,
FIVE,
FIVE_POINT_FIVE,
SIX,
SIX_POINT_FIVE,
SEVEN,
SEVEN_POINT_FIVE,
EIGHT,
EIGHT_POINT_FIVE,
NINE,
NINE_POINT_FIVE,
TEN
}
This should be similar to issue #20.
Related branch: ui. Please create your branch off ui and submit a PR to merge into it when done.
There should be a horizontal menu at the top.
For now, there should be one tab, called 'My books'.
Add a STYLEGUIDE.md file to the root directory
When the 'date starting reading' field is shown in the book form, the user should not be able to save a book (i.e. add a validation check) with a start date that is after today's date.
Note: the user is allowed to add today's date.
The above also applied for the date finished reading.
Describe the solution you'd like
A cleaner and simpler UI design for the 'books in shelf page' (see screenshot).
This could be in the form of, for example, drawings, wireframes or direct changes to the UI in Vaadin.
Additional context
Current 'books in shelf' page:
Problems with current page:
Any other ideas and suggestions for improvement on this page are greatly appreciated.
Branch off master.
Update: please ensure that all work is your own or has an appropriate open source license (if it's not your own but there's a license, let us know so that we can attribute the original source)
Is your feature request related to a problem? If so, please describe.
The date finished date picker should not show if the user has not yet finished the book.
Describe the solution you'd like
If a book is being added to the 'to read' shelf or the 'reading' shelf, the date finished field (see BookForm.java
) should not show.
In the example above, the 'date finished' field should not show.
Branch off master.
Design a favicon to be used for the site.
Ideally, if someone sees the icon, they should be able to reasonably extrapolate that the website is book-related.
2 files formats needed:
Update: please ensure that the favicon is of your own making or it has an appropriate open source license. If there's a license, please let us know so that we can attribute the source.
The domain no-arg constructors should not be used directly, as per https://spring.io/guides/gs/accessing-data-jpa/
Describe the bug
Book.java contains a list of Author
s, and Author.java contains a list of Book
s.
This makes it hard to construct a Shelf with a List of Book
s that have authors attached since a Book
depends on having an Author
and an Author
depends on having a Book
.
Author
takes in a list of Book
s in its constructor. Similarly, a Book
takes in a list of Author
s in its contructor.
Describe the solution you'd like
As with the new book form, there should be a way to add a new shelf. The shelf should have a name.
Each shelf should have a unique name (so a custom made shelf should not have the same name as a predefined shelf).
The new book form should have an option that lets the user choose which shelves the book should be in.
This should be a required field.
Describe the solution you'd like
Replace Grid with GridCrud.
Additional context
See https://vaadin.com/directory/component/crud-ui-add-on/overview
License: Apache 2.0
Use FormLayout but keep the positioning of the fields similar to what there is now
Add the shelves:
A book can be in at most one of these three shelves. For now, these shelves should not be able to be deleted or renamed
Instead of having the following instance variables in backend/model/Book.java:
// For books that have been read
private RatingScale rating;
private String favouriteQuote;
private LocalDate dateStartedReading;
private LocalDate dateFinishedReading;
Make a subclass of Book (called something like 'BookRead') that extends Book and has the instance variables above
Describe the bug
The required field indicator (blue dot) is not showing with the new FormLayout (it used to show when addFormItem
was not used in the FormLayout).
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The blue dot indicators should show for the book title, book author and shelf fields.
Please create your branch of the ui branch and submit a PR to merge into it when done.
Describe the bug
After clicking on the 'add book' button, the form validation errors show when before the user has done anything.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
A blank form (without any validation errors) should show when the form is first presented to the user.
Screenshots
Describe the solution you'd like
Let a user specify which edition of the book they have read.
This should only affect the back-end for now. The Book
entity should take an int
that is at least 1. It should store the book edition as a String
.
Examples:
Describe the bug
When a new book is added using the form, it is added to all shelves, not only the shelf specified in the new book form.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
A book should only be added to the shelves specified by the user.
Screenshots
'Stardust' has been added to the 'read' shelf:
But it also appears in the 'want to read' shelf (as well as the 'currently reading' shelf):
Additional context
Branch name: ui
Commit: d3393fa
Describe the bug
The grid (see screenshot) is not populated with a list of books in the specified shelf.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
A list of books that are in the specified shelf should appear.
Screenshots
Additional context
Branch: shelf-binding
Debug messages have been added. The call to Shelf
's getBooks()
returns an empty list.
What has changed:
Book
and a Shelf
Describe the bug
If I try to move a book to a different shelf, the shelf that I was moving the book from is no longer accessible. Also, the shelf that I moving the book from is no longer accessible (since there are now two of them).
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
It should be possible to move a book to a different shelf without deleting the shelf.
Describe the bug
If a field in the book form is hidden (e.g. date started because the book is in the 'to read' shelf), a start date should not be shown in the book grid.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
A start date should not be shown for books in the 'to read' shelf
A finished date should not be shown for books in the 'to read' shelf
A finished date should not be shown for books in the 'reading' shelf
A book rating should not be shown for books in the 'to read' shelf
A book rating should not be shown for books in the 'reading' shelf
Screenshots
Is your feature request related to a problem? If so, please describe.
It's strange to see the genre in uppercase and for there to be underscores (as in the enum) in the new book form and the shelf grid.
Describe the solution you'd like
For example, SCIENCE_FICTION
should be Science fiction
and, as a special case, NON_FICTION
should be Non-fiction
.
Describe the solution you'd like
Add a page where the user can set a target for the number of the books they want to have read by the end of the year.
The page should include
Additional context
The reading goal should be an entity so that it is saved in the database (so that users can see previous yearly challenges they set for themselves).
In short, this reading target feature should be similar to Goodreads's.
Refactor the code to adhere to the Book Shelf style guide.
The branch should be made off master and then merged into it.
A JSON file containing a list of shelves and the books in those shelves (and its corresponding data, such as title, author and date started) should be exported to JSON.
After filtering by a book title (see BooksInShelfView.java), the grid results filters as expected.
However, if the clear button is pressed, or the user manually clears the filter field, the grid results should reset (since a shelf is still selected as there is no way to clear the shelf option).
Branch off master.
The shelf field in the form is not bound. A converter may be required.
Describe the solution you'd like
Let a user specify which position the book is in a series. For example, 'Harry Potter and the Prisoner of Azkaban' is the third book in the Harry Potter series.
This would involve adding an int
field to the Book
POJO.
If set, this can be displayed in the title. For example,
Harry Potter and the Prisoner of Azkaban (#3)
Branch off master.
Describe the bug
The rating field in the book form is required.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The book should be added. There should be a representation in the rating enum for 'no rating'.
Screenshots
Describe the bug
The book form no longer populates all (but the shelf) field when a grid item is selected. Only the title and the author's first name is bound (see screenshot)
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The form should get populated with all of the fields as in the grid (apart from the shelf for now).
Screenshots
Additional context
Branch: ui
Automate checking for style guide violations on all incoming pull requests.
Checkstyle should be configured to adhere to our style guide (a modified version of Google's). This should then be able to be executed from Maven (e.g. run checkstyle from Maven).
The work for this branch should be off the travis branch.
Refactor the code to use Project Lombok so that getters, setters and no-arg constructors are generated.
Branch off master and merge into it when done
Write a document explaining the different levels of resolution and how they will carried out.
Branch to merge into: master
Let a user add a thumbnail for a book in the BookForm
.
This thumbnail should show in the list of books in a given shelf.
Additional requirements:
Book
entity's database table. For example, the file path to the image could be stored.Is your feature request related to a problem? If so, please describe.
Users should eventually only be able to modify their own books
Describe the solution you'd like
Add a login page and a way to log out using Spring Security and a Vaadin LoginForm.
Describe the bug
Form validation is not working. For instance, if the user were to add a new book without a required field (e.g. the book title), the form adds the new book.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The save button should be greyed out until all the required fields have been filled, preventing a user from adding an invalid book.
Screenshots
Adding a new book without a title:
Additional context
Branch: ui
Commit: d3393fa
Describe the bug
The delete button does not delete a book.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The book should be deleted and the grid should no longer contain the deleted book.
Additional context
Branch: ui
Commit: d3393fa
Branch off master.
Describe the bug
If I update the name of a particular author that has multiple books, all occurrences of that author's name will be changed. This is not desirable in the case where two authors have the same name.
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
The name should only change on the row the user selected.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.