Team:Warsaw/JSTest
From 2008.igem.org
(Difference between revisions)
(107 intermediate revisions not shown) | |||
Line 5: | Line 5: | ||
<div id="merg"></div> | <div id="merg"></div> | ||
- | + | ||
+ | |||
<script type="text/javascript"> | <script type="text/javascript"> | ||
+ | |||
/* <![CDATA[ */ | /* <![CDATA[ */ | ||
+ | |||
+ | /* Client-side access to querystring name=value pairs | ||
+ | Version 1.3 | ||
+ | 28 May 2008 | ||
+ | |||
+ | License (Simplified BSD): | ||
+ | http://adamv.com/dev/javascript/qslicense.txt | ||
+ | */ | ||
+ | function Querystring(qs) { // optionally pass a querystring to parse | ||
+ | this.params = {}; | ||
+ | |||
+ | if (qs == null) qs = location.search.substring(1, location.search.length); | ||
+ | if (qs.length == 0) return; | ||
+ | |||
+ | // Turn <plus> back to <space> | ||
+ | // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1 | ||
+ | qs = qs.replace(/\+/g, ' '); | ||
+ | var args = qs.split(String.fromCharCode(38)); // parse out name/value pairs separated via & | ||
+ | |||
+ | // split out each name=value pair | ||
+ | for (var i = 0; i < args.length; i++) { | ||
+ | var pair = args[i].split('='); | ||
+ | var name = decodeURIComponent(pair[0]); | ||
+ | |||
+ | var value = (pair.length==2) | ||
+ | ? decodeURIComponent(pair[1]) | ||
+ | : name; | ||
+ | |||
+ | this.params[name] = value; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Querystring.prototype.get = function(key, default_) { | ||
+ | var value = this.params[key]; | ||
+ | return (value != null) ? value : default_; | ||
+ | } | ||
+ | |||
+ | Querystring.prototype.contains = function(key) { | ||
+ | var value = this.params[key]; | ||
+ | return (value != null); | ||
+ | } | ||
+ | |||
+ | |||
Array.prototype.indexOf = function( v, b, s ) { | Array.prototype.indexOf = function( v, b, s ) { | ||
Line 23: | Line 68: | ||
} | } | ||
- | function removeHTMLTags( | + | function removeHTMLTags(strInputCode2 ){ |
- | + | var strInputCode=new String(); | |
- | strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1){ | + | strInputCode=strInputCode2; |
+ | //if (strInputCode==undefined) return; | ||
+ | /* | ||
+ | strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1){ | ||
return (p1 == "lt")? "<" : ">"; | return (p1 == "lt")? "<" : ">"; | ||
}); | }); | ||
+ | */ | ||
+ | strInputCode = strInputCode.replace(/&(lt);/g,"<"); | ||
+ | strInputCode = strInputCode.replace(/&(gt);/g,">"); | ||
var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, ""); | var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, ""); | ||
return strTagStrippedText; | return strTagStrippedText; | ||
Line 39: | Line 90: | ||
function merge(days) | function merge(days) | ||
{ | { | ||
- | document.getElementById("title").innerHTML=title; | + | document.getElementById("title").innerHTML=removeHTMLTags(title); |
Line 46: | Line 97: | ||
var div=document.createElement("div"); | var div=document.createElement("div"); | ||
var h=document.createElement("h3"); | var h=document.createElement("h3"); | ||
- | h.innerHTML='<a href="'+adresbase+days[i]+'">'+days[i]+ | + | h.innerHTML='<a href="'+adresbase+days[i]+'">'+days[i]+'</a> <div align="right"><a href="https://2008.igem.org/wiki/index.php?title=Team:Warsaw/Calendar-Main/'+days[i]+String.fromCharCode(38)+'action=edit">'+"[Edit]"+'</a></div>'; |
div.setAttribute("id",days[i]); | div.setAttribute("id",days[i]); | ||
document.getElementById("merg").appendChild(h); | document.getElementById("merg").appendChild(h); | ||
Line 69: | Line 120: | ||
ans=req.responseText; | ans=req.responseText; | ||
ans=ans.substr(ans.search("<start>"),ans.search("<end>")-ans.search("<start>")); | ans=ans.substr(ans.search("<start>"),ans.search("<end>")-ans.search("<start>")); | ||
- | document.getElementById(day).innerHTML=trimContents(ans,title); | + | document.getElementById(day).innerHTML=trimStr(trimContents(ans,title)); |
} | } | ||
} | } | ||
Line 77: | Line 128: | ||
req.open('GET', adresbase+day, true); | req.open('GET', adresbase+day, true); | ||
req.send(null); | req.send(null); | ||
+ | } | ||
+ | |||
+ | function trimStr(str) | ||
+ | { | ||
+ | return str.replace(/^\s+|\s+$/g, ''); | ||
} | } | ||
function trimContents(ans, title) | function trimContents(ans, title) | ||
{ | { | ||
- | + | ans=ans.replace(/<h3><\/h3>/ig,""); | |
- | + | h3=new RegExp(/<h3.*>(.*)<\/h3>/ig); | |
- | + | title=removeHTMLTags(trimStr(title)); | |
- | + | ||
+ | var titles=ans.match(h3); | ||
+ | for (var i=0;i<titles.length;i++) | ||
+ | { | ||
+ | if (titles[i].search("h3")>0) | ||
+ | { | ||
+ | //alert(titles[i].split(/(<h3>)|(<\/h3>)/i)); | ||
+ | var notags=titles[i].split(/(<h3>)|(<\/h3>)/i); | ||
+ | if (notags[3]==undefined) var currtitle=removeHTMLTags(notags[0]); //dirty IE hack | ||
+ | else var currtitle=removeHTMLTags(notags[3]); | ||
+ | currtitle=trimStr(currtitle.replace(/\+/g,' ')); | ||
+ | //alert ("C: "+currtitle+"\nT: "+title); | ||
+ | if (currtitle==title) | ||
+ | { | ||
+ | if (i+1<titles.length) return ans.substring(ans.indexOf(titles[i])+titles[i].length,ans.indexOf(titles[i+1])); | ||
+ | else return ans.substring(ans.indexOf(titles[i])+titles[i].length); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | return "Search Error"; | ||
- | |||
} | } | ||
+ | |||
var qs=new Querystring(); | var qs=new Querystring(); | ||
+ | |||
+ | var title=qs.get("name"); | ||
var num=parseInt(qs.get("num", "0")); | var num=parseInt(qs.get("num", "0")); | ||
- | |||
var tgt=new Array(num); | var tgt=new Array(num); | ||
for (var i=0;i<num;i++) | for (var i=0;i<num;i++) | ||
Line 97: | Line 174: | ||
tgt[i]=qs.get("arg"+i); | tgt[i]=qs.get("arg"+i); | ||
} | } | ||
+ | |||
+ | |||
if (tgt.length>0) merge(tgt); | if (tgt.length>0) merge(tgt); |
Latest revision as of 18:40, 28 October 2008
|