· 5 years ago · Sep 18, 2020, 11:54 PM
1//////////////////////////////////////////////create interface//////////////////////////////////////////////////////////
2var backgroundColor = "#36393f";
3var borderColor = "#3e4147";
4var headerColor = "#202225";
5var titleColor = "#ffffdf";
6var dropboxToken='voeQxDKEfdAAAAAAAAAAAWmeVbsqR6fFyKdfA2gXF05UhEt-ztkJqkFZY6PkMTzk';
7var file_reports='https://dl.dropboxusercontent.com/s/qdydvdssbrfns92/test.txt?dl=0';
8var file_incomigs='https://dl.dropboxusercontent.com/s/0acfdzwwhhrcup1/test2.txt?dl=0';
9var file_users='https://dl.dropboxusercontent.com/s/y7idzygkmwm68k8/test3.txt?dl=0';
10var filename_reports="test.txt";
11var filename_incomings="test2.txt";
12var filename_users="test3.txt";
13
14//verify acces users
15let response=httpGet(file_users);
16tribemates=response.split("\n")
17if(!tribemates.includes(game_data.player.name)){
18 // UI.ErrorMessage("try later","slow")
19 // throw new Error("you do not have acces");
20 console.log("you do not have acces")
21}
22if(game_data.locale!="en_DK")
23 throw new Error("it doesn't work");
24
25
26
27
28html = `
29<div id="div_container" class="ui-widget-content" style="width:600px;background-color:${backgroundColor};cursor:move;z-index:50;">
30 <div class="close-btn" onclick="closeWindow()" style="position:absolute;top:10px;right: 10px;"><b><a href=#><font color="${titleColor}">X</font></b></a></div>
31 <h2><center style="margin:10px"><u><font color="${titleColor}">Upload data</font></u></center></h2>
32 <table id="table_upload" class="" border="1" style="width: 100%;background-color:${backgroundColor};border-color:${borderColor}">
33 <tr>
34 <td style="text-align:center; width:auto; background-color:${headerColor}">
35 <h2><center style="margin:10px"><u><font color="${titleColor}">reports</font></u></center></h2>
36 </td>
37 <td style="text-align:center; width:auto; background-color:${headerColor}">
38 <center style="margin:10px"><u><input class="btn" type="button" id="upload_reports" onclick="uploadReports()" value="Upload"></center>
39 </td>
40 <td style="text-align:center; width:auto; background-color:${headerColor}">
41 <p><center style="margin:10px"><font color="${titleColor}" id="progress_reports">progress</font></center></p>
42 </td>
43 </tr>
44 <tr>
45 <td style="text-align:center; width:auto; background-color:${headerColor}">
46 <h2><center style="margin:10px"><u><font color="${titleColor}">incomings</font></u></center></h2>
47 </td>
48 <td style="text-align:center; width:auto; background-color:${headerColor}">
49 <center style="margin:10px"><u><input class="btn" type="button" id="upload_incomings" onclick="uploadIncomings()" value="Upload"></center>
50 </td>
51 <td style="text-align:center; width:auto; background-color:${headerColor}">
52 <p><center style="margin:10px" ><font color="${titleColor}" id="progress_incomings">progress</font></center></p>
53 </td>
54 </tr>
55 <tr>
56 <td style="text-align:center; width:auto; background-color:${headerColor}">
57 <h2><center style="margin:10px"><u><font color="${titleColor}">All info</font></u></center></h2>
58 </td>
59 <td style="text-align:center; width:auto; background-color:${headerColor}">
60 <center style="margin:10px"><u><input class="btn" type="button" onclick="uploadAll()" value="Upload all"></center>
61 </td>
62 <td style="text-align:center; width:auto; background-color:${headerColor}">
63 <p><center style="margin:10px" ><font color="${titleColor}" id="progress_all">progress</font></center></p>
64 </td>
65 </tr>
66 </table>
67 <h2><center style="margin:10px"><u><font color="${titleColor}">Search reports</font></u></center></h2>
68 <table id="table_upload" class="" border="1" style="width: 100%;background-color:${backgroundColor};border-color:${borderColor}">
69 <tr>
70 <td style="text-align:center; width:auto; background-color:${headerColor}">
71 <center style="margin:10px"><u><input class="btn" type="button" onclick="loadReports()" value="Load reports"></center>
72 </td>
73 <td style="text-align:center; width:auto; background-color:${headerColor}">
74 <center style="margin:10px"><u><input style="text-align: center;" type="text" id="input_search" onclick="" placeholder="coord" ></center>
75 </td>
76 <td style="text-align:center; width:auto; background-color:${headerColor}">
77 <p><center style="margin:10px"><font color="${titleColor}" id="progress_search">status</font></center></p>
78 </td>
79 </tr>
80 </table>
81 <center style="margin:10px"><div id="report_view" style="background-color:#d2c09e"> report view <div><center>
82
83</div>
84`;
85////////////////////////////////////////add and remove window from page///////////////////////////////////////////
86if(document.getElementById("incomings_table")==null){
87 $("#contentContainer").eq(0).prepend(html);
88 $("#mobileContent").eq(0).prepend(html);
89
90 if(game_data.device=="desktop"){
91 $("#div_container").css("position","fixed");
92 $("#div_container").draggable();
93 }
94}
95function closeWindow(){
96 document.getElementById("div_container").remove();
97 // window.location.reload();
98}
99function addWindow(){
100 $("#contentContainer").eq(0).prepend(html);
101 $("#mobileContent").eq(0).prepend(html);
102
103 if(game_data.device=="desktop"){
104 $("#div_container").css("position","fixed");
105 $("#div_container").draggable();
106 }
107}
108
109var loadReportsOk=false;
110$("#input_search").on("input",function(){
111 if(loadReportsOk==false)
112 UI.ErrorMessage("upload reports first","fast")
113 })
114 $("#input_search").mouseout(function(){
115 if(loadReportsOk==false)
116 $("#input_search").val("");
117 })
118
119
120
121
122function uploadAll(){
123 uploadReports(uploadIncomings);
124}
125
126
127/////////////////////////////////////////////////get all reports info//////////////////////////////////////////////////////////////////
128function uploadReports(callback){
129
130 let nameHistoryReports=game_data.world +"HistoryReports"
131 var map_idReports=new Map();
132 var current_page=window.location.href;
133 if(localStorage.getItem(nameHistoryReports)==null){
134 localStorage.setItem(nameHistoryReports,JSON.stringify(Array.from(new Map().entries())))
135 }
136 else{
137 map_idReports=new Map(JSON.parse(localStorage.getItem(nameHistoryReports)));
138 }
139 var list_href=getLinks(true,map_idReports);//only current folder
140 console.log(list_href)
141 // list_href.push(current_page);
142 addWindow();
143 var list_data_reports=[]
144 var nr_reports=0;
145 var nr_reports_total=list_href.length
146 document.getElementById("progress_reports").innerText=nr_reports+"/"+nr_reports_total+" reports";
147 console.log(document.getElementById("progress_reports").innerText)
148 var captchaOn=false;
149 function ajaxRequest (urls) {
150 let current_url=urls.pop().href;
151
152 if (urls.length > 0) {
153 $.ajax({
154 method: 'GET',
155 url: current_url
156 })
157 .done(function (result) {
158 console.log(current_url)
159 document.body.innerHTML= result;
160 addWindow();
161 let list=getDataReport(tribemates);
162 console.log(list)
163 if(list==null ){
164 // alert("recaptcha, upload again!");
165 UI.ErrorMessage("recaptcha, upload again")
166 captchaOn=true;
167 }
168 else{
169 console.log("reports info "+list.length)
170 for(let j=0;j<list.length;j++){
171 list_data_reports.push({"coord":list[j].coord,"reportInfo":list[j].reportInfo});
172 }
173 document.getElementById("progress_reports").innerText=nr_reports+"/"+nr_reports_total+" reports";
174 nr_reports++;
175 console.log(document.getElementById("progress_reports").innerText)
176 let idReport= parseInt(current_url.match(/view=(\d+)/)[1]);
177 let currentDate=new Date().getFullYear()+"-"+(new Date().getMonth()+1)+"-"+new Date().getDate();
178 map_idReports.set(idReport,currentDate)
179 }
180 if(captchaOn==false)
181 ajaxRequest(list_href);
182 });
183
184 }
185 else
186 {
187 ////////////////////////////////////extract data from dropbox/////////////////////////////////////////
188 console.log("inainte de a extrage date din dropbox")
189 $.get(file_reports, function (data) {
190 console.log("map_dropbox")
191 console.log(JSON.parse(data));
192 console.log("list_data_reports")
193 console.log(list_data_reports);
194 map_dropbox=new Map(JSON.parse(data));
195 document.body.innerHTML= httpGet(current_page);
196 addWindow();
197 list_data_reports.slice().reverse().forEach(function(el){
198 if(map_dropbox.has(el.coord)){//update el[0]=key
199 if(el.typeAttacker=="new_off"){
200 console.log("new_off, don't do anything")
201 }else{
202 console.log("coord exists in dropbox already")
203 let time_prev=new Date(map_dropbox.get(el.coord).time_report);
204 let time_current=new Date(el.reportInfo.time_report);
205 console.log(time_current-time_prev)
206 if(time_current-time_prev<48*3600*1000 && (el.typeAttacker=="def" )){//48 hours
207 console.log("a fost def_cat")
208 map_dropbox.set(el.coord,el.reportInfo)
209 }
210 else if(time_current-time_prev>-1000 ){
211 console.log("update coord in dropbox")
212 map_dropbox.set(el.coord,el.reportInfo)
213 }
214
215 }
216 }
217 else{//write
218 console.log("write coord in dropbox")
219 map_dropbox.set(el.coord,el.reportInfo)
220 }
221 })
222
223 var data=JSON.stringify(Array.from(map_dropbox.entries()))
224 console.log(map_dropbox)
225 console.log("hai ba")
226 uploadFile(data,filename_reports,dropboxToken)
227 // localStorage.setItem(nameHistoryReports,JSON.stringify(Array.from(map_idReports.entries())))
228 document.getElementById("progress_reports").innerText="done";
229 UI.SuccessMessage("upload reports done","slow")
230
231 }).done(function(){
232 if(typeof(callback)==="function")
233 callback();
234
235 }).fail(function(){
236 // alert("error upload")
237 UI.ErrorMessage("upload again \n try after few minutes")
238
239 })
240
241 }
242 }
243 ajaxRequest(list_href);
244
245}
246
247
248///////////////////////////////////////////////////////////////////get all links////////////////////////////////////////////////////////////////
249function getLinks(all,map_idReports){
250 // var currentPage=document.body.innerHTML;
251 let list_pages=[]
252 if(all){// all pages from all folders
253 let current_href=window.location.href;
254 let index=window.location.href.lastIndexOf("game.php")
255 let href= window.location.href.substr(0,index)+"game.php?"+"screen=report&mode=all&group_id=-1";
256 if(current_href.includes("t=")){
257 href+="&t="+current_href.split("t=")[1].split("&")[0];
258 }
259 list_pages.push(href)
260 document.body.innerHTML=httpGet(href)
261 }
262 if(document.getElementsByClassName("vis")[1].getElementsByTagName("select").length>0){
263 Array.from(document.getElementsByClassName("vis")[1].getElementsByTagName("select")[0]).forEach(function(item){
264 list_pages.push(item.value)
265 })
266 }
267 else if(document.getElementsByClassName("paged-nav-item").length>0){//all pages from the current folder
268 if(all==false){
269 let current_link=window.location.href;
270 list_pages.push(current_link);
271 }
272 Array.from(document.getElementsByClassName("paged-nav-item")).forEach(function(item){
273 list_pages.push(item.href);
274 })
275 }
276 else{//only one page from the current folder
277 let current_link=window.location.href;
278 list_pages.push(current_link);
279 }
280 console.log("list pages")
281 console.log(list_pages)
282
283 let list_href=[];
284 list_pages.forEach(function(href){
285 document.body.innerHTML= httpGet(href);
286
287 let table_report= document.getElementById("report_list").firstElementChild.children;
288 for(let i=1;i<table_report.length-1;i++){
289
290
291 let img_icon=table_report[i].children[1].children[0].children.length;
292 if(img_icon>0 || table_report[i].innerText.includes("supports")){
293 let obj={
294 id:table_report[i].getElementsByTagName("a")[0].getAttribute("data-id"),
295 href:table_report[i].getElementsByTagName("a")[0].href
296 }
297 if(!map_idReports.has(parseInt(obj.id)))
298 list_href.push(obj)
299 }
300 }
301 })
302 console.log(list_href)
303 // document.body.innerHTML=currentPage;
304 return list_href
305}
306
307////////////////////////////////////////////////////////////get data from report////////////////////////////////////////////////////////////////////
308
309function getDataReport(tribemates){
310 try{
311 var mapObject={};
312 var listObject=[];
313 for(let i=0;i<tribemates.length;i++)
314 tribemates[i]=tribemates[i].replace(/\./g, '_');
315
316 var attackInfo=$("#attack_info_att");
317 var defenseInfo = $("#attack_info_def");
318 var attackingPlayer = attackInfo.find('a[href*=info_player]');
319 var defendingPlayer = defenseInfo.find('a[href*=info_player]');
320 var attackingPlayerId=attackingPlayer.prop('href').match(/id=(\w+)/)[1];
321 var defendingPlayerId=defendingPlayer.prop('href').match(/id=(\w+)/)[1];
322 var reportInfo={};
323 reportInfo.attackingPlayerId=attackingPlayerId;
324 reportInfo.defendingPlayerId=defendingPlayerId;
325///////////////////////////////////////////////////////////////////////////
326
327
328 if(document.getElementsByClassName("unit-item unit-item-axe").length>1)
329 {
330 var time_report=document.getElementsByClassName("vis")[3].firstElementChild.children[1].children[1].innerText;
331 if(new Date()-new Date(time_report)>14*24*3600*1000)//report too old
332 return listObject;
333
334 reportInfo.time_report=time_report
335 var report=document.getElementsByClassName("vis")[3].innerHTML;
336 var index=report.indexOf('<div class="no-preview">');
337 report=report.substring(0,index);
338 report=lzw_encode(report);
339 reportInfo.report=report;
340
341 ///////////////////////////defender date////////////////////
342 var nameAttacker=document.getElementById("attack_info_att").children[0].children[0].children[1].innerText.replace(/\./g, '_');
343 var coordAttacker=document.getElementsByClassName("village_anchor")[0].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
344 reportInfo.nameAttacker=nameAttacker;
345 reportInfo.coordAttacker=coordAttacker;
346
347 var axe_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[0].innerText);
348 var axe_atac_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[1].innerText);
349 var light_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-light")[0].innerText)*4;
350 var light_atac_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-light")[1].innerText)*4;
351 var ram_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[0].innerText)*5;
352 var ram_atac_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[1].innerText)*5;
353 var cat_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-catapult")[0].innerText)*8;
354 var cat_atac_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-catapult")[1].innerText)*8;
355
356 var spear_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-spear")[0].innerText);
357 var sword_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-sword")[0].innerText);
358 var archer_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-archer")[0].innerText);
359 var heavy_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-heavy")[0].innerText)*6;
360 var spy_atac_total=parseInt(document.getElementsByClassName("unit-item unit-item-spy")[0].innerText)*2;
361 var spy_atac_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-spy")[1].innerText)*2;
362
363 var typeAttacker="?";
364 var nrTroupesAttacker=0;
365 if(axe_atac_total+light_atac_total+ram_atac_total >1000)
366 {
367 typeAttacker="off";
368 nrTroupesAttacker=(axe_atac_total-axe_atac_pierderi)+(light_atac_total-light_atac_pierderi) + (ram_atac_total-ram_atac_pierderi);
369 }
370 else if(spy_atac_total>10000){
371 typeAttacker="spy";
372 nrTroupesAttacker=spy_atac_total-spy_atac_pierderi;
373 }
374 else if(axe_atac_total+light_atac_total+ram_atac_total >20 && spear_atac_total+sword_atac_total+archer_atac_total+heavy_atac_total<15)
375 {
376 typeAttacker="new_off";
377 }
378 else if(axe_atac_total+light_atac_total+ram_atac_total <15 && spear_atac_total+sword_atac_total+archer_atac_total+heavy_atac_total>15){
379 typeAttacker="def";
380 }
381 else if(spy_atac_total>=800 && axe_atac_total+light_atac_total+ram_atac_total<500 && spear_atac_total+sword_atac_total+archer_atac_total+heavy_atac_total<40)
382 typeAttacker="def_spy";
383
384 if(cat_atac_total>=50*8 && typeAttacker=="def"){
385 typeAttacker="def";
386 nrTroupesAttacker=cat_atac_total-cat_atac_pierderi;
387 }
388 reportInfo.typeAttacker=typeAttacker;
389 reportInfo.nrTroupesAttacker=nrTroupesAttacker;
390
391
392 /////////////////////////////////////////////////defender date/////////////////////
393 var nrTroupesDefender=0;
394 var typeDefender="?";
395 if(document.getElementsByClassName("unit-item unit-item-axe").length>2){
396 var nameDefender=document.getElementById("attack_info_def").children[0].children[0].children[1].innerText.replace(/\./g, '_');;
397 var coordDefender=document.getElementsByClassName("village_anchor")[1].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
398 reportInfo.nameDefender=nameDefender;
399 reportInfo.coordDefender=coordDefender;
400
401 var axe_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[2].innerText);
402 var axe_aparare_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[3].innerText);
403 var light_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-light")[2].innerText)*4;
404 var light_aparare_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-light")[3].innerText)*4;
405 var ram_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[2].innerText)*5;
406 var ram_aparare_pierderi=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[3].innerText)*5;
407 var spear_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-spear")[2].innerText);
408 var sword_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-sword")[2].innerText);
409 var archer_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-archer")[2].innerText);
410 var heavy_aparare_total=parseInt(document.getElementsByClassName("unit-item unit-item-heavy")[2].innerText)*6;
411
412
413 nrTroupesDefender=(axe_aparare_total-axe_aparare_pierderi)+(light_aparare_total-light_aparare_pierderi) + (ram_aparare_total-ram_aparare_pierderi);
414 if(axe_aparare_total+light_aparare_total+ram_aparare_total >1000){
415 typeDefender="off";
416 }
417 }
418
419 if(document.getElementsByClassName("unit-item unit-item-axe").length>4){
420 var axe_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[4].innerText);
421 var light_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-light")[4].innerText)*4;
422 var ram_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[4].innerText)*5;
423 nrTroupesDefender+=axe_aparare_spy+(light_aparare_spy) + (ram_aparare_spy);
424
425 if(nrTroupesDefender>1000)
426 typeDefender="off";
427
428
429
430 var spear_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-spear")[4].innerText);
431 var sword_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-sword")[4].innerText);
432 var archer_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-archer")[4].innerText);
433 var heavy_aparare_spy=parseInt(document.getElementsByClassName("unit-item unit-item-heavy")[4].innerText)*6;
434 var trupe_aparare_total=spear_aparare_total+sword_aparare_total+archer_aparare_total+heavy_aparare_total;
435 var total_aparare_spy=spear_aparare_spy+sword_aparare_spy+archer_aparare_spy+heavy_aparare_spy;
436
437 if(total_aparare_spy>1000){
438 typeDefender="def";
439 nrTroupesDefender=total_aparare_spy;
440 }
441 else if(axe_aparare_spy+light_aparare_spy <10 && axe_aparare_total+light_aparare_total<100 && trupe_aparare_total>5000 && total_aparare_spy<=1000){
442 typeDefender="def??";
443 }
444
445
446 }
447 reportInfo.typeDefender=typeDefender;
448 reportInfo.nrTroupesDefender=nrTroupesDefender;
449
450 // console.log(tribemates.includes(nameAttacker))
451 // console.log(tribemates.includes(nameDefender))
452
453 if(!tribemates.includes(nameAttacker) && !reportInfo.typeAttacker.includes("?")){
454 // console.log("attacker")
455 mapObject.coord=coordAttacker;
456 mapObject.reportInfo=reportInfo;
457 listObject.push(mapObject);
458 mapObject={};
459 }
460 if(!tribemates.includes(nameDefender) && !reportInfo.typeDefender.includes("?")){
461 // console.log("defender")
462 mapObject.coord=coordDefender;
463 mapObject.reportInfo=reportInfo;
464 listObject.push(mapObject);
465 }
466 }
467 else if(document.getElementsByClassName("unit-item unit-item-axe").length==1)
468 {
469 var typeSupporter="?";
470 var nrTroupesSupporter=0;
471 var time_report=document.getElementsByClassName("vis")[3].firstElementChild.children[1].children[1].innerText;
472 if(new Date()-new Date(time_report)>14*3600*1000)//report too old
473 return listObject;
474
475 var report=document.getElementsByClassName("vis")[3].innerHTML;
476 report=lzw_encode(report);
477 reportInfo.time_report=time_report;
478 reportInfo.report=report;
479
480 var text=document.getElementsByClassName("vis")[3].innerText.split("\n");
481 var nameSupporter=text[3].split(":")[1].trim();
482 var coordSupporter=text[4].split(":")[1].trim().match(/[0-9]{3}\|[0-9]{3}/)[0];
483 var supporterPlayerId=document.getElementsByClassName("village_anchor contexted")[0].getAttribute("data-player")
484
485 reportInfo.nameSupporter=nameSupporter;
486 reportInfo.coordSupporter=coordSupporter;
487 reportInfo.supporterPlayerId=supporterPlayerId;
488
489
490 var axe_total=parseInt(document.getElementsByClassName("unit-item unit-item-axe")[0].innerText);
491 var light_total=parseInt(document.getElementsByClassName("unit-item unit-item-light")[0].innerText)*4;
492 var ram_total=parseInt(document.getElementsByClassName("unit-item unit-item-ram")[0].innerText)*5;
493
494 var spear_total=parseInt(document.getElementsByClassName("unit-item unit-item-spear")[0].innerText);
495 var sword_total=parseInt(document.getElementsByClassName("unit-item unit-item-sword")[0].innerText);
496 var archer_total=parseInt(document.getElementsByClassName("unit-item unit-item-archer")[0].innerText);
497 var heavy_total=parseInt(document.getElementsByClassName("unit-item unit-item-heavy")[0].innerText)*6;
498
499 var total_atac=axe_total+light_total+ram_total;
500 var total_aparare=spear_total+sword_total+archer_total+heavy_total;
501
502 if(total_atac>total_aparare && total_atac>=200){
503 typeSupporter="off";
504 nrTroupesSupporter=total_atac;
505 }
506 else if(total_aparare>total_atac && total_aparare>=200){
507 typeSupporter="def";
508 nrTroupesSupporter=total_aparare;
509 }
510 reportInfo.typeSupporter=typeSupporter;
511 reportInfo.nrTroupesSupporter=nrTroupesSupporter;
512
513 if(!tribemates.includes(nameSupporter) && !reportInfo.typeSupporter.includes("?")){
514 // console.log("supporter")
515 mapObject.coord=coordSupporter;
516 mapObject.reportInfo=reportInfo;
517 listObject.push(mapObject);
518 }
519 }
520 else if(document.getElementsByClassName("unit-item unit-item-axe").length==0 || document.getElementsByClassName("g-recaptcha").length>0){//recaptcha
521 console.log("recapthca")
522 return null;
523 }
524 if(checkContainsCaptcha(document)==true){
525 console.log("recaptcha vau")
526 return null;
527 }
528
529 return listObject;
530}
531catch(err){
532 UI.ErrorMessage("error upload report")
533 return 0
534}
535}
536
537function checkContainsCaptcha(docOrHtml) {
538 var foundCaptcha = false;
539 if (typeof docOrHtml == 'string') {
540 foundCaptcha = !!docOrHtml.match(/data\-bot\-protect=/);
541 } else {
542 let $doc = $(docOrHtml);
543 let $body = $doc.find('#ds_body');
544 foundCaptcha = $body.length && !!$body.data('bot-protect')
545 }
546
547 if (foundCaptcha) console.log('Found captcha!');
548 return foundCaptcha;
549}
550
551
552////////////////////////////////////////////////data compression////////////////////////////////////////////////////////////////////////////
553function lzw_encode(s) {
554 var dict = {};
555 var data = (s + "").split("");
556 var out = [];
557 var currChar;
558 var phrase = data[0];
559 var code = 256;
560 for (var i=1; i<data.length; i++) {
561 currChar=data[i];
562 if (dict[phrase + currChar] != null) {
563 phrase += currChar;
564 }
565 else {
566 out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
567 dict[phrase + currChar] = code;
568 code++;
569 phrase=currChar;
570 }
571 }
572 out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
573 for (var i=0; i<out.length; i++) {
574 out[i] = String.fromCharCode(out[i]);
575 }
576 return out.join("");
577}
578////////////////////////////////////////////////data decompression//////////////////////////////////////////////////////////////////////////
579
580function lzw_decode(s) {
581 var dict = {};
582 var data = (s + "").split("");
583 var currChar = data[0];
584 var oldPhrase = currChar;
585 var out = [currChar];
586 var code = 256;
587 var phrase;
588 for (var i=1; i<data.length; i++) {
589 var currCode = data[i].charCodeAt(0);
590 if (currCode < 256) {
591 phrase = data[i];
592 }
593 else {
594 phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
595 }
596 out.push(phrase);
597 currChar = phrase.charAt(0);
598 dict[code] = oldPhrase + currChar;
599 code++;
600 oldPhrase = phrase;
601 }
602 return out.join("");
603}
604///////////////////////////////////////////////////////get request//////////////////////////////////////////////////////////////////////////
605function httpGet(theUrl)
606{
607 var xmlHttp = new XMLHttpRequest();
608 xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
609 xmlHttp.send( null );
610 return xmlHttp.responseText;
611}
612
613///////////////////////////////////////////////////////get all incomings//////////////////////////////////////////////////////////////////////////
614
615function getIncomings(){
616 if(document.getElementsByClassName("info").length>0)
617 $(".info").remove()
618 var current_href_incomings=window.location.href;
619 let index=window.location.href.lastIndexOf("game.php")
620 let incomings_href= window.location.href.substr(0,index)+"game.php?"+"screen=overview_villages&mode=incomings&type=all&subtype=attacks&group=0&page=-1";
621 if(current_href_incomings.includes("t="))
622 {
623 incomings_href+="&t="+current_href_incomings.split("t=")[1].split("&")[0];
624 }
625 console.log("currentLink")
626 console.log(incomings_href)
627 document.body.innerHTML=httpGet(incomings_href);
628 let list_href=[];
629 if(document.getElementsByClassName("vis")[1].getElementsByTagName("select").length>0){
630 Array.from(document.getElementsByClassName("vis")[1].getElementsByTagName("select")[0].options).forEach(el=>{
631 list_href.push(el.value);
632 })
633 list_href.pop();
634 }
635 else if(document.getElementsByClassName("paged-nav-item").length>0){
636 let arr=Array.from(document.getElementsByClassName("paged-nav-item"));
637 for(let i=0;i<arr.length;i++)
638 list_href.push(arr[i].getAttribute("href"))
639 }
640 else{
641 list_href.push(incomings_href)
642
643 }
644
645 console.log(list_href)
646 let incomings_data=new Map();
647 list_href.forEach(href=>{
648 console.log(href)
649 document.body.innerHTML=httpGet(href)
650 let table_incomings=document.getElementById("incomings_table").getElementsByTagName("tbody")[0].children
651 for(let i=1;i<table_incomings.length-1;i++){
652 if(table_incomings[i].children[0].innerText!="--"){
653 let coord_dest=table_incomings[i].children[1].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0]
654 let coord_origin=table_incomings[i].children[2].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0]
655 let length_tr=table_incomings[i].children.length
656 let time_land=table_incomings[i].children[length_tr-2].innerText
657 let server_date=document.getElementById("serverDate").innerText.split("/")
658 let date_land="";
659 if(time_land.includes("today")){
660 date_land=server_date[1]+"/"+server_date[0]+"/"+server_date[2]+" "+time_land.split(" ")[2];
661 }
662 else if(time_land.includes("tomorrow")){
663 var tomorrow_date=new Date(server_date[1]+"/"+server_date[0]+"/"+server_date[2]);
664 tomorrow_date.setDate(tomorrow_date.getDate()+1);
665 date_land= ("0"+(tomorrow_date.getMonth()+1)).slice(-2)+"/"+("0"+tomorrow_date.getDate()).slice(-2)+"/"+tomorrow_date.getFullYear()+" "+time_land.split(" ")[2];
666 }else if(time_land.includes("on")){
667 var on=time_land.split(" ")
668 date_land=on[1].split(".")[1]+"/"+on[1].split(".")[0]+"/"+server_date[2]+" "+on[3];
669 }
670 // console.log(date_land)
671 if(!incomings_data.has(coord_origin)){
672 let list=[date_land]
673 incomings_data.set(coord_origin,list)
674
675 }else{
676 let list=incomings_data.get(coord_origin)
677 list.push(date_land)
678 incomings_data.set(coord_origin,list)
679 }
680 }
681 }
682 })
683 if(document.getElementById("incomings_table")!=null){
684 showButtons();
685 }
686
687 if( document.getElementsByClassName("g-recaptcha").length>0){//recaptcha
688 console.log("recapthca")
689 UI.ErrorMessage("recapthca, upload again")
690
691 return null;
692 }
693 document.body.innerHTML=httpGet(current_href_incomings);
694 return incomings_data;
695}
696///////////////////////////////////////////////////////upload all incomings//////////////////////////////////////////////////////////////////////////
697
698function uploadIncomings(){
699
700 $.get(file_incomigs, function (data) {
701 let map_incomings_dropbox=new Map(JSON.parse(data))
702 let keys_dropbox=Array.from(map_incomings_dropbox.keys());
703
704 let server_date=document.getElementById("serverDate").innerText.split("/")
705 let server_time=document.getElementById("serverTime").innerText
706 let current_date=new Date(server_date[1]+"/"+server_date[0]+"/"+server_date[2]+" "+server_time);
707 /////////////////////////////////eliminate old incomings from dropbox////////////////////////////////////
708 keys_dropbox.forEach(el=>{
709 let list=map_incomings_dropbox.get(el);
710 let update=false;
711 for(let i=0;i<list.length;i++){
712 let date_incomings=new Date(list[i])
713 console.log(date_incomings<current_date)
714 if(date_incomings<current_date){
715 list.splice(i,1);
716 i--;
717 update=true;
718 }
719 if(list[i]==""){
720 list.splice(i,1);
721 update=true;
722 }
723
724 }
725 if(update==true || list.length==0){
726 if(list.length==0)
727 map_incomings_dropbox.delete(el);
728 else{
729 map_incomings_dropbox.set(el,list);
730 }
731 }
732 })
733
734 var incomings_data=getIncomings();
735 let keys_incomings=Array.from(incomings_data.keys());
736 keys_incomings.forEach(el=>{
737 let list=incomings_data.get(el)
738 if(map_incomings_dropbox.has(el)){//update
739 let list_dropbox=map_incomings_dropbox.get(el)
740 list_dropbox=list_dropbox.concat(list);
741 var list_concat =[...new Set([...list ,...list_dropbox])];
742 map_incomings_dropbox.set(el,list_concat);
743 }
744 else{//add
745 map_incomings_dropbox.set(el,list);
746 }
747 })
748 console.log(map_incomings_dropbox)
749 var data=JSON.stringify(Array.from(map_incomings_dropbox.entries()))
750 console.log("scris in test2")
751 // document.body.innerHTML=httpGet(current_href_incomings);
752 addWindow();
753 showButtons();
754 document.getElementById("progress_incomings").innerText=incomings_data.size+" villages";
755 document.getElementById("progress_all").innerText="done";
756 UI.SuccessMessage("upload incomings done","slow")
757 uploadFile(data,filename_incomings,dropboxToken)
758 }).fail(function(){
759 // alert("error upload")
760 UI.ErrorMessage("error upload incomings")
761 })
762}
763
764
765//////////////////////////////////////////////////////upload all data to dropbox/////////////////////////////////////////////////////////////////
766
767function uploadFile(data,filename,dropboxToken)
768{
769 var file = new Blob([data], {type: "plain/text"});
770 file.name=filename;
771 var xhr = new XMLHttpRequest();
772 xhr.upload.onprogress = function(evt) {
773 var percentComplete = parseInt(100.0 * evt.loaded / evt.total);
774 console.log(percentComplete)
775 };
776
777 xhr.onload = function() {
778 if (xhr.status === 200) {
779 var fileInfo = JSON.parse(xhr.response);
780 // Upload succeeded. Do something here with the file info.
781 }
782 else {
783 var errorMessage = xhr.response || 'Unable to upload file';
784 // Upload failed. Do something here with the error.
785 }
786 };
787
788 xhr.open('POST', 'https://content.dropboxapi.com/2/files/upload');
789 xhr.setRequestHeader('Authorization', 'Bearer ' + dropboxToken);
790 xhr.setRequestHeader('Content-Type', 'application/octet-stream');
791 xhr.setRequestHeader('Dropbox-API-Arg', JSON.stringify({
792 path: '/' + file.name,
793 mode: 'add',
794 autorename: true,
795 mode:'overwrite',
796 mute: false
797 }));
798
799 xhr.send(file);
800}
801
802
803//////////////////////////////////////////////////////buttons in incomings page/////////////////////////////////////////////////////////////////
804
805
806function showButtons(){
807 if(document.getElementById("incomings_table")!=null){
808 var incomingshtml=`
809
810 <table id="table_incomings" class="" border="1" style="width: 50%;">
811 <tbody>
812 <tr>
813 <td style="text-align:center; width:auto;">
814 <center style="margin:10px"><u><input class="btn" type="button" onclick="addWindow()"value="open upload"></center>
815 </td>
816 </tr>
817 <tr>
818 <td style="text-align:center; width:auto;">
819 <center style="margin:10px"><u><input class="btn" type="button" onclick="moreInfo()" value="more info"></center>
820 </td>
821 </tr>
822 <tr>
823 <td style="text-align:center; width:auto;">
824 <center style="margin:10px"><u><input class="btn" type="button" onclick="tagIncomings()" value="tag"></center>
825 </td>
826 </tr>
827 </tbody>
828 </table>
829 </div>`
830 $(".vis").eq(3).append(incomingshtml)
831
832
833 var link = document.createElement('link');
834 link.id = "style_popup";
835 link.rel = 'stylesheet';
836 link.type = 'text/css';
837 link.href = 'https://dl.dropboxusercontent.com/s/ki0zhogjf0705c3/style_popup.css';
838 link.media = 'all';
839 document.getElementsByTagName('head')[0].appendChild(link);
840 }
841
842}
843showButtons();
844
845//////////////////////////////////////////////////////show info in incomings page/////////////////////////////////////////////////////////////////
846
847
848
849function moreInfo(){
850 $("#div_container").remove();
851 let map_reports_dropbox
852 let map_incomings_dropbox
853
854 console.log("inainte")
855 $.ajax({
856 url: file_reports,
857 type: 'GET',
858 before:function(){
859 UI.InfoMessage("load reports..","fast")
860 },
861 complete:function(){
862 UI.SuccessMessage("done reports","fast")
863 },
864 success: function(data_reports){
865 map_reports_dropbox=new Map(JSON.parse(data_reports))
866 console.log("get reports")
867
868 $.ajax({
869 url: file_incomigs,
870 type: 'GET',
871 before:function(){
872 UI.InfoMessage("load incomings..","fast")
873 },
874 complete:function(){
875 UI.SuccessMessage("done incomings","fast")
876 },
877 success: function(data_incomings){
878 console.log("get incomings")
879
880 map_incomings_dropbox=new Map(JSON.parse(data_incomings))
881 console.log(map_incomings_dropbox)
882 if(document.getElementsByClassName("info").length>0)
883 $(".info").remove()
884 else{
885 let start=new Date();
886
887 let table=document.getElementById("incomings_table").lastElementChild.children;
888 let list=[];
889 let map_nr_atacuri=new Map();
890
891 //adaugare o noua coloana
892 let coloana_nr=table[0].insertCell(3);
893 coloana_nr.innerHTML="<a href=# id='id_nr'> nr</a>";
894 coloana_nr.className="info"
895
896 let coloana_tribe=table[0].insertCell(4);
897 coloana_tribe.innerHTML="<a href=# id='id_nr_tr'> nr_tribe</a>";
898 coloana_tribe.className="info"
899
900 let coloana_type=table[0].insertCell(5);
901 coloana_type.innerHTML="<a href=# id='id_type'> type</a>";
902 coloana_type.className="info"
903
904 let coloana_pop=table[0].insertCell(6);
905 coloana_pop.innerHTML="<a href=# id='id_pop'>pop</a>";
906 coloana_pop.className="info"
907
908 let coloana_time=table[0].insertCell(7);
909 coloana_time.innerHTML="<a href=# id='id_time'>time</a>";
910 coloana_time.className="info"
911
912 let coloana_report=table[0].insertCell(8);
913 coloana_report.innerHTML="<a href=# id='id_report'>report</a>";
914 coloana_report.className="info"
915
916
917 for(let i=1;i<table.length-1;i++){
918 coloana_nr=table[i].insertCell(3);
919 coloana_nr.innerHTML="1";
920 coloana_nr.className="info"
921 coloana_nr.id="col_nr"+(i-1);
922
923 coloana_tribe=table[i].insertCell(4);
924 coloana_tribe.innerHTML="?";
925 coloana_tribe.className="info"
926
927 coloana_type=table[i].insertCell(5);
928 coloana_type.innerHTML="?";
929 coloana_type.className="info"
930
931 coloana_pop=table[i].insertCell(6);
932 coloana_pop.innerHTML="?";
933 coloana_pop.className="info"
934
935 coloana_time=table[i].insertCell(7);
936 coloana_time.innerHTML="?";
937 coloana_time.className="info"
938
939 coloana_report=table[i].insertCell(8);
940 coloana_report.innerHTML="?";
941 coloana_report.className="info"
942 list.push(table[i])
943 }
944
945
946
947
948 for(let i=0;i<list.length;i++){
949 let coord=list[i].children[2].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
950 map_nr_atacuri.set(coord,0);
951 }
952 // mapa in care avem nr de atacuri de la fiecare coord
953 for(let i=0;i<list.length;i++){
954 let coord=list[i].children[2].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
955 if(map_nr_atacuri.has(coord))
956 map_nr_atacuri.set(coord,parseInt(map_nr_atacuri.get(coord)) +1);
957 }
958
959 //adaugare nr de atacuri
960 var list_nr_attacks=[]
961 for(let i=0;i<list.length;i++){
962 let coord=list[i].children[2].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
963 let nr_atacuri=map_nr_atacuri.get(coord);
964 list_nr_attacks.push(nr_atacuri);
965 }
966 for(let i=0;i<list_nr_attacks.length;i++){
967 list[i].children[3].innerHTML=" <h4>"+list_nr_attacks[i]+"</h4>";
968
969 }
970 // var start=new Date();
971 ////////////////////////////////////////add info/////////////////////////////////
972 for(let i=0;i<list.length;i++)
973 {
974 if(list[i].children[2].innerText == "--")
975 continue;
976 let coord=list[i].children[2].innerText.match(/[0-9]{3}\|[0-9]{3}/)[0];
977 let player_id=list[i].children[9].children[0].href.split("player&id=")[1]
978 if(map_reports_dropbox.has(coord))
979 {
980 let idPlayer_dropbox
981 let type_dropbox
982 let nr_troupes_dropbox
983 var obj=map_reports_dropbox.get(coord);
984 if(coord == obj.coordAttacker){
985 idPlayer_dropbox=obj.attackingPlayerId;
986 type_dropbox=obj.typeAttacker;
987 nr_troupes_dropbox=obj.nrTroupesAttacker
988 }
989 else if(coord == obj.coordDefender){
990 idPlayer_dropbox=obj.defendingPlayerId;
991 type_dropbox=obj.typeDefender;
992 nr_troupes_dropbox=obj.nrTroupesDefender
993 }
994 else{
995 idPlayer_dropbox=obj.supporterPlayerId
996 type_dropbox=obj.typeSupporter;
997 nr_troupes_dropbox=obj.nrTroupesSupporter
998 }
999
1000 if(idPlayer_dropbox == player_id)
1001 {
1002 let date_start=new Date(obj.time_report);
1003 let date_stop=new Date();
1004 let days=("00"+parseInt((date_stop-date_start)/(24*3600*1000))).slice(-3);
1005 let hours=("0"+parseInt((date_stop-date_start)/(3600*1000)%24)).slice(-2);
1006 let minutes=("0"+parseInt(((date_stop-date_start)/(60*1000)%60))).slice(-2);
1007 let seconds=( "0"+parseInt((((date_stop-date_start)/1000)%60))).slice(-2);
1008
1009 list[i].children[5].innerHTML=" <h4>"+type_dropbox+"</h4>";
1010 list[i].children[6].innerHTML=" <h4>"+nr_troupes_dropbox+"</h4>";
1011 list[i].children[7].innerHTML=" <h4>"+days+":"+hours+":"+minutes+":"+seconds+"</h4>";
1012
1013 list[i].children[8].innerHTML=`
1014 <div class="popup" onclick='var popup = document.getElementById("table`+i+`");popup.classList.toggle("show")'><h4>show</h4>
1015 <table class="popuptext" id="table`+i+'"'+
1016 lzw_decode(obj.report)+
1017 '</table></div>';
1018
1019 }
1020
1021 }
1022
1023 if(map_incomings_dropbox.has(coord)){
1024 let list_incomings=map_incomings_dropbox.get(coord)
1025 list[i].children[4].innerHTML=" <center><h4 style='color:red'>"+list_incomings.length+"</h4></center>";
1026
1027 }
1028
1029 }
1030 var stop=new Date();
1031 console.log(stop-start)
1032 sortIncomings();
1033
1034 }
1035 }
1036 })
1037
1038 }
1039 });
1040}
1041
1042//////////////////////////////////////////////////////sort incomings by.. /////////////////////////////////////////////////////////////////
1043
1044function sortIncomings()
1045{
1046 var table=document.getElementById("incomings_table").lastElementChild.children;
1047 var new_table=document.getElementById("incomings_table").lastElementChild;
1048 var last_row=table[table.length-1];
1049 var list=[];
1050 for(let i=1;i<table.length-1;i++)
1051 list.push(table[i]);
1052
1053
1054 //sort by nr
1055 document.getElementById("id_nr").addEventListener("click",function()
1056 {
1057 $(".tr_delimitator").remove();
1058 list.sort( (a,b)=>{
1059 return (parseInt(a.children[3].innerText)<parseInt(b.children[3].innerText))?1:(parseInt(a.children[3].innerText)>parseInt(b.children[3].innerText))?-1:
1060 (a.children[2].innerText<b.children[2].innerText) ? 1: (a.children[2].innerText>b.children[2].innerText)?-1:0;
1061 });
1062
1063
1064 //add new table in page
1065 for(let i=0;i<list.length;i++)
1066 {
1067 new_table.appendChild(list[i]);
1068 }
1069 new_table.appendChild(last_row);
1070
1071 var pozitie=2;
1072 for(let i=0;i<list.length-1;i++)
1073 {
1074 let nr_atacuri=parseInt(list[i].children[3].innerText);
1075 if(nr_atacuri>1 && list[i].children[2].innerText !=list[i+1].children[2].innerText)
1076 {
1077 var tableRef = document.getElementById("incomings_table").lastElementChild;
1078 var newRow = tableRef.insertRow(pozitie);
1079 newRow.className="tr_delimitator"
1080 for(let i=0; i<9;i++){
1081 let cell = newRow.insertCell();
1082 var delimitator = document.createTextNode('--');
1083 cell.appendChild(delimitator);
1084 }
1085 pozitie++;
1086 }
1087 pozitie++;
1088 }
1089 })
1090
1091 //sort by nr tribe
1092 document.getElementById("id_nr_tr").addEventListener("click",function()
1093 {
1094 $(".tr_delimitator").remove();
1095 list.sort( (a,b)=>{
1096 return (parseInt(a.children[4].innerText)<parseInt(b.children[4].innerText))?1:(parseInt(a.children[4].innerText)>parseInt(b.children[4].innerText))?-1:
1097 (a.children[2].innerText<b.children[2].innerText) ? 1: (a.children[2].innerText>b.children[2].innerText)?-1:0;
1098 });
1099
1100
1101 //add new table in page
1102 for(let i=0;i<list.length;i++)
1103 {
1104 new_table.appendChild(list[i]);
1105 }
1106 new_table.appendChild(last_row);
1107
1108 var pozitie=2;
1109 for(let i=0;i<list.length-1;i++)
1110 {
1111 let nr_atacuri=parseInt(list[i].children[4].innerText);
1112 if(nr_atacuri>1 && list[i].children[4].innerText !=list[i+1].children[4].innerText)
1113 {
1114 var tableRef = document.getElementById("incomings_table").lastElementChild;
1115 var newRow = tableRef.insertRow(pozitie);
1116 newRow.className="tr_delimitator"
1117 for(let i=0; i<9;i++){
1118 let cell = newRow.insertCell();
1119 var delimitator = document.createTextNode('--');
1120 cell.appendChild(delimitator);
1121 }
1122 pozitie++;
1123 }
1124 pozitie++;
1125 }
1126 })
1127
1128
1129 //sort by type
1130 document.getElementById("id_type").addEventListener("click",function()
1131 {
1132 $(".tr_delimitator").remove();
1133 list.sort( (a,b)=>{
1134 return (a.children[5].innerText<b.children[5].innerText)?1:(a.children[5].innerText>b.children[5].innerText)?-1:
1135 (a.children[2].innerText<b.children[2].innerText) ? 1: (a.children[2].innerText>b.children[2].innerText)?-1:0;
1136 });
1137
1138 //add new table in page
1139 for(let i=0;i<list.length;i++)
1140 {
1141 new_table.appendChild(list[i]);
1142 }
1143 new_table.appendChild(last_row);
1144
1145 var pozitie=2;
1146 for(let i=0;i<list.length-1;i++)
1147 {
1148 let type=list[i].children[5].innerText;
1149 if(type!="?" && list[i].children[5].innerText !=list[i+1].children[5].innerText)
1150 {
1151 var tableRef = document.getElementById("incomings_table").lastElementChild;
1152 var newRow = tableRef.insertRow(pozitie);
1153 newRow.className="tr_delimitator"
1154 for(let i=0; i<8;i++){
1155 let cell = newRow.insertCell();
1156 var delimitator = document.createTextNode('--');
1157 cell.appendChild(delimitator);
1158 }
1159 pozitie++;
1160 }
1161 pozitie++;
1162 }
1163 })
1164
1165 //sort by nr pop
1166 document.getElementById("id_pop").addEventListener("click",function()
1167 {
1168 $(".tr_delimitator").remove();
1169 list.sort( (a,b)=>{
1170 if(a.children[6].innerText=="?")
1171 var a_comp=2000000;
1172 else
1173 var a_comp=parseInt(a.children[6].innerText);
1174
1175 if(b.children[6].innerText=="?")
1176 var b_comp=2000000;
1177 else
1178 var b_comp=parseInt(b.children[6].innerText);
1179
1180 return (a_comp>b_comp)?1:(a_comp<b_comp)?-1:
1181 (a.children[2].innerText<b.children[2].innerText) ? 1: (a.children[2].innerText>b.children[2].innerText)?-1:0;
1182 });
1183
1184 //add new table in page
1185 for(let i=0;i<list.length;i++)
1186 {
1187 new_table.appendChild(list[i]);
1188 }
1189 new_table.appendChild(last_row);
1190 })
1191
1192 //sort by time
1193 document.getElementById("id_time").addEventListener("click",function()
1194 {
1195 $(".tr_delimitator").remove();
1196
1197 list.sort( (a,b)=>{
1198 if(a.children[7].innerText=="?")
1199 var a_comp=10000000000;
1200 else{
1201 var v=a.children[7].innerText.split(":");
1202 var a_comp=parseInt(v[0])*24*3600+parseInt(v[1])*3600 +parseInt(v[2])*60 +parseInt(v[3]);
1203 }
1204
1205 if(b.children[7].innerText=="?")
1206 var b_comp=10000000000;
1207 else{
1208 var v=b.children[7].innerText.split(":");
1209 var b_comp=parseInt(v[0])*24*3600+parseInt(v[1])*3600 +parseInt(v[2])*60 +parseInt(v[3]);
1210 }
1211
1212 return (a_comp>b_comp)?1:(a_comp<b_comp)?-1:
1213 (a.children[2].innerText<b.children[2].innerText) ? 1: (a.children[2].innerText>b.children[2].innerText)?-1:0;
1214 });
1215
1216 //add new table in page
1217 for(let i=0;i<list.length;i++)
1218 {
1219 new_table.appendChild(list[i]);
1220 }
1221 new_table.appendChild(last_row);
1222 })
1223}
1224
1225//////////////////////////////////////////////////////tag incomings /////////////////////////////////////////////////////////////////
1226
1227function tagIncomings(){
1228
1229 if(document.getElementsByClassName("info").length==0){
1230 UI.ErrorMessage("press first the button 'more info'!")
1231 }
1232 else{
1233 var nr=1;
1234 var table=document.getElementById("incomings_table").children[1].children
1235 function start() {
1236 var milisecunde = 50;
1237 var timp = milisecunde + Math.random() * 50;;
1238 var length = document.getElementById("incomings_table").children[1].children.length-1
1239 console.log(timp);
1240 if (nr < length) {
1241 let isLabeled=!table[nr].getElementsByClassName("quickedit-label")[0].innerText.toLowerCase().includes("Attack")
1242
1243 if(isLabeled==true){
1244 var openLabel= table[nr].children[0].getElementsByTagName("a")[1]
1245 // console.log(openLabel)
1246 openLabel.click()
1247 var labelInfo=table[nr].getElementsByClassName("quickedit-edit")[0].children[0].value.split(/\s+/)[0];
1248 let nrAttacks=table[nr].children[4].innerText;
1249 let pop,time,type
1250 type=table[nr].children[5].innerText;
1251 if(type!="?"){
1252 console.log("aici")
1253 pop= Math.round(((parseInt(table[nr].children[6].innerText)/1000)*10)/10)+"k"
1254 time=parseInt(table[nr].children[7].innerText.split(":")[0]);
1255 labelInfo=labelInfo+" nr="+nrAttacks+", type= "+type+", pop= "+pop+", time= "+time+" days"
1256 }
1257 else{
1258 labelInfo=labelInfo+" nr= "+nrAttacks
1259 }
1260 table[nr].getElementsByClassName("quickedit-edit")[0].children[0].value=labelInfo
1261 table[nr].getElementsByClassName("quickedit-edit")[0].children[1].click()//confirm rename
1262 UI.InfoMessage(nr+"/"+length)
1263 }
1264 nr++;
1265 window.setTimeout(function() {
1266 start()
1267 }, timp);
1268 }
1269
1270 }
1271 start();
1272
1273 UI.SuccessMessage("done!")
1274
1275 }
1276
1277}
1278
1279//////////////////////////////////////////////////////search reports /////////////////////////////////////////////////////////////////
1280
1281var map_search
1282function loadReports(){
1283 $.get(file_reports, function (data) {
1284 map_search=new Map(JSON.parse(data));
1285 console.log(map_search)
1286 loadReportsOk=true;
1287 $("#input_search").on("input",function(){
1288 let current_value=$("#input_search").val()
1289 if(current_value.match(/[0-9]{3}\|[0-9]{3}/)!=null){
1290 coords=current_value.match(/[0-9]{3}\|[0-9]{3}/g)
1291 console.log(coords)
1292 $("#report_view").empty()
1293 let contentHtml=""
1294 let nr_found=0;
1295 for(let i=0;i<coords.length;i++){
1296 if(map_search.has(coords[i])){
1297 let obj=map_search.get(coords[i]);
1298 console.log(coords[i])
1299 let report=lzw_decode(obj.report);
1300 contentHtml+= `<div>
1301 <center style="margin:10px"><input class="btn evt-confirm-btn btn-confirm-yes" type="button"onclick="$('#table`+i+`').toggle('slow')" value="`+coords[i]+`"></center>
1302
1303 <table class="table_hide" id="table`+i+'"'+
1304 report+
1305 `</table></div>`;
1306 nr_found++;
1307 }
1308 }
1309 $("#report_view").append(contentHtml)
1310 $(".table_hide").hide();
1311 $("#progress_search").text("found: "+nr_found)
1312 }else{
1313 $("#report_view").empty()
1314 }
1315
1316 })
1317 $("#input_search").mouseout(function(){
1318 let current_value=$("#input_search").val()
1319 if(current_value.match(/[0-9]{3}\|[0-9]{3}/)!=null){
1320 let coords=current_value.match(/[0-9]{3}\|[0-9]{3}/g)
1321 $("#input_search").val(Array.from(coords).join(","))
1322 }
1323 })
1324
1325
1326
1327 }).done(function(){
1328 UI.SuccessMessage("load reports","fast")
1329
1330 })
1331}
1332
1333
1334
1335// btn evt-confirm-btn btn-confirm-yes