MediaWiki:CalcScience.js

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
var allChbx = [],
  out = document.querySelector('.output'),
  arenaDiv = document.querySelector('.output1'),
  scienceDiv = document.querySelector('.output2'),
  scienceSumDiv = document.querySelector('.scienceSum'),
  arenaSumDiv = document.querySelector('.arenaSum'),
  scienceWeekDiv = document.querySelector('.scienceWeek'), 
  arenaWeekDiv = document.querySelector('.arenaWeek'), 
  bossWeekDiv = document.querySelector('.bossWeek');
[].forEach.call(document.querySelectorAll('.science'), 

function(group){
  var main = group.querySelector('.main'),
    chbx = group.querySelectorAll('div[class="child"]:not(.main)');
  allChbx = allChbx.concat([].slice.call(chbx));
  main.onclick = function() {
    if(main.classList.contains("active")) {
      main.classList.remove("active");
      [].forEach.call(chbx, function(el){
        el.classList.remove("active");
      });
      reCalc();
    }
    else {
      main.classList.add("active");
      [].forEach.call(chbx, function(el){
        el.classList.add("active");
      });
      reCalc();
    }
  };
  [].forEach.call(chbx, function(el){
    el.onclick = function() {
      if(el.classList.contains("active")) {
        el.classList.remove("active");
      }
      else
        el.classList.add("active");
      var cnt = [].filter.call(chbx, function(el){
        return el.classList.contains("active");
      }).length;      
      if(cnt > 0){        
        main.classList.add("active");
      }
      else {
        main.classList.remove("active");
      }
      reCalc();
    };
  });
});
function formulas(data, type, sum) {
	var result = 0;
	if(type == "science" && data != 8438 && data != 8437.5) {
  	result = (data/100)*8437.5 + 8437.5;
  } else if(type == "arena" && data != 1000) {
  	result = (data/100)*1000+1000;
  } else if(type == "event" && data != 8438) {  	
  	result = (data/100)*sum+sum;
  } else if(type == "boss" && data != 15000) {
  	result = (data/100)*15000+15000;
  } else
  	result = 0;
  return result;
}
 
 
function reCalc(){
  var total = 0,
  	arena = 0,
  	science = 0,
    constScienceSum = 0,
  	yourDivScienceSUM = 0,
    scienceSum = 0,
    arenaSum = 0,
    scienceWeek = 0,
    bossWeek = 0,
    arenaWeek = 0;
  allChbx.forEach(function(c){
    total += c.classList.contains("active") ? +c.dataset.event : 0;
    arena += c.classList.contains("active") ? +c.dataset.arena : 0;
    science += c.classList.contains("active") ? +c.dataset.science : 0;
  });
  scienceSum = formulas(science, "science");
  arenaSum = formulas(arena, "arena");  
  scienceWeek = formulas(total, "event", scienceSum);
  arenaWeek = formulas(total, "event", arenaSum); 
  console.log(arenaWeek + " arenaWeek");
  bossWeek = formulas(total, "boss");
  out.innerHTML = Math.round(total);
  arenaDiv.innerHTML = Math.round(arena);
  scienceDiv.innerHTML = Math.round(science);
  scienceSumDiv.innerHTML = Math.round(scienceSum);
  arenaSumDiv.innerHTML = Math.round(arenaSum);
  scienceWeekDiv.innerHTML = Math.round(scienceWeek);
  bossWeekDiv.innerHTML = Math.round(bossWeek);
  arenaWeekDiv.innerHTML = Math.round(arenaWeek);
}