MediaWiki:Mobile.js: Difference between revisions

refactoring expandables (templates & javascript) (better fallback and nestability)
No edit summary
(refactoring expandables (templates & javascript) (better fallback and nestability))
Line 40: Line 40:
  }
  }
}
}
function showHide(show,hide) { // for expandables
 
  show.style.display = 'initial';
function showOnlyNext(ev) { // for expandable text:
  hide.style.display = 'none';
ev.target.style.display = "none";
  ev.target.nextElementSibling.style.display = "initial";
  ev.stopPropagation();
}
function showOnlyPrev(ev) {
ev.target.style.display = "none";
ev.target.previousElementSibling.style.display = "initial";
ev.stopPropagation();
}
}
function dpInfo(o) { // for calculator: display a datapoint's info
function dpInfo(o) { // for calculator: display a datapoint's info
  var id = o.innerHTML;
  var id = o.innerHTML;
Line 168: Line 176:
function parseFeatures() {
function parseFeatures() {
  var e;
  var e;
  // Expandable text
  // Expandable text and popups
  e = document.getElementsByClassName('xp');
  e = document.getElementsByClassName('forMore');
  for (var i=0; i<e.length; i++) {
  for (var i=0; i<e.length; i++) {
   var content = e[i].innerHTML;
   var next = e[i].nextElementSibling;
   e[i].innerHTML = "<span class='forMore' onclick='showHide(this.nextSibling, this)'>(...)</span>"
   if (next.className=="xpContent" || next.classList.contains("xpContent")) {
                + "<span class='xpContent' onclick='showHide(this.previousSibling, this)'>( "+content+" )</span>";
  e[i].onclick = showOnlyNext;
}
  next.onclick = showOnlyPrev;
// Popups
  } else
e = document.getElementsByClassName('pp');
  if (next.className=="ppContent" || next.classList.contains("ppContent")) {
for (var i=0; i<e.length; i++) {
  e[i].onclick = next.onclick = function(e){togglePopup(next);};
  var content = e[i].innerHTML;
  }
  e[i].innerHTML = "<span class='forMore' onclick='togglePopup(this.nextSibling)'>[''']</span>"
                + "<div class='ppContent' onclick='closePopup()'>"+content+"</div>";
}
e = document.getElementsByClassName('ppv2');
for (var i=0; i<e.length; i++) {
  var content = e[i].innerHTML.split('|');
  e[i].innerHTML = "<span class='forMore' onclick='togglePopup(this.nextSibling)'>"+content[0]+"</span>"
                + "<div class='ppContent' onclick='closePopup()'>"+content[1]+"</div>";
  }
  }
  // Local datapoints and calculations
  // Local datapoints and calculations