PageRenderTime 59ms CodeModel.GetById 32ms RepoModel.GetById 1ms app.codeStats 0ms

/schedule/main.js

https://github.com/xuwei-k/xuwei-k.github.com
JavaScript | 165 lines | 143 code | 22 blank | 0 comment | 30 complexity | 0c39223c10e19dfd10f9e3d01bc6c57f MD5 | raw file
  1. const download = function(filename, text) {
  2. const element = document.createElement('a');
  3. element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  4. element.setAttribute('download', filename);
  5. element.style.display = 'none';
  6. document.body.appendChild(element);
  7. element.click();
  8. document.body.removeChild(element);
  9. }
  10. const queryParams = (function(){
  11. const arg = new Object;
  12. const pair = location.search.substring(1).split('&');
  13. for(let i = 0; pair[i]; i++) {
  14. const kv = pair[i].split('=');
  15. const value = parseInt(kv[1]);
  16. if(!Number.isNaN(value)) {
  17. arg[kv[0]] = value;
  18. }
  19. }
  20. return arg;
  21. })();
  22. const month = (function(){
  23. const v = queryParams["month"];
  24. if(v === undefined) {
  25. const today = new Date();
  26. return today.getMonth() + 1;
  27. } else {
  28. return v - 1;
  29. }
  30. })();
  31. const year = (function(){
  32. const v = queryParams["year"];
  33. if(v === undefined) {
  34. const today = new Date();
  35. return today.getFullYear();
  36. } else {
  37. return v;
  38. }
  39. })();
  40. const m2 = (function(){
  41. if (month == 12) {
  42. return 1;
  43. } else {
  44. return month + 1;
  45. }
  46. })();
  47. const y2 = (function(){
  48. if (m2 == 1 && queryParams["month"] === undefined) {
  49. return year + 1;
  50. } else {
  51. return year;
  52. }
  53. })();
  54. (function(){
  55. const today = new Date();
  56. let day_count = -(new Date(y2, m2 - 1)).getDay();
  57. const max_day = new Date(y2, m2, 0).getDate();
  58. let youbi = -1;
  59. let html = '<table border="1">';
  60. html += '<caption>' + y2 + '/' + m2 + '</caption>';
  61. html+= '<tr>';
  62. const dayOfWeeks = '日月火水木金土';
  63. for(let i = 0; i< dayOfWeeks.length; i++){
  64. const tmpChar = dayOfWeeks.substr(i, 1);
  65. html += '<th>' +tmpChar +'</th>';
  66. }
  67. html += '</tr>';
  68. while( true ){
  69. if(youbi > 5) {
  70. html += '</tr>';
  71. if( day_count >= max_day ) {
  72. break;
  73. }
  74. youbi = 0;
  75. } else {
  76. youbi = youbi + 1;
  77. }
  78. if( youbi == 0 ){
  79. html +='<tr>';
  80. }
  81. let moji;
  82. day_count = day_count + 1;
  83. if( day_count < 1 || max_day<day_count ){
  84. html += '<td>-</td>';
  85. } else {
  86. if (youbi == 0) {
  87. html += '<td style="background-color: #FF97C2;">'
  88. } else if (youbi == 6) {
  89. html += '<td style="background-color: skyblue;">'
  90. } else {
  91. html += '<td>'
  92. }
  93. html += day_count +
  94. `<form id="${day_count}">` +
  95. `<input name="${day_count}" type="radio" value="a" checked="checked">休み</input><br />` +
  96. `<input name="${day_count}" type="radio" value="b">仕事</input><br />` +
  97. `</form></td>`
  98. }
  99. }
  100. html += '</table>';
  101. $("#calendar").html(html);
  102. })();
  103. $("#result").click(function(){
  104. const today = new Date();
  105. const max_day = new Date(y2, m2, 0).getDate();
  106. let result = [];
  107. for(let i = 0; i <= max_day; i++){
  108. switch($(`input[name=${i}]:checked`).val()) {
  109. case "a":
  110. break;
  111. case "b":
  112. result.push({
  113. "Subject" : "仕事",
  114. "Start Date" : `${m2}/${i}/${y2}`,
  115. "Start Time" : "8:30 AM",
  116. "End Date" : `${m2}/${i}/${y2}`,
  117. "End Time" : "17:00"
  118. })
  119. break;
  120. }
  121. }
  122. let csv = [
  123. "Subject",
  124. "Start Date",
  125. "Start Time",
  126. "End Date",
  127. "End Time"
  128. ].join(",") + "\n";
  129. for(let i = 0; i < result.length; i++){
  130. const x = result[i]
  131. csv += [
  132. x["Subject"],
  133. x["Start Date"],
  134. x["Start Time"],
  135. x["End Date"],
  136. x["End Time"]
  137. ].join(",")
  138. csv += "\n"
  139. }
  140. console.log(csv);
  141. $("#csv").html("<pre>" + csv + "</pre>");
  142. download(`schedule-${y2}-${m2}.csv`, csv);
  143. });