Difference between revisions of "MediaWiki:Common.js"

From MakeICT Wiki
Jump to navigationJump to search
Line 57: Line 57:
 
  **/
 
  **/
 
(function () {
 
(function () {
   var outputNode = document.getElementById("makeict-all-todos");
+
   var summaries = {
   if(outputNode){
+
  'todos': {
    var bullets = document.getElementById("meeting-list").getElementsByTagName("li");
+
        'outputNode': document.getElementById('makeict-all-todos'),
 +
        'inputNode': 'makeict-todo-summary',
 +
  },
 +
  'decisions': {
 +
        'outputNode': document.getElementById('makeict-all-decisions'),
 +
'inputNode': 'makeict-decision-summary',
 +
  },
 +
  };
 +
    
 +
  var meetingListBullets = document.getElementById("meeting-list").getElementsByTagName("li");
 
      
 
      
    var processList = function(listIndex){
+
  var processList = function(listIndex){
      if(listIndex >= bullets.length) return;
+
    if(listIndex >= meetingListBullets.length) return;
 
+
       var tmpFrame = document.createElement("iframe");
        
+
      tmpFrame.onload = function(){
//      try{
+
        processList(listIndex+1);
        var tmpFrame = document.createElement("iframe");
+
 
        tmpFrame.onload = function(){
+
        for(var key in summaries){
          processList(listIndex+1);
+
          var outputNode = summaries[key].outputNode;
 
+
          if(!outputNode) continue;
           var summaryNode = this.contentDocument.getElementById("makeict-todo-summary");
+
            
 +
  var summaryNode = this.contentDocument.getElementById(summaries[key].inputNode);
 
           var heading = document.createElement("h2");
 
           var heading = document.createElement("h2");
 
           var link = document.createElement("a");
 
           var link = document.createElement("a");
Line 82: Line 92:
 
             outputNode.innerHTML += "<div>Could not find @todo summary :(</div>";
 
             outputNode.innerHTML += "<div>Could not find @todo summary :(</div>";
 
           }
 
           }
         
+
          
          document.body.removeChild(this);
 
         };
 
        tmpFrame.style.display = "none";
 
        tmpFrame.src = bullets[listIndex].getElementsByTagName("a")[0].href;
 
        document.body.appendChild(tmpFrame);
 
//      }catch(exc){
 
//        console.log(exc);
 
//      }
 
    };
 
 
 
    processList(0);
 
  }
 
}());
 
/*
 
 
 
(function () {
 
  var outputNode = document.getElementById("makeict-all-decisions");
 
  if(outputNode){
 
    var bullets = document.getElementById("meeting-list").getElementsByTagName("li");
 
   
 
    var processList = function(listIndex){
 
      if(listIndex >= bullets.length) return;
 
 
 
     
 
      try{
 
        var tmpFrame = document.createElement("iframe");
 
        tmpFrame.onload = function(){
 
          processList(listIndex+1);
 
 
 
          var summaryNode = this.contentDocument.getElementById("makeict-decision-summary");
 
          var heading = document.createElement("h2");
 
          var link = document.createElement("a");
 
          link.href = this.src;
 
          link.innerHTML = this.contentDocument.getElementsByTagName("h1")[0].innerHTML;
 
          heading.appendChild(link);
 
          outputNode.appendChild(heading);
 
          if(summaryNode){
 
            outputNode.appendChild(summaryNode.cloneNode(true));
 
          }else{
 
            outputNode.innerHTML += "<div>Could not find @DECISION summary :(</div>";
 
          }
 
         
 
 
           document.body.removeChild(this);
 
           document.body.removeChild(this);
        };
+
    }
        tmpFrame.style.display = "none";
+
      };
        tmpFrame.src = bullets[listIndex].getElementsByTagName("a")[0].href;
+
      tmpFrame.style.display = "none";
        document.body.appendChild(tmpFrame);
+
      tmpFrame.src = meetingListBullets[listIndex].getElementsByTagName("a")[0].href;
      }catch(exc){
+
      document.body.appendChild(tmpFrame);
        console.log(exc);
+
  };
      }
+
 
    };
+
  processList(0);
 
 
    processList(0);
 
  }
 
 
}());
 
}());
*/
 

Revision as of 00:38, 21 November 2016

/* Any JavaScript here will be loaded for all users on every page load. */


/**
 * Copy @todos and @decisions into summaries at the bottom of meeting minutes
 **/
(function () {
  var cloneNodesToList = function(list, nodes) {
    if(nodes.length == 0){
      var listItem = document.createElement("li");
      listItem.innerHTML = "None";
      list.appendChild(listItem);
    }else{
      for(var i=0; i<nodes.length; i++){
        var listItem = document.createElement("li");
        listItem.appendChild(nodes[i].cloneNode(true));
        list.appendChild(listItem);
      }
    }
  };

  var getTaskProperty = function(task, property){
    return $(task).find(".makeict-todo-" + property)[0].innerText.toLowerCase();
  }

  var taskCompare = function(taskA, taskB){
    var props = ["who", "when"];
    for(i in props){
      var a = getTaskProperty(taskA, props[i]);
      var b = getTaskProperty(taskB, props[i]);
      if(a > b) return 1;
      if(b > a) return -1;
    }
    return 0;
  };

	var list = $("#makeict-decision-summary")[0];
	if(list){
      cloneNodesToList(list, $(".makeict-decision"));
	}

	list = $("#makeict-todo-summary")[0];
	if(list){
      var tasks = $(".makeict-todo");
      try{
        tasks.sort(taskCompare);
      }catch(exc){}
      
      cloneNodesToList(list, tasks);
	}
}());



/**
 * Pull @todos and @decisions from all the meeting minutes into aggregate summaries
 **/
(function () {
  var summaries = {
	  'todos': {
        'outputNode': document.getElementById('makeict-all-todos'),
        'inputNode': 'makeict-todo-summary',
	  },
	  'decisions': {
        'outputNode': document.getElementById('makeict-all-decisions'),
		'inputNode': 'makeict-decision-summary',
	  },
  };
  
  var meetingListBullets = document.getElementById("meeting-list").getElementsByTagName("li");
    
  var processList = function(listIndex){
    if(listIndex >= meetingListBullets.length) return;
      var tmpFrame = document.createElement("iframe");
      tmpFrame.onload = function(){
        processList(listIndex+1);
  
        for(var key in summaries){
          var outputNode = summaries[key].outputNode;
          if(!outputNode) continue;
          
		  var summaryNode = this.contentDocument.getElementById(summaries[key].inputNode);
          var heading = document.createElement("h2");
          var link = document.createElement("a");
          link.href = this.src;
          link.innerHTML = this.contentDocument.getElementsByTagName("h1")[0].innerHTML;
          heading.appendChild(link);
          outputNode.appendChild(heading);
          if(summaryNode){
            outputNode.appendChild(summaryNode.cloneNode(true));
          }else{
            outputNode.innerHTML += "<div>Could not find @todo summary :(</div>";
          }
        
          document.body.removeChild(this);
	    }
      };
      tmpFrame.style.display = "none";
      tmpFrame.src = meetingListBullets[listIndex].getElementsByTagName("a")[0].href;
      document.body.appendChild(tmpFrame);
  };
  
  processList(0);
}());