]> git.lizzy.rs Git - nhentai.git/blob - nhentai/viewer/main.js
merge to functions
[nhentai.git] / nhentai / viewer / main.js
1     //------------------------------------navbar script------------------------------------
2 var menu = document.getElementsByClassName("accordion");
3 for (var i = 0; i < menu.length; i++) {
4   menu[i].addEventListener("click", function() {
5     var panel = this.nextElementSibling;
6     if (panel.style.maxHeight) {
7           this.classList.toggle("active");
8       panel.style.maxHeight = null;
9     } else {
10       panel.style.maxHeight = panel.scrollHeight + "px";
11           this.classList.toggle("active");
12     }
13   });
14 }
15 var language = document.getElementById("language").children;
16 for (var i = 0; i < language.length; i++){
17         language[i].addEventListener("click", function() {
18                 toggler = document.getElementById("language")
19                 toggler.style.maxHeight = null;
20                 document.getElementsByClassName("accordion")[0].classList.toggle("active");
21                 filter_maker(this.innerText, "language");
22 });
23 }
24 var category = document.getElementById("category").children;
25 for (var i = 0; i < category.length; i++){
26         category[i].addEventListener("click", function() {
27                 document.getElementById("category").style.maxHeight = null;
28                 document.getElementsByClassName("accordion")[1].classList.toggle("active");
29                 filter_maker(this.innerText, "category");
30 });
31 }
32 //-----------------------------------------------------------------------------------
33 //----------------------------------Tags Script--------------------------------------
34 tag_maker(tags);
35
36 var tag = document.getElementsByClassName("btn-2");
37 for (var i = 0; i < tag.length; i++){
38         tag[i].addEventListener("click", function() {
39         filter_maker(this.innerText, this.id);
40 });
41 }
42
43 var input = document.getElementById("tagfilter");
44 input.addEventListener("input", function() {
45         var tags = document.querySelectorAll(".btn-2");
46         if (this.value.length > 0) {
47         for (var i = 0; i < tags.length; i++) {
48             var tag = tags[i];
49             var nome = tag.innerText;
50             var exp = new RegExp(this.value, "i");;
51             if (exp.test(nome)) {
52                 tag.classList.remove("hidden");
53                     }
54                         else {
55                                 tag.classList.add("hidden");
56             }
57         }
58     } else {
59         for (var i = 0; i < tags.length; i++) {
60             var tag = tags[i];
61                                 tag.classList.add('hidden');
62         }
63     }
64 });
65 input.addEventListener('keypress', function (e) {
66         enter_search(e, this.value);
67 });
68 //-----------------------------------------------------------------------------------
69 //------------------------------------Functions--------------------------------------
70 function enter_search(e, input){
71         var count = 0;
72         var key = e.which || e.keyCode;
73         if (key === 13 && input.length > 0) {
74           var all_tags = document.getElementById("tags").children;
75           for(i = 0; i < all_tags.length; i++){
76                 if (!all_tags[i].classList.contains("hidden")){
77                         count++;
78                         var tag_name = all_tags[i].innerText;
79                         var tag_id   = all_tags[i].id;
80                         if (count>1){break}
81                 }
82           }
83           if (count == 1){
84                 filter_maker(tag_name, tag_id);
85           }
86         }
87 }
88 function filter_maker(text, class_value){
89     var check = filter_checker(text);
90         var nav_btn = document.getElementsByClassName("nav-btn")[0];
91         if (nav_btn.classList.contains("hidden")){
92           nav_btn.classList.toggle("hidden");
93         }
94         if (check == true){
95                 var node = document.createElement("a");
96                 var textnode = document.createTextNode(text);
97                 node.appendChild(textnode);
98                 node.classList.add(class_value);
99                 nav_btn.appendChild(node);
100                 filter_searcher();
101         }
102 }
103
104 function filter_searcher(){
105         var verifier = null;
106         var tags_filter = [];
107         var doujinshi_id = [];
108         var filter_tag = document.getElementsByClassName("nav-btn")[0].children;
109         filter_tag[filter_tag.length-1].addEventListener("click", function() {
110                 this.remove();
111                 try{
112                         filter_searcher();
113                 }
114                 catch{
115                         var gallery = document.getElementsByClassName("gallery-favorite");
116                         for (var i = 0; i < gallery.length; i++){
117                                 gallery[i].classList.remove("hidden");
118                         }
119                 }
120         });
121         for (var i=0; i < filter_tag.length; i++){
122                 var fclass = filter_tag[i].className;
123                 var fname = filter_tag[i].innerText.toLowerCase();
124                 tags_filter.push([fclass, fname])
125         }
126         for (var i=0; i < data.length; i++){
127                 for (var j=0; j < tags_filter.length; j++){
128                         try{
129                                 if(data[i][tags_filter[j][0]].includes(tags_filter[j][1])){
130                                         verifier = true;
131                                 }
132                                 else{
133                                         verifier = false;
134                                         break
135                                 }
136                         }
137                         catch{
138                                 verifier = false;
139                                         break
140                         }
141                 }
142                 if (verifier){doujinshi_id.push(data[i].Folder);}
143         }
144         var gallery = document.getElementsByClassName("gallery-favorite");
145         for (var i = 0; i < gallery.length; i++){
146                 gtext = gallery [i].children[0].children[0].children[1].innerText;
147                 if(doujinshi_id.includes(gtext)){
148                         gallery[i].classList.remove("hidden");
149                 }
150                 else{
151                 gallery[i].classList.add("hidden");
152                 }
153         }
154 }
155
156 function filter_checker(text){
157     var filter_tags = document.getElementsByClassName("nav-btn")[0].children;
158         if (filter_tags == null){return true;}
159         for (var i=0; i < filter_tags.length; i++){
160                 if (filter_tags[i].innerText == text){return false;}
161         }
162         return true;
163 }
164
165 function tag_maker(data){
166         for (i in data){
167                 for (j in data[i]){
168                         var node = document.createElement("button");
169                         var textnode = document.createTextNode(data[i][j]);
170                         node.appendChild(textnode);
171                         node.classList.add("btn-2");
172                         node.setAttribute('id', i);
173                         node.classList.add("hidden");
174                         document.getElementById("tags").appendChild(node);
175                 }
176         }
177 }