Difference between revisions of "MediaWiki:Common.js"
Kbjarkefur (talk | contribs) |
Kbjarkefur (talk | contribs) |
||
Line 46: | Line 46: | ||
// | |||
function getChecklist(chklistname) { | // function getChecklist(chklistname) { | ||
// | |||
var requri = 'https://api.github.com/repos/worldbank/DIMEwiki/contents/Topics/Checklists/checklists/'+ chklistname + '.js?ref=checklistAjax'; | // var requri = 'https://api.github.com/repos/worldbank/DIMEwiki/contents/Topics/Checklists/checklists/'+ chklistname + '.js?ref=checklistAjax'; | ||
// | |||
console.log(chklistname); | // console.log(chklistname); | ||
// | |||
requestJSON(requri, function(json) { | // requestJSON(requri, function(json) { | ||
// | |||
if(json.message == "Not Found" ) { | // if(json.message == "Not Found" ) { | ||
document.getElementById('checklist1').innerHTML = "<h2>Checklist not found, check the name of the checklist</h2>" | // document.getElementById('checklist1').innerHTML = "<h2>Checklist not found, check the name of the checklist</h2>" | ||
// | |||
} else { | // } else { | ||
// | |||
//File found start by decoding content | // //File found start by decoding content | ||
// | |||
//Source https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding | // //Source https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding | ||
function b64DecodeUnicode(str) { | // function b64DecodeUnicode(str) { | ||
// Going backwards: from bytestream, to percent-encoding, to original string. | // // Going backwards: from bytestream, to percent-encoding, to original string. | ||
return decodeURIComponent(atob(str).split('').map(function(c) { | // return decodeURIComponent(atob(str).split('').map(function(c) { | ||
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); | // return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); | ||
}).join('')); | // }).join('')); | ||
} | // } | ||
// | |||
var checklistSTR = b64DecodeUnicode(json.content); | // var checklistSTR = b64DecodeUnicode(json.content); | ||
var checklist = JSON.parse("[" + checklistSTR + "]"); | // var checklist = JSON.parse("[" + checklistSTR + "]"); | ||
// | |||
document.getElementById('checklist1').innerHTML = checklistTable(checklist); | // document.getElementById('checklist1').innerHTML = checklistTable(checklist); | ||
// | |||
} | // } | ||
}); // end requestJSON Ajax call | // }); // end requestJSON Ajax call | ||
} | // } | ||
// | |||
function requestJSON(url, callback) { | // function requestJSON(url, callback) { | ||
$.ajax({ | // $.ajax({ | ||
url: url, | // url: url, | ||
complete: function(xhr) { | // complete: function(xhr) { | ||
callback.call(null, xhr.responseJSON); | // callback.call(null, xhr.responseJSON); | ||
} | // } | ||
}); | // }); | ||
} | // } | ||
Line 95: | Line 95: | ||
/* Functions needed for checklists */ | /* Functions needed for checklists */ | ||
function checklistTable(chkarray) { | // function checklistTable(chkarray) { | ||
// | |||
var tableString = '<table class="chk_table">'; | // var tableString = '<table class="chk_table">'; | ||
tableString += '<tr><th rowspan="5" colspan="3" style="text-align: center;"><img alt="DIME Image" src="/images/a/a8/DIMEi2i.png" class="chk_logo_img"></th>'; | // tableString += '<tr><th rowspan="5" colspan="3" style="text-align: center;"><img alt="DIME Image" src="/images/a/a8/DIMEi2i.png" class="chk_logo_img"></th>'; | ||
tableString += '<tr><th class="chk_header">Project name: _______________________________________</th>'; | // tableString += '<tr><th class="chk_header">Project name: _______________________________________</th>'; | ||
tableString += '<tr><th class="chk_header">Country: ___________________________________________</th>'; | // tableString += '<tr><th class="chk_header">Country: ___________________________________________</th>'; | ||
tableString += '<tr><th class="chk_header">District: ____________________________________________</th>'; | // tableString += '<tr><th class="chk_header">District: ____________________________________________</th>'; | ||
tableString += '<tr><th class="chk_header">Year, Month and/or Day: _____________________________</th>'; | // tableString += '<tr><th class="chk_header">Year, Month and/or Day: _____________________________</th>'; | ||
// | |||
var levelTracker = [0] | // var levelTracker = [0] | ||
// | |||
for ( row = 0 ; row < chkarray.length ; ++row ) { | // for ( row = 0 ; row < chkarray.length ; ++row ) { | ||
var thisLevel =chkarray[row][0]; | // var thisLevel =chkarray[row][0]; | ||
var thisIndex = thisLevel - 1; | // var thisIndex = thisLevel - 1; | ||
var thisItem =chkarray[row][1]; | // var thisItem =chkarray[row][1]; | ||
// | |||
// | |||
// | |||
if ( levelTracker.length > thisLevel) { | // if ( levelTracker.length > thisLevel) { | ||
levelTracker.splice(thisLevel, levelTracker.length - (thisLevel)); | // levelTracker.splice(thisLevel, levelTracker.length - (thisLevel)); | ||
} else if ( levelTracker.length < thisLevel) { | // } else if ( levelTracker.length < thisLevel) { | ||
levelTracker.push(0) | // levelTracker.push(0) | ||
} | // } | ||
// | |||
++levelTracker[thisIndex] | // ++levelTracker[thisIndex] | ||
// | |||
// | |||
var number = levelTracker.join(".") | // var number = levelTracker.join(".") | ||
// | |||
tableString += checklistRow(thisLevel, thisItem, number) | // tableString += checklistRow(thisLevel, thisItem, number) | ||
} | // } | ||
tableString += '</table>' | // tableString += '</table>' | ||
// | |||
return tableString | // return tableString | ||
// | |||
} | // } | ||
// | |||
// | |||
function checklistRow(thisLevel, thisItem, number) | // function checklistRow(thisLevel, thisItem, number) | ||
{ | // { | ||
// | |||
var tableString = ''; | // var tableString = ''; | ||
// | |||
if (thisLevel == 1) { | // if (thisLevel == 1) { | ||
tableString += '<tr class="chk_row1"><td colspan="4">'+ number +'. '+ thisItem +'</td></tr>'; | // tableString += '<tr class="chk_row1"><td colspan="4">'+ number +'. '+ thisItem +'</td></tr>'; | ||
tableString += '<tr><td></td><td>Initials</td><td>#No</td><td>Checklist Item</td></tr>'; | // tableString += '<tr><td></td><td>Initials</td><td>#No</td><td>Checklist Item</td></tr>'; | ||
return tableString | // return tableString | ||
// | |||
} else { | // } else { | ||
// | |||
switch (thisLevel) { | // switch (thisLevel) { | ||
case 2: | // case 2: | ||
tr_class = 'class="chk_row2"'; | // tr_class = 'class="chk_row2"'; | ||
break; | // break; | ||
case 3: | // case 3: | ||
tr_class = 'class="chk_row3"'; | // tr_class = 'class="chk_row3"'; | ||
break; | // break; | ||
case 4: | // case 4: | ||
tr_class = 'class="chk_row4"'; | // tr_class = 'class="chk_row4"'; | ||
break; | // break; | ||
default: | // default: | ||
/*implicitly 5 or above*/ | // /*implicitly 5 or above*/ | ||
tr_class = 'class="chk_row5"'; | // tr_class = 'class="chk_row5"'; | ||
} | // } | ||
// | |||
tableString += '<tr '+tr_class+'><td nowrap>[ __ ]</td><td></td><td nowrap class="chk_number">'+ number +'</td><td class="chk_item">'+ thisItem +'</td></tr>'; | // tableString += '<tr '+tr_class+'><td nowrap>[ __ ]</td><td></td><td nowrap class="chk_number">'+ number +'</td><td class="chk_item">'+ thisItem +'</td></tr>'; | ||
// | |||
return tableString | // return tableString | ||
} | // } | ||
} | // } | ||
}()); | }()); |
Revision as of 08:32, 2 December 2017
/* Functions creating divs ready to be loaded at the wiki */
$(function () {
console.log("Test Log");
//This is a list of all checklist. Add to this array when you add a new checklist. For any other edits to the checklists, see the instructions here: https://github.com/worldbank/DIMEwiki/Topics/Checklists
checklists = [
'chk-surveyprep', 'chk-questcont', 'chk-questdata',
'chk-microdata', 'chk-datacleaning', 'checklist1'
];
//Loop over all the checklists
for (let chkName of checklists) {
console.log("Checklist " + chkName);
//Test if a div with the name of the checklist exist on the article just loaded
//if (document.getElementById(chkName) != null ) {
//If a div with that name exist, generate the checklist and put it in that div
//getChecklist(chkName);
//}
}
// if (document.getElementById("dimewiki-chk-surveyprep") != null ) {
// //console.log(chk_surveyprep);
// document.getElementById('dimewiki-chk-surveyprep').innerHTML = checklistTable(chk_surveyprep);
// }
// if (document.getElementById("dimewiki-chk-questcont") != null ) {
// //console.log(questionnaire_chk_content);
// document.getElementById('dimewiki-chk-questcont').innerHTML = checklistTable(questionnaire_chk_content);
// }
// if (document.getElementById("dimewiki-chk-questdata") != null ) {
// //console.log(questionnaire_chk_data);
// document.getElementById('dimewiki-chk-questdata').innerHTML = checklistTable(questionnaire_chk_data);
// }
// if (document.getElementById("dimewiki-chk-microdata") != null ) {
// //console.log(chk_microdata);
// document.getElementById('dimewiki-chk-microdata').innerHTML = checklistTable(chk_microdata);
// }
// if (document.getElementById("dimewiki-chk-datacleaning") != null ) {
// //console.log(chk_datacleaning);
// document.getElementById('dimewiki-chk-datacleaning').innerHTML = checklistTable(chk_datacleaning);
// }
//
// function getChecklist(chklistname) {
//
// var requri = 'https://api.github.com/repos/worldbank/DIMEwiki/contents/Topics/Checklists/checklists/'+ chklistname + '.js?ref=checklistAjax';
//
// console.log(chklistname);
//
// requestJSON(requri, function(json) {
//
// if(json.message == "Not Found" ) {
// document.getElementById('checklist1').innerHTML = "<h2>Checklist not found, check the name of the checklist</h2>"
//
// } else {
//
// //File found start by decoding content
//
// //Source https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
// function b64DecodeUnicode(str) {
// // Going backwards: from bytestream, to percent-encoding, to original string.
// return decodeURIComponent(atob(str).split('').map(function(c) {
// return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
// }).join(''));
// }
//
// var checklistSTR = b64DecodeUnicode(json.content);
// var checklist = JSON.parse("[" + checklistSTR + "]");
//
// document.getElementById('checklist1').innerHTML = checklistTable(checklist);
//
// }
// }); // end requestJSON Ajax call
// }
//
// function requestJSON(url, callback) {
// $.ajax({
// url: url,
// complete: function(xhr) {
// callback.call(null, xhr.responseJSON);
// }
// });
// }
/* Functions needed for checklists */
// function checklistTable(chkarray) {
//
// var tableString = '<table class="chk_table">';
// tableString += '<tr><th rowspan="5" colspan="3" style="text-align: center;"><img alt="DIME Image" src="/images/a/a8/DIMEi2i.png" class="chk_logo_img"></th>';
// tableString += '<tr><th class="chk_header">Project name: _______________________________________</th>';
// tableString += '<tr><th class="chk_header">Country: ___________________________________________</th>';
// tableString += '<tr><th class="chk_header">District: ____________________________________________</th>';
// tableString += '<tr><th class="chk_header">Year, Month and/or Day: _____________________________</th>';
//
// var levelTracker = [0]
//
// for ( row = 0 ; row < chkarray.length ; ++row ) {
// var thisLevel =chkarray[row][0];
// var thisIndex = thisLevel - 1;
// var thisItem =chkarray[row][1];
//
//
//
// if ( levelTracker.length > thisLevel) {
// levelTracker.splice(thisLevel, levelTracker.length - (thisLevel));
// } else if ( levelTracker.length < thisLevel) {
// levelTracker.push(0)
// }
//
// ++levelTracker[thisIndex]
//
//
// var number = levelTracker.join(".")
//
// tableString += checklistRow(thisLevel, thisItem, number)
// }
// tableString += '</table>'
//
// return tableString
//
// }
//
//
// function checklistRow(thisLevel, thisItem, number)
// {
//
// var tableString = '';
//
// if (thisLevel == 1) {
// tableString += '<tr class="chk_row1"><td colspan="4">'+ number +'. '+ thisItem +'</td></tr>';
// tableString += '<tr><td></td><td>Initials</td><td>#No</td><td>Checklist Item</td></tr>';
// return tableString
//
// } else {
//
// switch (thisLevel) {
// case 2:
// tr_class = 'class="chk_row2"';
// break;
// case 3:
// tr_class = 'class="chk_row3"';
// break;
// case 4:
// tr_class = 'class="chk_row4"';
// break;
// default:
// /*implicitly 5 or above*/
// tr_class = 'class="chk_row5"';
// }
//
// tableString += '<tr '+tr_class+'><td nowrap>[ __ ]</td><td></td><td nowrap class="chk_number">'+ number +'</td><td class="chk_item">'+ thisItem +'</td></tr>';
//
// return tableString
// }
// }
}());