const PAGE_SIZE = 10; var totalPages; var currPage = +sessionStorage.getItem("page"); if (currPage == 0) { currPage = 1; } var search = sessionStorage.getItem("search"); if (search == null) { search = ""; } var sorting = sessionStorage.getItem("sort"); if (sorting == null) { sorting = "-datetime"; } function escapedString(str) { return str .replace("&", "&") .replace("<", "<") .replace(">", ">") .replace("\n", "
"); } function renderBlockQuote(quote) { return `

${escapedString(quote.text)}

${escapedString(quote.author)}

${quote.datetime}

`; } function load() { var quotesCount; failed = false; $.ajax({ async: false, url: "/api/quotes/count", type: "GET", dataType: "json", success: function (resp) { quotesCount = resp.count; }, error: function (err) { $("#error-message").text(err.responseJSON.error); $("#error").removeClass("hidden"); failed = true; $("#block-quotes-loader").addClass("hidden"); }, }); if (failed) { return; } totalPages = Math.ceil(quotesCount / PAGE_SIZE); $("#input-search").val(search); $("#input-sorting").val(sorting); $("#btn-page-curr").text(currPage); if (currPage > 1) { $("#btn-page-first").removeClass("hidden"); if (currPage > 2) { $("#btn-page-prev").text(currPage - 1); $("#btn-page-prev").removeClass("hidden"); if (currPage > 3) { $("#pages-prev").removeClass("hidden"); } } } if (currPage < totalPages) { $("#btn-page-last").text(totalPages); $("#btn-page-last").removeClass("hidden"); if (currPage < totalPages - 1) { $("#btn-page-next").text(currPage + 1); $("#btn-page-next").removeClass("hidden"); if (currPage < totalPages - 2) { $("#pages-next").removeClass("hidden"); } } } container = $("#block-quotes"); $.ajax({ url: `/api/quotes?filter=${encodeURIComponent(search)}&sort=${encodeURIComponent(sorting)}&limit=${PAGE_SIZE}&offset=${(currPage - 1)*PAGE_SIZE}`, type: "GET", dataType: "json", success: function (resp) { if (resp.length == 0) { container.html("

Чёт нету ничего...

"); return; } resp.forEach((quote) => { container.append(renderBlockQuote(quote)); }); }, error: function (err) { $("#error-message").text(err.responseJSON.error); $("#error").removeClass("hidden"); }, complete: function () { $("#block-quotes-loader").addClass("hidden"); }, }); } function reload() { container = $("#block-quotes"); loader = $("#block-quotes-loader"); loader.removeClass("hidden"); container.html(loader); $("#error").addClass("hidden"); $("#btn-page-first").addClass("hidden"); $("#pages-prev").addClass("hidden"); $("#btn-page-prev").addClass("hidden"); $("#btn-page-next").addClass("hidden"); $("#pages-next").addClass("hidden"); $("#btn-page-last").addClass("hidden"); load(); } $(window).on("load", function (e) { load(); }); $(document).on("click", "#btn-refresh", function (e) { search = $("#input-search").val(); if (search != "") { currPage = 1; sessionStorage.setItem("search", currPage); } sorting = $("#input-sorting option:selected").val(); reload(); sessionStorage.setItem("search", search); sessionStorage.setItem("sort", sorting); }); $(document).on("click", "#btn-page-first", function (e) { currPage = 1; reload(); sessionStorage.setItem("page", currPage); }); $(document).on("click", "#btn-page-prev", function (e) { currPage--; reload(); sessionStorage.setItem("page", currPage); }); $(document).on("click", "#btn-page-next", function (e) { currPage++; reload(); sessionStorage.setItem("page", currPage); }); $(document).on("click", "#btn-page-last", function (e) { currPage = totalPages; reload(); sessionStorage.setItem("page", currPage); });