demo.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>The HTML5 Herald</title>
  6. <meta name="description" content="JavaScript Calendar demo">
  7. <meta name="author" content="Sergio Crisostomo">
  8. <!--
  9. <link rel="stylesheet" href="css/styles.css">
  10. -->
  11. <script src="../dist/jsCalendar.js"></script>
  12. <style media="screen">
  13. #selector {
  14. width: 100%;
  15. padding: 5px;
  16. height: 20px;
  17. background: #fff;
  18. }
  19. #selector > * {
  20. padding: 5px;
  21. }
  22. #calendar > div {
  23. float: left;
  24. width: 260px;
  25. height: 245px;
  26. margin: 5px;
  27. }
  28. #calendar > div > div {
  29. float: left;
  30. text-align: center;
  31. width: 30px;
  32. height: 23px;
  33. border: 1px solid #000;
  34. padding-top: 5px;
  35. border-radius: 2px;
  36. }
  37. #calendar .month {
  38. width: 254px;
  39. height: 25px;
  40. border: none;
  41. }
  42. .inactive {
  43. color: #aaa;
  44. background-color: #eee;
  45. }
  46. .day-of-week {
  47. background-color: #ddf;
  48. }
  49. .week-number {
  50. background-color: #fee;
  51. }
  52. .day-in-month {
  53. background-color: #bbc;
  54. }
  55. </style>
  56. </head>
  57. <body>
  58. <div id="selector">
  59. <input type="text" placeholder="year" />
  60. <button type="button">load</button>
  61. <button type="button"> &lt; </button>
  62. <button type="button"> &gt; </button>
  63. </div>
  64. <div id="calendar"></div>
  65. <script type="text/javascript">
  66. var jsCalendar = require('jsCalendar');
  67. var jsCal = new jsCalendar.Generator({
  68. weekStart: 0
  69. });
  70. var monthNames = ["January", "February", "March", "April", "May", "June",
  71. "July", "August", "September", "October", "November", "December"
  72. ];
  73. var currentYear = new Date().getFullYear();
  74. var input = document.querySelector('input');
  75. var buttons = document.querySelectorAll('button');
  76. var target = document.querySelector('#calendar');
  77. // mount HTML
  78. buttons[0].addEventListener('click', function() {
  79. target.innerHTML = '';
  80. var year = parseInt(input.value, 10) || currentYear;
  81. for (var i = 0; i < 12; i++) {
  82. var div = document.createElement('div');
  83. var month = monthNames[i];
  84. var monthDiv = document.createElement('div');
  85. monthDiv.className = 'month';
  86. monthDiv.innerHTML = month + ' - ' + year;
  87. div.appendChild(monthDiv);
  88. jsCal(year, i, jsCalendar.addLabels).cells.forEach(function(cell, c) {
  89. var cellDiv = document.createElement('div');
  90. // add classes from "addLabels" plugin
  91. cellDiv.className = cell.class.join(' ');
  92. // add day number or 3 character long weekday label
  93. cellDiv.innerHTML = typeof cell.desc == 'string' ? cell.desc.slice(0, 3) : cell.desc;
  94. div.appendChild(cellDiv);
  95. });
  96. target.appendChild(div);
  97. }
  98. });
  99. buttons[0].click();
  100. // new year inserted
  101. input.addEventListener('change', function(){
  102. currentYear = Number(this.value);
  103. buttons[0].click();
  104. });
  105. function changeYear(direction){
  106. return function(){
  107. currentYear+= direction;
  108. input.value = currentYear;
  109. buttons[0].click();
  110. }
  111. }
  112. buttons[1].addEventListener('click', changeYear(-1));
  113. buttons[2].addEventListener('click', changeYear(1));
  114. </script>
  115. </body>
  116. </html>