Team:KULeuven/Tools/New Day/Date Retriever

From 2008.igem.org

(Difference between revisions)
(New page: <html> <script type="text/javascript"> var mnames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); fu...)
m
 
(109 intermediate revisions not shown)
Line 1: Line 1:
<html>
<html>
<script type="text/javascript">
<script type="text/javascript">
-
var mnames = new Array('January', 'February', 'March', 'April', 'May',
+
/*
 +
* @author KULeuven
 +
*/
 +
var monthNames = new Array('January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October', 'November', 'December');
'June', 'July', 'August', 'September', 'October', 'November', 'December');
-
function date_retriever() {
+
document.write(pageDate().toString().substring(0,11));
-
// First step is to split the url of the current notebook entry
+
-
var url_tokens = location.href.split("/");
+
-
// Filter out the last token which contains the proper date
+
-
var url_date_token = url_tokens[url_tokens.length-1];
+
-
var date_tokens = url_date_token.split("_");
+
/* Extracts the corresponding calendar date out of the page url */
-
var day = date_tokens[0];
+
function pageDate() {
-
var month = date_tokens[1];
+
// Retrieve page url
-
var year = date_tokens[2];
+
var urlTokens = location.href.split("/");
-
// Date is retrieved expressed in milliseconds
+
var urlLast = urlTokens[urlTokens.length - 1];
-
return Date.parse(day + ' ' + month + ', ' + year);
+
-
}
+
-
// arg determines whether you take yesterday (arg = 0) or tomorrow (arg = 1)
+
// Retrieve page date
-
function date(arg) {
+
var wikiTokens = urlLast.split("#");
-
var numeric_date = date_retriever();
+
var wikiFirst = wikiTokens[0];
-
switch(arg) {
+
 
-
case 0: numeric_date -= 86400*1000; break;
+
// Retrieve seperate date components
-
case 1: numeric_date += 86400*1000; break;
+
var dateTokens = wikiFirst.split("_");
-
default: break;
+
 
 +
var day = parseInt(dateTokens[0]);
 +
var month;
 +
for (x in monthNames) {
 +
if(dateTokens[1] == monthNames[x]) {month = x; break;}
}
}
 +
var year = parseInt(dateTokens[2]);
 +
// Construct a Date object and return the result
var date = new Date();
var date = new Date();
-
date.setTime(numeric_date);
+
date.setFullYear(year, month, day);
return date;
return date;
}
}
-
function url_date(date) {
+
/* Retrieves date ndays before this page date */
-
var url = "https://2008.igem.org/Team:KULeuven/";
+
function datePast(ndays) {
-
url += date.getDate();
+
var pastDate = new Date();
-
url += '_';
+
// getDate, setDate methods are rubbish, stick to numeric substraction!
-
url += mnames[date.getMonth()];
+
var ntime = pageDate().getTime() - ndays*86400*1000;
-
url += '_';
+
pastDate.setTime(ntime);
-
url += date.getFullYear();
+
 
 +
return pastDate;
 +
}
 +
 
 +
/* Searches date ndays after this page date */
 +
function dateFuture(ndays) {
 +
var futureDate = new Date();
 +
// getDate, setDate methods are rubbish, stick to numeric adding!
 +
var ntime = pageDate().getTime() + ndays*86400*1000;
 +
futureDate.setTime(ntime);
 +
 
 +
return futureDate;
 +
}
 +
 
 +
/* Returns the date of Friday previous week */
 +
function previousWeekFriday() {
 +
var dayOfWeek = pageDate().getDay();
 +
var previousWeekFriday = new Date();
 +
 
 +
switch(dayOfWeek) {
 +
// case 0 is Sunday, substract 9 days
 +
case 0: previousWeekFriday = datePast(9); break;
 +
default: previousWeekFriday = datePast(dayOfWeek + 2); break;
 +
}
 +
 
 +
return previousWeekFriday;
 +
}
 +
 
 +
/* Returns the date of Monday next week */
 +
function nextWeekMonday() {
 +
var dayOfWeek = pageDate().getDay();
 +
var nextWeekMonday = new Date();
 +
 
 +
switch(dayOfWeek) {
 +
// case 0 is Sunday, add 1 day
 +
case 0: nextWeekMonday = dateFuture(1); break;
 +
default: nextWeekMonday = dateFuture(8 - dayOfWeek); break;
 +
}
 +
 
 +
return nextWeekMonday;
 +
}
 +
 
 +
/* Returns the date of Friday this week */
 +
function thisFriday() {
 +
var dayOfWeek = pageDate().getDay();
 +
var thisFriday;
 +
 
 +
switch(dayOfWeek) {
 +
// case 0 is Sunday, substract 2 days
 +
case 0: thisFriday = datePast(2); break;
 +
// case 6 is Saturday, substract 1 day, can also be merged into default, in which case we look -1 day // ahead, corresponding to going 1 day back in the past
 +
case 6: thisFriday = datePast(1); break;
 +
default: thisFriday = dateFuture(5 - dayOfWeek); break;
 +
}
-
return url;
+
return thisFriday;
}
}
-
function test() {
+
/* Converts a date into a valid url for the KULeuven wiki and loads the page */
-
hey.value = url_date(date(0));
+
function goToDate(date) {
 +
// base wiki url of KULeuven
 +
var URL = "https://2008.igem.org/Team:KULeuven/";
 +
URL += date.getDate();
 +
URL += '_';
 +
// month indexing of Date object index matching to array monthNames indexing
 +
URL += monthNames[date.getMonth()];
 +
URL += '_';
 +
URL += date.getFullYear();
 +
// redirect browser to desired day
 +
window.location.href = URL;
}
}
</script>
</script>
Line 52: Line 118:
<table width="70%">
<table width="70%">
<tr>
<tr>
-
<td width="25%"><a href="https://2008.igem.org/Team:KULeuven/Meeting_Reports">&lt;&lt; return to notebook</a>
+
<td align="left" width="25%"><a href="https://2008.igem.org/Team:KULeuven/Meeting_Reports">&lt;&lt; return to notebook</a></td>
-
<td width="25%"><script language="javascript">document.write("< yesterday".link(url_date(date(0))));</script></td>
+
<td></td>
-
<td width="25%"><script language="javascript">document.write("tomorrow >".link(url_date(date(1))));</script></td>
+
<td></td>
-
<td width="25%"></td>
+
<td align="right" width="25%"><a href="https://2008.igem.org/Team:KULeuven">return to homepage &gt;&gt;</a></td>
 +
</tr>
 +
<tr align="center">
 +
<td align="left" width="25%"><a href="javascript:void(0);" onClick="goToDate(previousWeekFriday());">&lt; previous friday</a></td>
 +
<td width="25%"><a href="javascript:void(0);" onClick="goToDate(datePast(1));">← yesterday</a></td>
 +
<td width="25%"><a href="javascript:void(0);" onClick="goToDate(dateFuture(1));">tomorrow →</a></td>
 +
<td align="right" width="25%"><a href="javascript:void(0);" onClick="goToDate(nextWeekMonday());">next monday &gt;</a></td>
</tr>
</tr>
</table>
</table>

Latest revision as of 23:45, 29 October 2008

<< return to notebook return to homepage >>
< previous friday ← yesterday tomorrow → next monday >