/chrome-extension/popup.html

https://github.com/Ovilia/OTL_SNS · HTML · 138 lines · 133 code · 5 blank · 0 comment · 0 complexity · f9c76d6c42623648fe98d1b43c1d3d23 MD5 · raw file

  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
  2. <script src="json2.js"></script>
  3. <script>
  4. function myClass() {
  5. var obj =
  6. {
  7. 'id':-1,
  8. 'year':"2011",
  9. 'semester':"1",
  10. 'name':"none",
  11. 'teacher':"none"
  12. }
  13. obj.classtime = new Array();
  14. return obj;
  15. }
  16. function myClasstime() {
  17. var obj =
  18. {
  19. 'weekday':"none",
  20. 'startTime':-1,
  21. 'span':-1
  22. }
  23. return obj;
  24. }
  25. function test() {
  26. $.ajax({
  27. type: "get",
  28. url: "http://electsys0.sjtu.edu.cn/edu/newsboard/newsinside.aspx",
  29. cache: false,
  30. async: false,
  31. success: function(msg) {
  32. var classInfo = msg.substring(msg.indexOf('<td style="border-width:1px;border-style:solid;">'));
  33. classInfo = classInfo.substring(0, classInfo.indexOf("/table"));
  34. // get all classes
  35. var totalClasses = new Array();
  36. var number = 0;
  37. var currentClassInfo = "1";
  38. while (currentClassInfo != "") {
  39. currentClassInfo = classInfo.substring(0, classInfo.substring(1).indexOf('<td style="border-width:1px;border-style:solid;">'));
  40. classInfo = classInfo.substring(classInfo.substring(1).indexOf('<td style="border-width:1px;border-style:solid;">') + 1);
  41. var currentClass = new myClass();
  42. currentClass.name = currentClassInfo.substring(49, currentClassInfo.indexOf("</td"));
  43. currentClass.name = currentClass.name.substring(0, currentClass.name.indexOf(" "));
  44. totalClasses[number] = currentClass;
  45. var href = currentClassInfo.substring(currentClassInfo.indexOf("href") + 5, currentClassInfo.indexOf("target"));
  46. totalClasses[number].id = href;
  47. number++;
  48. }
  49. // deal last one
  50. {
  51. currentClassInfo = classInfo;
  52. var currentClass = new myClass();
  53. currentClass.name = currentClassInfo.substring(49, currentClassInfo.indexOf("</td"));
  54. currentClass.name = currentClass.name.substring(0, currentClass.name.indexOf(" "));
  55. totalClasses[number - 1] = currentClass;
  56. var href = currentClassInfo.substring(currentClassInfo.indexOf("href") + 5, currentClassInfo.indexOf("target"));
  57. totalClasses[number - 1].id = href;
  58. }
  59. // get class time
  60. var classes = msg.substring(msg.indexOf("LessonTbl1_spanContent"));
  61. classes = classes.replace(/&nbsp;/g, " ");
  62. // eliminate Monday to Sunday columns
  63. classes = classes.substring(classes.indexOf("/tr") + 4);
  64. // get each row
  65. var classRows = new Array();
  66. for (i = 0; i < 14; ++i) {
  67. classRows[i] = classes.substring(0, classes.indexOf("/tr") + 4);
  68. classes = classes.substring(classes.indexOf("/tr") + 4);
  69. // eliminate first column
  70. classRows[i] = classRows[i].substring(classRows[i].indexOf("/td") + 3);
  71. for (j = 0; j < 7; ++j) {
  72. var singleClass = classRows[i].substring(classRows[i].indexOf("classmain"), classRows[i].indexOf("/td"));
  73. classRows[i] = classRows[i].substring(classRows[i].indexOf("/td") + 1);
  74. var className = singleClass.substring(singleClass.indexOf(">") + 1);
  75. className = className.substring(0, className.indexOf("("));
  76. var k = 0;
  77. for (k = 0; k < number; ++k) {
  78. if (totalClasses[k].name == className)
  79. break;
  80. }
  81. if (k != number) {
  82. var classtime = new myClasstime();
  83. var classtimeNum = totalClasses[k].classtime.length;
  84. totalClasses[k].classtime[classtimeNum] = classtime;
  85. totalClasses[k].classtime[classtimeNum].weekday = j + 1;
  86. totalClasses[k].classtime[classtimeNum].startTime = i + 1;
  87. var span = singleClass.substring(singleClass.indexOf("rowspan=") + 8, singleClass.indexOf(">"));
  88. totalClasses[k].classtime[classtimeNum].span = parseInt(span);
  89. }
  90. }
  91. }
  92. /* get ID and teacher name */
  93. for (i = 0; i < totalClasses.length; ++i) {
  94. $.ajax({
  95. type: "get",
  96. url: "http://electsys0.sjtu.edu.cn/edu" + totalClasses[i].id.substring(3, totalClasses[i].id.length - 2),
  97. cache: false,
  98. async: false,
  99. success: function(msg) {
  100. var teacher = msg.substring(msg.indexOf("姓名"));
  101. teacher = teacher.substring(teacher.indexOf('xtdcolour2">') + 12);
  102. totalClasses[i].teacher = teacher.substring(0, teacher.indexOf('\r'));
  103. var classID = msg.substring(msg.indexOf("课程代码"));
  104. // magic number
  105. totalClasses[i].id = classID.substring(12, 17);
  106. var year = msg.substring(msg.indexOf("学年"));
  107. // magic number
  108. totalClasses[i].year = year.substring(10, 14);
  109. var semester = msg.substring(msg.indexOf("学期"));
  110. totalClasses[i].semester = semester.substring(10, 11);
  111. },
  112. error: function(){}
  113. });
  114. }
  115. /* encode to json and transfer it to server */
  116. var json_text = JSON.stringify(totalClasses, null, 2);
  117. $.ajax({
  118. type: "POST",
  119. url: "http://localhost/OTL_SNS/index.php/takes/import",
  120. datatype: 'json',
  121. data: "schedule=" + json_text,
  122. success: function(){chrome.tabs.executeScript(null,{code:"alert('success');"});},
  123. error: function(){chrome.tabs.executeScript(null,{code:"alert('connect server error');"});}
  124. });
  125. }
  126. });
  127. document.getElementById('button').innerHTML="OK!";
  128. chrome.tabs.executeScript(null,{code:"alert('Done');"});
  129. }
  130. </script>
  131. <div id="button" onclick="test()">GET DATA</div>