From 7412e02e4dbc1515669aca0b399d9c37f0982f18 Mon Sep 17 00:00:00 2001 From: sairaj mote Date: Sat, 26 Jun 2021 18:41:15 +0530 Subject: [PATCH] Feature update Added pagination to search results --- components.js | 12 ------- css/main.css | 3 +- css/main.min.css | 2 +- css/main.scss | 3 +- index.html | 84 ++++++++++++++++++++++++++++++------------------ 5 files changed, 58 insertions(+), 46 deletions(-) diff --git a/components.js b/components.js index b32245e..1ea5b9c 100644 --- a/components.js +++ b/components.js @@ -1712,17 +1712,6 @@ customElements.define('strip-select', class extends HTMLElement{ get value() { return this._value } - fireEvent = () => { - this.dispatchEvent( - new CustomEvent("change", { - bubbles: true, - composed: true, - detail: { - value: this.value - } - }) - ) - } scrollLeft = () => { this.stripSelect.scrollBy({ left: -this.scrollDistance, @@ -1766,7 +1755,6 @@ customElements.define('strip-select', class extends HTMLElement{ slot.assignedElements().forEach(elem => elem.removeAttribute('active')) e.target.setAttribute('active', '') e.target.scrollIntoView({behavior: "smooth", block: "nearest", inline: "center"}) - this.fireEvent() } }) const firstOptionObserver = new IntersectionObserver(entries => { diff --git a/css/main.css b/css/main.css index 9faae40..70aa5d3 100644 --- a/css/main.css +++ b/css/main.css @@ -666,7 +666,8 @@ sm-option { font-size: 0.9rem; } -#page_selector strip-option { +#page_selector strip-option, +#search_page_selector strip-option { --border-radius: 0.3rem; --active-option-color: white; --active-option-backgroud-color: var(--accent-color); diff --git a/css/main.min.css b/css/main.min.css index 954a533..07c0d11 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -a,button{color:inherit}*{padding:0;margin:0;box-sizing:border-box;font-family:Inter,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{--accent-color:#304FFE;--light-shade:rgba(var(--text-color), 0.06);--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#F6f6f6;--error-color:red;--green:#00843b;color:rgba(var(--text-color),1);background:var(--background-color);display:flex;flex-direction:column}a.button:any-link,button{display:inline-flex;background:0 0;padding:.5rem .6rem;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent}body[data-theme=dark]{--accent-color:#2353FF;--green:#13ff5a;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20;--background-color:#0a0a0a;--error-color:rgb(255, 106, 106)}main{flex:1}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2,.page__title{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}p{font-size:.8;max-width:60ch;line-height:1.7;color:rgba(var(--text-color),.8)}img{object-fit:cover}a{text-decoration:none}a:focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}button{position:relative;overflow:hidden;align-items:center;outline:0;font-size:.9rem;border-radius:.2rem;border:none}button:focus-visible{outline:solid rgba(var(--text-color),1)}a.button:any-link{position:relative;align-items:center;outline:0;font-size:.8rem;border-radius:.3rem;align-self:flex-start;text-decoration:none;color:rgba(var(--text-color),.7);background-color:rgba(var(--text-color),.06)}a.button:any-link .icon{margin-right:.3rem;height:1.2rem}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}ul{list-style:none}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.flex{display:flex}.grid{display:grid}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{align-items:flex-start}.align-center{align-items:center}.text-center{text-align:center}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16);pointer-events:none}#torrent_download_button,.button--primary,.torrent-type-icon{background-color:var(--accent-color)}.interact{position:relative;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.page-layout{position:relative;display:grid;grid-template-columns:1rem minmax(0,1fr) 1rem}.page-layout>*{grid-column:2/3}.popup__header{display:grid;gap:.5rem;width:100%;padding:1rem 1.5rem;align-items:center;grid-template-columns:auto 1fr}.popup__header__close{padding:.5rem;cursor:pointer}.button--primary{color:#fff;font-weight:500;padding:.5rem 1.2rem}.auto-grid-2{gap:2rem;grid-template-columns:1fr}#error_page,#loading_page{position:relative;display:grid;height:100%;place-content:center;justify-items:center}#main_header{position:relative;display:flex;padding:1rem;align-items:center;justify-content:space-between;grid-template-columns:repeat(3,1fr)}#main_header__logo{height:1.8rem;width:1.8rem}.theme-switcher{position:relative;justify-self:flex-end;width:1.5rem;height:1.5rem;cursor:pointer;-webkit-tap-highlight-color:transparent}.theme-switcher .icon{position:absolute;transition:transform .6s}.theme-switcher__checkbox{display:none}.theme-switcher__checkbox:checked~.moon-icon{transform:scale(0) rotate(90deg)}.theme-switcher__checkbox:not(:checked)~.sun-icon{transform:scale(0) rotate(-90deg)}.page{padding-bottom:3rem}#search_section{position:relative;display:grid;gap:.5rem 0;padding:4rem 0;justify-items:center}.app-icon{height:3rem;width:3rem}.app-icon-loader{fill:none;stroke-width:2;justify-self:center;stroke-dasharray:202;margin:2rem 0;stroke:rgba(var(--text-color),1);animation:stroke-anim 2s infinite alternate}@keyframes stroke-anim{0%{stroke-dashoffset:202}100%{stroke-dashoffset:0}}.app-name{font-weight:500;margin-bottom:1rem;font-size:.9rem;color:rgba(var(--text-color),.7)}.search-container{position:relative;margin-bottom:1rem;width:min(28rem,100%)}.search-torrent{--border-radius:2rem;--background:rgba(var(--text-color), 0.06)}.search-torrent .icon{height:1.2rem;fill:rgba(var(--text-color),.7)}.search-suggestions-container{top:100%;position:absolute;z-index:1;width:100%;border-radius:1rem;margin-top:.5rem;box-shadow:0 .5rem 1rem -.5rem rgba(0,0,0,.2);background-color:rgba(var(--foreground-color),1)}.search-suggestions-container:not(:empty){padding:.5rem 0}.search-suggestion{display:flex;cursor:pointer;font-weight:700;font-size:.9rem;padding:.8rem 1rem;color:rgba(var(--text-color),.8);outline:0}.search-suggestion:active,.search-suggestion:focus{outline:0;border:0}.search-suggestion:focus,.search-suggestion:focus-visible{outline:transparent;background-color:rgba(var(--text-color),.1)}.search-suggestion span{font-weight:450}.search-suggestion pre{white-space:pre-wrap}.torrent-container{padding:1.5rem 0;display:grid;gap:.5rem;padding-bottom:4rem}.torrent-card{display:grid;gap:0 1rem;align-items:center;grid-template-columns:1fr auto;padding:1rem;border-radius:.3rem;-webkit-tap-highlight-color:transparent;background-color:rgba(var(--text-color),.06)}.torrent-card .torrent-info{gap:0 1rem;grid-template-columns:auto 1fr;grid-template-areas:"torrent-icon ." "torrent-icon ."}.torrent-card .torrent-type-icon{padding:.8rem}.torrent-card__icon{grid-area:torrent-icon}.torrent-card__icon .icon{height:1.4rem;width:1.4rem}.torrent-card__title{font-weight:600;font-size:1.1rem;margin-bottom:.5rem}.torrent-card__tags,.torrent-card__uploader{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;color:rgba(var(--text-color),.7)}.torrent-card__download-button{justify-self:flex-end;align-self:flex-start;background-color:rgba(var(--text-color),.1)}.torrent-card__download-button .icon{height:1.4rem;margin-right:.5rem}.progress-indicator{justify-self:flex-end;height:2.3rem;padding:0 .6rem}.progress-percent{font-size:.9rem;font-weight:500;color:rgba(var(--text-color),.8)}.progress-loader{height:1.2rem;width:1.2rem;fill:none;padding:.1rem;stroke-width:16;overflow:visible;margin-right:.5rem;stroke-dasharray:201;stroke-dashoffset:201;transform:rotate(-90deg);stroke:var(--accent-color);transition:stroke-dashoffset .3s}.torrent-preview{display:grid}.torrent-preview__info-section{display:flex;flex-direction:column;align-content:flex-start}.torrent-type-icon{display:flex;padding:1rem;border-radius:50%;align-items:center;justify-content:center;align-self:flex-start;aspect-ratio:1/1;flex-shrink:0}#main_footer,#torrent_type_icon{background-color:rgba(var(--text-color),.06)}.torrent-type-icon .icon{fill:#fff}#torrent_type_icon{align-self:center;justify-self:center;padding:2rem;margin:3rem 0 4rem}#torrent_type_icon .icon{height:3rem;width:3rem;fill:rgba(var(--text-color),.3)}#torrent_tags,#torrent_uploader{display:flex;width:100%;font-size:.85rem;margin-bottom:.3rem;color:rgba(var(--text-color),.8)}#torrent_name{font-size:1.8rem;margin-bottom:2rem}#torrent__description{font-size:.9rem;color:rgba(var(--text-color),.8)}#torrent_uploader{font-weight:500;margin-top:1rem;width:auto;border-radius:1.5rem;padding:.3rem .8rem;align-self:flex-start;background-color:rgba(var(--text-color),.1)}#download_container{display:flex;align-items:center;height:3rem;margin-top:2rem}#torrent_download_button{align-self:flex-start;color:#fff;flex-shrink:0;padding:.7rem;justify-content:center}#torrent_download_button .icon{fill:#fff;margin-right:.5rem}#advance_search_section{align-items:flex-start;padding:1rem 0;margin-bottom:1rem}#advance_search_switch{justify-self:flex-start}#advance_search_switch h4{margin-left:1rem}sm-option{font-size:.9rem}#page_selector strip-option{--border-radius:0.3rem;--active-option-color:white;--active-option-backgroud-color:var(--accent-color)}#main_footer{padding:2rem 0}@media only screen and (max-width:640px){.popup__header{padding:0 1.5rem 0 .5rem}.torrent-card{grid-template-columns:1fr}.torrent-card__icon{margin:0}.torrent-card__title{font-size:.95rem}.torrent-card__tags,.torrent-card__uploader{font-size:.7rem}.torrent-card .progress-indicator,.torrent-card__download-button{margin-top:1rem}#torrent_tags{font-size:.8rem}#loader_container,#torrent_download_button{width:100%;justify-content:center}}@media only screen and (min-width:640px){.popup__header{padding:1.5rem 1.5rem 0}#main_header,.torrent-card{padding:1.5rem}.auto-grid-2{grid-template-columns:1fr 1fr}.page-layout{grid-template-columns:1fr 90vw 1fr}.page__title{font-size:3rem}#torrent_popup{--min-height:80vh}.torrent-preview{gap:3rem}#torrent_name{font-size:4rem}}@media only screen and (min-width:1280px){.page-layout{grid-template-columns:1fr 80vw 1fr}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.search-suggestion:hover{background-color:rgba(var(--text-color),.1)}} \ No newline at end of file +a,button{color:inherit}*{padding:0;margin:0;box-sizing:border-box;font-family:Inter,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{--accent-color:#304FFE;--light-shade:rgba(var(--text-color), 0.06);--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#F6f6f6;--error-color:red;--green:#00843b;color:rgba(var(--text-color),1);background:var(--background-color);display:flex;flex-direction:column}a.button:any-link,button{display:inline-flex;background:0 0;padding:.5rem .6rem;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent}body[data-theme=dark]{--accent-color:#2353FF;--green:#13ff5a;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20;--background-color:#0a0a0a;--error-color:rgb(255, 106, 106)}main{flex:1}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2,.page__title{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}p{font-size:.8;max-width:60ch;line-height:1.7;color:rgba(var(--text-color),.8)}img{object-fit:cover}a{text-decoration:none}a:focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}button{position:relative;overflow:hidden;align-items:center;outline:0;font-size:.9rem;border-radius:.2rem;border:none}button:focus-visible{outline:solid rgba(var(--text-color),1)}a.button:any-link{position:relative;align-items:center;outline:0;font-size:.8rem;border-radius:.3rem;align-self:flex-start;text-decoration:none;color:rgba(var(--text-color),.7);background-color:rgba(var(--text-color),.06)}a.button:any-link .icon{margin-right:.3rem;height:1.2rem}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}ul{list-style:none}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.flex{display:flex}.grid{display:grid}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{align-items:flex-start}.align-center{align-items:center}.text-center{text-align:center}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16);pointer-events:none}#torrent_download_button,.button--primary,.torrent-type-icon{background-color:var(--accent-color)}.interact{position:relative;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.page-layout{position:relative;display:grid;grid-template-columns:1rem minmax(0,1fr) 1rem}.page-layout>*{grid-column:2/3}.popup__header{display:grid;gap:.5rem;width:100%;padding:1rem 1.5rem;align-items:center;grid-template-columns:auto 1fr}.popup__header__close{padding:.5rem;cursor:pointer}.button--primary{color:#fff;font-weight:500;padding:.5rem 1.2rem}.auto-grid-2{gap:2rem;grid-template-columns:1fr}#error_page,#loading_page{position:relative;display:grid;height:100%;place-content:center;justify-items:center}#main_header{position:relative;display:flex;padding:1rem;align-items:center;justify-content:space-between;grid-template-columns:repeat(3,1fr)}#main_header__logo{height:1.8rem;width:1.8rem}.theme-switcher{position:relative;justify-self:flex-end;width:1.5rem;height:1.5rem;cursor:pointer;-webkit-tap-highlight-color:transparent}.theme-switcher .icon{position:absolute;transition:transform .6s}.theme-switcher__checkbox{display:none}.theme-switcher__checkbox:checked~.moon-icon{transform:scale(0) rotate(90deg)}.theme-switcher__checkbox:not(:checked)~.sun-icon{transform:scale(0) rotate(-90deg)}.page{padding-bottom:3rem}#search_section{position:relative;display:grid;gap:.5rem 0;padding:4rem 0;justify-items:center}.app-icon{height:3rem;width:3rem}.app-icon-loader{fill:none;stroke-width:2;justify-self:center;stroke-dasharray:202;margin:2rem 0;stroke:rgba(var(--text-color),1);animation:stroke-anim 2s infinite alternate}@keyframes stroke-anim{0%{stroke-dashoffset:202}100%{stroke-dashoffset:0}}.app-name{font-weight:500;margin-bottom:1rem;font-size:.9rem;color:rgba(var(--text-color),.7)}.search-container{position:relative;margin-bottom:1rem;width:min(28rem,100%)}.search-torrent{--border-radius:2rem;--background:rgba(var(--text-color), 0.06)}.search-torrent .icon{height:1.2rem;fill:rgba(var(--text-color),.7)}.search-suggestions-container{top:100%;position:absolute;z-index:1;width:100%;border-radius:1rem;margin-top:.5rem;box-shadow:0 .5rem 1rem -.5rem rgba(0,0,0,.2);background-color:rgba(var(--foreground-color),1)}.search-suggestions-container:not(:empty){padding:.5rem 0}.search-suggestion{display:flex;cursor:pointer;font-weight:700;font-size:.9rem;padding:.8rem 1rem;color:rgba(var(--text-color),.8);outline:0}.search-suggestion:active,.search-suggestion:focus{outline:0;border:0}.search-suggestion:focus,.search-suggestion:focus-visible{outline:transparent;background-color:rgba(var(--text-color),.1)}.search-suggestion span{font-weight:450}.search-suggestion pre{white-space:pre-wrap}.torrent-container{padding:1.5rem 0;display:grid;gap:.5rem;padding-bottom:4rem}.torrent-card{display:grid;gap:0 1rem;align-items:center;grid-template-columns:1fr auto;padding:1rem;border-radius:.3rem;-webkit-tap-highlight-color:transparent;background-color:rgba(var(--text-color),.06)}.torrent-card .torrent-info{gap:0 1rem;grid-template-columns:auto 1fr;grid-template-areas:"torrent-icon ." "torrent-icon ."}.torrent-card .torrent-type-icon{padding:.8rem}.torrent-card__icon{grid-area:torrent-icon}.torrent-card__icon .icon{height:1.4rem;width:1.4rem}.torrent-card__title{font-weight:600;font-size:1.1rem;margin-bottom:.5rem}.torrent-card__tags,.torrent-card__uploader{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;color:rgba(var(--text-color),.7)}.torrent-card__download-button{justify-self:flex-end;align-self:flex-start;background-color:rgba(var(--text-color),.1)}.torrent-card__download-button .icon{height:1.4rem;margin-right:.5rem}.progress-indicator{justify-self:flex-end;height:2.3rem;padding:0 .6rem}.progress-percent{font-size:.9rem;font-weight:500;color:rgba(var(--text-color),.8)}.progress-loader{height:1.2rem;width:1.2rem;fill:none;padding:.1rem;stroke-width:16;overflow:visible;margin-right:.5rem;stroke-dasharray:201;stroke-dashoffset:201;transform:rotate(-90deg);stroke:var(--accent-color);transition:stroke-dashoffset .3s}.torrent-preview{display:grid}.torrent-preview__info-section{display:flex;flex-direction:column;align-content:flex-start}.torrent-type-icon{display:flex;padding:1rem;border-radius:50%;align-items:center;justify-content:center;align-self:flex-start;aspect-ratio:1/1;flex-shrink:0}#main_footer,#torrent_type_icon{background-color:rgba(var(--text-color),.06)}.torrent-type-icon .icon{fill:#fff}#torrent_type_icon{align-self:center;justify-self:center;padding:2rem;margin:3rem 0 4rem}#torrent_type_icon .icon{height:3rem;width:3rem;fill:rgba(var(--text-color),.3)}#torrent_tags,#torrent_uploader{display:flex;width:100%;font-size:.85rem;margin-bottom:.3rem;color:rgba(var(--text-color),.8)}#torrent_name{font-size:1.8rem;margin-bottom:2rem}#torrent__description{font-size:.9rem;color:rgba(var(--text-color),.8)}#torrent_uploader{font-weight:500;margin-top:1rem;width:auto;border-radius:1.5rem;padding:.3rem .8rem;align-self:flex-start;background-color:rgba(var(--text-color),.1)}#download_container{display:flex;align-items:center;height:3rem;margin-top:2rem}#torrent_download_button{align-self:flex-start;color:#fff;flex-shrink:0;padding:.7rem;justify-content:center}#torrent_download_button .icon{fill:#fff;margin-right:.5rem}#advance_search_section{align-items:flex-start;padding:1rem 0;margin-bottom:1rem}#advance_search_switch{justify-self:flex-start}#advance_search_switch h4{margin-left:1rem}sm-option{font-size:.9rem}#page_selector strip-option,#search_page_selector strip-option{--border-radius:0.3rem;--active-option-color:white;--active-option-backgroud-color:var(--accent-color)}#main_footer{padding:2rem 0}@media only screen and (max-width:640px){.popup__header{padding:0 1.5rem 0 .5rem}.torrent-card{grid-template-columns:1fr}.torrent-card__icon{margin:0}.torrent-card__title{font-size:.95rem}.torrent-card__tags,.torrent-card__uploader{font-size:.7rem}.torrent-card .progress-indicator,.torrent-card__download-button{margin-top:1rem}#torrent_tags{font-size:.8rem}#loader_container,#torrent_download_button{width:100%;justify-content:center}}@media only screen and (min-width:640px){.popup__header{padding:1.5rem 1.5rem 0}#main_header,.torrent-card{padding:1.5rem}.auto-grid-2{grid-template-columns:1fr 1fr}.page-layout{grid-template-columns:1fr 90vw 1fr}.page__title{font-size:3rem}#torrent_popup{--min-height:80vh}.torrent-preview{gap:3rem}#torrent_name{font-size:4rem}}@media only screen and (min-width:1280px){.page-layout{grid-template-columns:1fr 80vw 1fr}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.search-suggestion:hover{background-color:rgba(var(--text-color),.1)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index 20ba5b6..8633113 100644 --- a/css/main.scss +++ b/css/main.scss @@ -592,7 +592,8 @@ sm-option{ font-size: 0.9rem; } -#page_selector{ +#page_selector, +#search_page_selector{ strip-option{ --border-radius: 0.3rem; --active-option-color: white; diff --git a/index.html b/index.html index 24547af..f6aca1d 100644 --- a/index.html +++ b/index.html @@ -159,6 +159,7 @@
+
@@ -940,23 +941,13 @@ searchKey = getRef('advance_torrent_search').value.trim() !== '' ? getRef('advance_torrent_search').value.trim() : lastQuery } advancedSearch['query'] = searchKey - const torrents = await getDataFromIDB() - const options = { - keys: ['name', 'filename', 'tags'], - threshold: 0.3 - } let result if (advancedSearch.isActive) { - options.keys = ['type'] - let fuseSearch = new Fuse(torrents, options) - result = fuseSearch.search(`'${advancedSearch.category}`).map(elem => elem.item) - options.keys = ['name', 'filename', 'tags'] - fuseSearch = new Fuse(result, options) - result = fuseSearch.search(searchKey).map(elem => elem.item) + result = await getFilteredTorrents(['type'], advancedSearch.category) + result = await getFilteredTorrents(['name', 'filename', 'tags'], searchKey, {torrents: result}) } else { - const fuseSearch = new Fuse(torrents, options) - result = fuseSearch.search(searchKey).map(elem => elem.item) + result = getFilteredTorrents(['name', 'filename', 'tags'], searchKey) } if (result.length) { getRef('result_for').innerHTML = `Showing results for ${searchKey}` @@ -964,8 +955,19 @@ else { getRef('result_for').innerHTML = `No results for ${searchKey}` } + + console.log(result.length, result.length/20) + getRef('search_result').innerHTML = `` - getRef('search_result').append(renderTorrents(result)) + getRef('search_page_selector').innerHTML = `` + if(result.length > 20){ + const pages = Math.round(result.length / 20) + getRef('search_page_selector').append(createPageButtons(pages)) + getRef('search_result').append(renderTorrents(result.slice(0, 20))) + } + else{ + getRef('search_result').append(renderTorrents(result)) + } lastQuery = searchKey lastCategory = advancedSearch.category @@ -1029,16 +1031,35 @@ return arr.sort((a, b) => b[prop].localeCompare(a[prop])) } - async function getFilteredTorrents(keys, searchKey, limit = undefined){ - const torrents = await getDataFromIDB() - const options = { + async function getFilteredTorrents(keys, searchKey, options = {}){ + console.log(options) + let {limit, torrents} = options + if(!torrents){ + torrents = await getDataFromIDB() + } + const config = { keys, threshold: 0.2, } - const fuseSearch = new Fuse(torrents, options) + const fuseSearch = new Fuse(torrents, config) return fuseSearch.search(searchKey, {limit}).map(elem => elem.item) } + function createPageButtons(pages){ + const paginationFrag = document.createDocumentFragment() + for (let i = 0; i < pages; i++) { + const pageButton = create('strip-option', { + textContent: (i + 1) + }) + pageButton.setAttribute('value', i) + if (i === 0) { + pageButton.setAttribute('selected', '') + } + paginationFrag.append(pageButton) + } + return paginationFrag + } + async function showCategoryTorrents(category) { const result = await getFilteredTorrents(['type'], category) getRef('browser_category_torrents').innerHTML = `` @@ -1047,19 +1068,8 @@ if (result.length) { getRef('browser_category_torrents').append(renderTorrents(result.slice(0, 20))) - const paginationFrag = document.createDocumentFragment() const pages = Math.round(result.length / 20) - for (let i = 0; i < pages; i++) { - const pageButton = create('strip-option', { - textContent: (i + 1) - }) - pageButton.setAttribute('value', i) - if (i === 0) { - pageButton.setAttribute('selected', '') - } - paginationFrag.append(pageButton) - } - getRef('page_selector').append(paginationFrag) + getRef('page_selector').append(createPageButtons(pages)) } else { getRef('browser_category_torrents').innerHTML = `

No ${category} torrents 😔

` @@ -1067,7 +1077,7 @@ } async function renderSearchSuggestions(searchKey, advance = false) { - const result = await getFilteredTorrents(['name', 'filename'], searchKey, limit = 6) + const result = await getFilteredTorrents(['name', 'filename'], searchKey, {limit: 6}) if(advance){ getRef('advance_search_suggestions').innerHTML = `` } @@ -1220,6 +1230,18 @@ getRef('browser_category_torrents').append(renderTorrents(result.slice(startIndex, endIndex))) }, 200); }) + getRef('search_page_selector').addEventListener('change', async e => { + const result = await getFilteredTorrents(['name', 'filename', 'tags'], lastQuery) + console.log(result.length , result.length/20) + const startIndex = parseInt(e.detail.value) * 20 + const endIndex = ((parseInt(e.detail.value) * 20) + 30) < result.length ? (parseInt(e.detail.value) * 20) + 20 : result.length + + setTimeout(() => { + getRef('search_result').scrollIntoView({ behavior: 'smooth', block: 'start' }) + getRef('search_result').innerHTML = `` + getRef('search_result').append(renderTorrents(result.slice(startIndex, endIndex))) + }, 200); + })