Team:UNITN-Trento/JS/Notebook

From 2013.igem.org

Revision as of 08:14, 19 August 2013 by Ggirelli (Talk | contribs)

/**

* Hides/Shows labposts based on active filter
* @return none
*/

function useFilters() { if ($("#tn-active-filters-F").val() == "" && $("#tn-active-filters-T").val() == "" && $("#tn-active-filters-D").val() == "") {

//Scroll through the posts $(".tn-post").each(function() { $(this).css("display", "block"); });

} else {

//Get active filters Ffilters = $("#tn-active-filters-F").val().split("-"); Tfilter = $("#tn-active-filters-T").val(); Dfilter = $("#tn-active-filters-D").val();

//Scroll through the posts $(".tn-post").each(function() { faces = $(this).attr("data-user").split("-"); facesLow = []; for (var i = 0; i < faces.length; i++) { facesLow.push(faces[i].toLowerCase()); } tags = $(this).attr("data-tag").split("-"); date = $(this).attr("data-date");

keepThis1 = true; if ($("#tn-active-filters-F").val() != "") { //If one of the active filters is not present, hide the post for (var i = 0; i < Ffilters.length; i++) { if (facesLow.indexOf(Ffilters[i].toLowerCase()) == -1) { keepThis1 = false; } } }

keepThis2 = true; if (Tfilter != "") { keepThis2 = false; //If the active tag filter is not present, hide the post for (var k = 0; k < tags.length; k++) { if (tags[k].toLowerCase().trim() === Tfilter && !keepThis2) { keepThis2 = true; } } }

keepThis3 = true; if (Dfilter != "") { keepThis3 = false; if (date == Dfilter) { keepThis3 = true; } }

keepThis = false; //Combine tags and faces filters if (keepThis1 && keepThis2 && keepThis3) { keepThis = true; }

//Act if (!keepThis) { $(this).css("display", "none"); } else { $(this).css("display", "block"); } }); } }

/**

* Changes border color of every image with the same source of the clicked one
* @param Object parent the <a> tag containing the image
* @param String color
*/

function setBorder(parent, color) { img = parent.children();

$("img").each(function() { if ($(this).attr("src") == img.attr("src")) { $(this).css("border", "2px solid " + color); } }); }

/**

* Rebuilds the calendar changing the month
* @param Integer yyyy
* @param Integer month
* @param Integer days
*/

function setMonth(yyyy, month, days) { //reset $("#tn-calendar-table td").text(""); $("#tn-calendar-table td").attr("data-date", "");

//Start var days = 0; //Set switch (month) { case 1: { $(".tn-month.tn-name").text("January 2013"); days = 31; break; } case 2: { $(".tn-month.tn-name").text("February 2013"); days = 30; break; } case 3: { $(".tn-month.tn-name").text("March 2013"); days = 31; break; } case 4: { $(".tn-month.tn-name").text("April 2013"); days = 30; break; } case 5: { $(".tn-month.tn-name").text("May 2013"); days = 31; break; } case 6: { $(".tn-month.tn-name").text("June 2013"); days = 30; break; } case 7: { $(".tn-month.tn-name").text("July 2013"); days = 31; break; } case 8: { $(".tn-month.tn-name").text("August 2013"); days = 31; break; } case 9: { $(".tn-month.tn-name").text("September 2013"); days = 30; break; } case 10: { $(".tn-month.tn-name").text("October 2013"); days = 31; break; } case 11: { $(".tn-month.tn-name").text("November 2013"); days = 30; break; } case 12: { $(".tn-month.tn-name").text("December 2013"); days = 31; break; } } var week = 1; //$("#week-"+week+" td").get(0).text("Prova"); for (var i = 1; i <= days; i++) { pos = new Date(yyyy, month - 1, i, 0, 0, 0, 0).getDay(); $("#week-" + week + " td").eq(pos).text(i); smonth = "" + month; si = "" + i; if (smonth.length == 1) { smonth = "0" + smonth; } if (si.length == 1) { si = "0" + si; } $("#week-" + week + " td").eq(pos).attr("data-date", yyyy + "-" + smonth + "-" + si); if (pos == 6) { week++; } } $("#tn-calendar-table").attr("data-month", month); }

//Acts when the document is loaded $(document).ready(function() {

/**************************************/ /**GET THE POSTs BACK IN THE TEMPLATE**/ /**************************************/ var c = 1; var calenMap = {}; var calenOrdered = [];

/*----------------------------*/ /* Get all posts through AJAX */ /*----------------------------*/ var last_id = 0, href = ""; var postlist = [];

//Get posts from ajax index $("#aj_index a").each(function() {

//Get url href = $(this).attr('href');

//Get id var id = href.split("/"); id = id[id.length - 1];

//Save highest id (last post) if( id > last_id ) { last_id = id; }

//Make AJAX request $.getJSON( href+"?action=raw&ctype=text/javascript" , function(data) {

postlist.push({ "date" : data.date, "author" : data.author, "title" : data.title, "content" : data.content, "tags" : data.tags });

}); }); alert(1); //Iterate through all posts and order them $(postlist).each(function(i,post) { alert(i); alert(post.date); //Get post date date = $(this).attr("data-date").split("-");

calenMap[date[0] + ":" + date[1] + ":" + date[2] + ":" + c] = $(this); calenOrdered.push(date[0] + ":" + date[1] + ":" + date[2] + ":" + c);

c++; });

