Last active
December 24, 2015 03:42
-
-
Save ynkdir/b6b23d6403efd5e97c3d to your computer and use it in GitHub Desktop.
vim calendar generator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@media print { | |
#controller { | |
display: none; | |
} | |
} | |
#controller { | |
position: absolute; | |
width: 210mm; | |
height: 100mm; | |
} | |
body { | |
width: 210mm; | |
height: 297mm; | |
padding: 0px; | |
margin: 0px; | |
} | |
#img_figure { | |
position: absolute; | |
left: 14mm; | |
top: 5mm; | |
width: 28mm; | |
height: 32mm; | |
} | |
#img_signature { | |
position: absolute; | |
left: 123mm; | |
top: 24mm; | |
width: 32mm; | |
height: 15mm; | |
} | |
#greeting { | |
position: absolute; | |
left: 83mm; | |
top: 8mm; | |
width: 110mm; | |
height: 15mm; | |
font: 16pt arial; | |
} | |
#hr1 { | |
position: absolute; | |
left: 0mm; | |
top: 43mm; | |
width: 210mm; | |
border: none; | |
border-top: dotted 0.5mm #1f1a17; | |
} | |
#img_vim1 { | |
position: absolute; | |
left: 188mm; | |
top: 48mm; | |
width: 15mm; | |
height: 15mm; | |
transform: matrix(-1, 0, 0, -1, 0, 0); | |
} | |
#year { | |
position: absolute; | |
left: 188mm; | |
top: 90mm; | |
width: 15mm; | |
height: 72mm; | |
text-align: center; | |
font: bold 46pt arial; | |
transform: matrix(-1, 0, 0, -1, 0, 0); | |
color: #291770; | |
} | |
#t1, #t2, #t3, #t4, #t5, #t6, #t7, #t8, #t9, #t10, #t11, #t12 { | |
position: absolute; | |
width: 34mm; | |
height: 34mm; | |
transform: matrix(-1, 0, 0, -1, 0, 0); | |
border-collapse: collapse; | |
} | |
#t12, #t8, #t4 { | |
left: 12mm; | |
} | |
#t11, #t7, #t3 { | |
left: 52mm; | |
} | |
#t10, #t6, #t2 { | |
left: 92mm; | |
} | |
#t9, #t5, #t1 { | |
left: 132mm; | |
} | |
#t12, #t11, #t10, #t9 { | |
top: 48mm; | |
} | |
#t8, #t7, #t6, #t5 { | |
top: 87mm; | |
} | |
#t4, #t3, #t2, #t1 { | |
top: 126mm; | |
} | |
td { | |
width: 0.7cm; | |
height: 0.4cm; | |
padding: 0px; | |
} | |
/* month name */ | |
table > caption { | |
font: bold 10pt arial; | |
height: 0.4cm; | |
} | |
/* day name */ | |
table > tbody td:nth-child(7n + 1) { | |
font: 10pt arial; | |
color: #4a5778; | |
} | |
/* date */ | |
table > tbody > tr:not(:last-child) > td:not(:first-child) { | |
font: 10pt arial; | |
text-align: right; | |
} | |
/* week number */ | |
table > tbody > tr:last-child > td { | |
font: 8pt arial; | |
color: #4a5778; | |
text-align: right; | |
} | |
#hr2 { | |
position: absolute; | |
left: 0mm; | |
top: 163mm; | |
width: 210mm; | |
border: none; | |
border-top: dotted 0.5mm #1f1a17; | |
} | |
#img_iccf { | |
position: absolute; | |
left: 9mm; | |
top: 169mm; | |
width: 44mm; | |
height: 28mm; | |
} | |
#msg_iccf { | |
position: absolute; | |
left: 61mm; | |
top: 170mm; | |
width: 102mm; | |
height: 35mm; | |
font: 10pt arial; | |
text-align: justify; | |
} | |
#msg_iccf_url { | |
position: absolute; | |
left: 163mm; | |
top: 180mm; | |
width: 46mm; | |
height: 10mm; | |
font: bold 12pt arial; | |
text-align: center; | |
} | |
#msg_vim_url { | |
position: absolute; | |
left: 3mm; | |
top: 217mm; | |
width: 50mm; | |
height: 10mm; | |
font: bold 12pt arial; | |
text-align: right; | |
} | |
#msg_vim { | |
position: absolute; | |
left: 61mm; | |
top: 209mm; | |
width: 102mm; | |
height: 30mm; | |
font: 10pt arial; | |
text-align: justify; | |
} | |
#img_vim2 { | |
position: absolute; | |
left: 172mm; | |
top: 205mm; | |
width: 28mm; | |
height: 28mm; | |
} | |
#img_zimbu { | |
position: absolute; | |
left: 6mm; | |
top: 238mm; | |
width: 49mm; | |
height: 29mm; | |
} | |
#msg_zimbu { | |
position: absolute; | |
left: 61mm; | |
top: 243mm; | |
width: 102mm; | |
height: 30mm; | |
font: 10pt arial; | |
text-align: justify; | |
} | |
#msg_zimbu_url { | |
position: absolute; | |
left: 163mm; | |
top: 252mm; | |
width: 46mm; | |
height: 10mm; | |
font: bold 12pt arial; | |
text-align: center; | |
} | |
#hr3 { | |
position: absolute; | |
left: 0mm; | |
top: 283mm; | |
width: 210mm; | |
border: none; | |
border-top: dotted 0.5mm #1f1a17; | |
} | |
#gluehere { | |
position: absolute; | |
left: 0mm; | |
top: 286mm; | |
width: 210mm; | |
height: 10mm; | |
text-align: center; | |
font: 6pt arial; | |
} | |
.holiday { | |
color: #d9261c; | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> | |
<script src="vim_calendar.js"></script> | |
<link rel="stylesheet" href="vim_calendar.css" /> | |
</head> | |
<body> | |
<div id="controller"> | |
1. Click year to set year. | |
2. Click date to set holiday. | |
3. Print. | |
</div> | |
<img id="img_figure" src="figure1.png" /> <div id="greeting">Wishing you a Joyful Merry Christmas and a very prosperous new year!</div> | |
<img id="img_signature" src="signature.png" /> | |
<hr id="hr1" /> | |
<div id="year">2016</div> | |
<img id="img_vim1" src="vim1.png" /> | |
<table id="t1"> | |
<caption>January</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t2"> | |
<caption>February</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t3"> | |
<caption>March</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t4"> | |
<caption>April</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t5"> | |
<caption>May</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t6"> | |
<caption>June</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t7"> | |
<caption>July</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t8"> | |
<caption>August</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t9"> | |
<caption>September</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t10"> | |
<caption>October</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t11"> | |
<caption>November</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<table id="t12"> | |
<caption>December</caption> | |
<tr><td>Su</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Mo</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>We</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Tu</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Fr</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td>Sa</td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> | |
</table> | |
<hr id="hr2" /> | |
<img id="img_iccf" src="iccf.png" /> | |
<div id="msg_iccf">The ICCF Holland foundation helps needy children in the poor south of Uganda. AIDS strikes hard here and results in many orphans. If you sponsor a child it will be able to attend school and get the help that it needs. With your donation AIDS education is given and an essential clinic is kept running. The foundation works with volunteers, 98% of the money is directly for the benefit of the children.</div> | |
<div id="msg_iccf_url">www.ICCF.nl</div> | |
<div id="msg_vim_url">www.Vim.org</div> | |
<div id="msg_vim">Vim - Vi Improved - a program to enter and edit plain text. Inspired by the standard Unix text editor Vi. It offers the possibility to edit text very efficiently. Vim has a large number of features and works on many known and less known platforms. Vim is free and open-source software.</div> | |
<img id="img_vim2" src="vim2.png" /> | |
<img id="img_zimbu" src="zimbu.png" /> | |
<div id="msg_zimbu">Zimbu is a new, experimental programming language. It is a very practical, no-nonsense kind of language. It mixes the good things of many existing languages and avoids their deficiencies. And then throws in a few brand new ideas to make programming more reliable and fun! Zimbu is free and open-source software.</div> | |
<div id="msg_zimbu_url">www.Zimbu.org</div> | |
<hr id="hr3" /> | |
<div id="gluehere">glue here</div> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Returns the week number for this date. dowOffset is the day of week the week | |
* "starts" on for your locale - it can be from 0 to 6. If dowOffset is 1 (Monday), | |
* the week returned is the ISO 8601 week number. | |
* @param int dowOffset | |
* @return int | |
*/ | |
Date.prototype.getWeek = function (dowOffset) { | |
/*getWeek() was developed by Nick Baicoianu at MeanFreePath: http://www.epoch-calendar.com */ | |
dowOffset = typeof(dowOffset) == 'int' ? dowOffset : 0; //default dowOffset to zero | |
var newYear = new Date(this.getFullYear(),0,1); | |
var day = newYear.getDay() - dowOffset; //the day of week the year begins on | |
day = (day >= 0 ? day : day + 7); | |
var daynum = Math.floor((this.getTime() - newYear.getTime() - | |
(this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1; | |
var weeknum; | |
//if the year starts before the middle of a week | |
if(day < 4) { | |
weeknum = Math.floor((daynum+day-1)/7) + 1; | |
if(weeknum > 52) { | |
nYear = new Date(this.getFullYear() + 1,0,1); | |
nday = nYear.getDay() - dowOffset; | |
nday = nday >= 0 ? nday : nday + 7; | |
/*if the next year starts before the middle of | |
the week, it is week #1 of that year*/ | |
weeknum = nday < 4 ? 1 : 53; | |
} | |
} | |
else { | |
weeknum = Math.floor((daynum+day-1)/7); | |
} | |
return weeknum; | |
}; | |
function setyear(year) { | |
$('#year').html((year + '').split('').join('<br />')); | |
for (var month = 0; month < 12; ++month) { | |
setmonth($('#t' + (month + 1)), year, month) | |
} | |
} | |
function setmonth(t, year, month) { | |
t.find('tr').each(function() { $(this).find('td:gt(0)').html(''); }); | |
var col = 1; | |
for (var date = 1; date <= 31; date++) { | |
var d = new Date(year, month, date); | |
if (d.getMonth() != month) { | |
break; | |
} | |
var row = d.getDay(); | |
t.find('tr').eq(row).find('td').eq(col).html(date); | |
if (date == 1 || row == 0) { | |
var week = d.getWeek(); | |
if (!(week == 0 || (week == 1 && month == 11))) { | |
t.find('tr').eq(7).find('td').eq(col).html(d.getWeek()); | |
} | |
} | |
if (row == 6) { | |
col++; | |
} | |
} | |
} | |
function setholiday() { | |
$(this).toggleClass('holiday'); | |
} | |
$(document).ready(function() { | |
var year = (new Date()).getFullYear(); | |
setyear(year); | |
$('#year').mousedown(function(e) { | |
if (e.button == 2 /* right */) { | |
year--; | |
} else { | |
year++; | |
} | |
setyear(year); | |
}); | |
$('table').each(function() { | |
$(this).find('tr:lt(7)').each(function() { | |
$(this).find('td:gt(0)').click(setholiday); | |
}); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment