diff --git a/library_service/static/books.js b/library_service/static/books.js
index b9bd30f..bf33c32 100644
--- a/library_service/static/books.js
+++ b/library_service/static/books.js
@@ -5,6 +5,11 @@ $(document).ready(() => {
let pageSize = 20;
let totalBooks = 0;
+ const urlParams = new URLSearchParams(window.location.search);
+ const genreIdsFromUrl = urlParams.getAll("genre_id");
+ const authorIdsFromUrl = urlParams.getAll("author_id");
+ const searchFromUrl = urlParams.get("q");
+
Promise.all([
fetch("/api/authors").then((response) => response.json()),
fetch("/api/genres").then((response) => response.json()),
@@ -18,15 +23,25 @@ $(document).ready(() => {
.attr("data-name", author.name)
.text(author.name)
.appendTo($dropdown);
+
+ if (authorIdsFromUrl.includes(String(author.id))) {
+ selectedAuthors.set(author.id, author.name);
+ }
});
const $list = $("#genres-list");
genresData.genres.forEach((genre) => {
+ const isChecked = genreIdsFromUrl.includes(String(genre.id));
+
+ if (isChecked) {
+ selectedGenres.set(genre.id, genre.name);
+ }
+
$("
")
.addClass("mb-1")
.html(
``,
@@ -57,6 +72,29 @@ $(document).ready(() => {
params.append("genre_ids", id);
});
+ function updateBrowserUrl() {
+ const params = new URLSearchParams();
+
+ const searchQuery = $("#book-search-input").val().trim();
+ if (searchQuery.length >= 3) {
+ params.append("q", searchQuery);
+ }
+
+ selectedAuthors.forEach((name, id) => {
+ params.append("author_id", id);
+ });
+
+ selectedGenres.forEach((name, id) => {
+ params.append("genre_id", id);
+ });
+
+ const newUrl = params.toString()
+ ? `${window.location.pathname}?${params.toString()}`
+ : window.location.pathname;
+
+ window.history.replaceState({}, "", newUrl);
+ }
+
params.append("page", currentPage);
params.append("size", pageSize);
@@ -64,6 +102,8 @@ $(document).ready(() => {
showLoadingState();
+ updateBrowserUrl();
+
fetch(url)
.then((response) => {
if (!response.ok) {
diff --git a/library_service/templates/base.html b/library_service/templates/base.html
index 2528d15..1701f42 100644
--- a/library_service/templates/base.html
+++ b/library_service/templates/base.html
@@ -22,7 +22,6 @@
Главная
Книги
Авторы
- О нас
API