//Add posts to the page in an ordered way calenOrdered.sort(); for ( var key in calenOrdered ) { keys = calenOrdered[key].split(":");

post = calenMap[calenOrdered[key]]; section = keys[keys.length-1]; $(post).parent().prependTo($("#tn-content")); $(post).append("<a href='?title=Team:UNITN-Trento/Notebook&action=edit&section=" + section + "' class='tn-editpost'><img src='https://static.igem.org/mediawiki/2013/0/04/Tn-20130709-edit_button.png' title='Edit' alt='Edit' /></a>"); }

//"Add Post" Link var maxSectionId = 0; $("h2 .editsection a").each(function() { tempId = parseInt($(this).attr("title").split(":")[1].trim()); if (tempId > maxSectionId) { maxSectionId = tempId; } });

$("#tn-content").prepend("
<a href='?title=Team:UNITN-Trento/Notebook&action=edit&section=new&preloadtitle=" + (maxSectionId + 1) + "&preload=Team:UNITN-Trento/Help/Labpost' class='tn-addpost'>Add new labPost</a>
"); $("#tn-content").append("
<a href='?title=Team:UNITN-Trento/Notebook&action=edit&section=new&preloadtitle=" + (maxSectionId + 1) + "&preload=Team:UNITN-Trento/Help/Labpost' class='tn-addpost'>Add new labPost</a>
");

/***********/ /**FILTERS**/ /***********/

//Add tags to the select filter option var added = []; $(".tag").each(function() { if (added.indexOf($(this).text().toLowerCase().trim()) == -1) { added.push($(this).text().toLowerCase().trim()); $("#tn-filter-tags").append("<option value='" + $(this).text().toLowerCase().trim() + "'>" + $(this).text().toLowerCase().trim() + "</option>"); } }); //Set TAGS filters $("#tn-filter-tags").change(function(e) { e.preventDefault(); $("#tn-active-filters-T").val($("#tn-filter-tags").val()); //Apply active filters useFilters(); });

//Select all the FACES filters $(".faces").each(function() { //Set the click event $(this).click(function(e) { //Rewrite default e.preventDefault();

faceBox = $(this); hidBox = $("#tn-active-filters-F"); name = faceBox.attr("href");

//If there is no filter active if (hidBox.val() == "") { //Add the current to the active filters hidBox.val(name); setBorder(faceBox, "rgb(191, 27, 57)"); } else { //If there are active filters, get them arnames = hidBox.val().split("-");

//If the current is not active, activate it if (arnames.indexOf(name) == -1) { hidBox.val(hidBox.val() + "-" + name); setBorder(faceBox, "rgb(191, 27, 57)"); } else { //If the current is active, deactivate it arnames.splice(arnames.indexOf(name), 1); hidBox.val(arnames.join("-")); setBorder(faceBox, "rgb(240, 242, 223)"); } }

//Apply active filters useFilters(); }); });

/**********/ /*CALENDAR*/ /**********/

//Creates the calendar var today = new Date(); var dd = today.getDate(), wd = today.getDay(); var mm = today.getMonth() + 1; var yyyy = today.getFullYear(); setMonth(yyyy, mm);

//Click $(".tn-month.tn-fw a").click(function(e) { e.preventDefault(); $("#tn-calendar-table td").css("border", "1px solid rgb(3, 140, 126)"); setMonth(yyyy, parseInt($("#tn-calendar-table").attr("data-month")) + 1); }); $(".tn-month.tn-bw a").click(function(e) { e.preventDefault(); $("#tn-calendar-table td").css("border", "1px solid rgb(3, 140, 126)"); setMonth(yyyy, parseInt($("#tn-calendar-table").attr("data-month")) - 1); }); //Set link on calendar $("#tn-calendar-table td").each(function() { $(this).click(function(e) { e.preventDefault(); $("#tn-calendar-table td").css("border", "1px solid rgb(3, 140, 126)"); if ($("#tn-active-filters-D").val() == $(this).attr("data-date")) { $("#tn-active-filters-D").val(""); } else { $(this).css("border", "1px solid rgb(191, 27, 57)"); $("#tn-active-filters-D").val($(this).attr("data-date")); }

//Apply active filters useFilters(); }); });

/**SCROLL TO POST BASED ON HASH**/ //$("html,body").scrollTo(document.location.hash.replace("#", ""), document.location.hash.replace("#", "")); });

// //When hash changes, scroll to correct div // oHch(function() { // $("html,body").scrollTo(document.location.hash.replace("#", ""), document.location.hash.replace("#", "")); // });