update.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. var user_wbw_data_buffer = new Array();
  2. function user_wbw_push_paragraph(blockid) {}
  3. function user_wbw_push_word_element(xWord) {
  4. let wordid = getNodeText(xWord, "id");
  5. let wId = wordid.split("-")[2];
  6. let mWord = doc_word("#" + wordid);
  7. let blockid = mWord.block.info("id");
  8. user_wbw_push(blockid, wId, com_xmlToString(xWord));
  9. }
  10. function user_wbw_push_word(wordid) {
  11. let xWord = doc_word("#" + wordid);
  12. let blockid = xWord.block.info("id");
  13. let book = xWord.block.info("book");
  14. let para = xWord.block.info("paragraph");
  15. let aWordid = wordid.split("-");
  16. aWordid.length = 3;
  17. if (para != aWordid[1]) {
  18. alert("error:paragraph sn.");
  19. return;
  20. }
  21. let newWordid = aWordid.join("-");
  22. let wId = aWordid[2];
  23. let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  24. let index = getWordIndex(newWordid);
  25. let wordData = "";
  26. if (xAllWord[index]) {
  27. for (let i = index; i < xAllWord.length; i++) {
  28. if (getNodeText(xAllWord[i], "id").split("-")[2] != wId) {
  29. break;
  30. }
  31. wordData += com_xmlToString(xAllWord[i]);
  32. }
  33. user_wbw_push(blockid, wId, wordData);
  34. }
  35. }
  36. function user_wbw_push(block_id, wid, data) {
  37. let d = new Date();
  38. let objData = new Object();
  39. objData.block_id = block_id;
  40. objData.word_id = wid;
  41. objData.data = data;
  42. objData.time = d.getTime();
  43. objData.book = doc_block("#" + block_id).info("book");
  44. objData.para = doc_block("#" + block_id).info("paragraph");
  45. user_wbw_data_buffer.push(objData);
  46. }
  47. var commitTimes = 0;
  48. function user_wbw_commit() {
  49. if (user_wbw_data_buffer.length == 0) {
  50. return;
  51. }
  52. var jqxhr = $.post(
  53. "../uwbw/update.php",
  54. {
  55. data: JSON.stringify(user_wbw_data_buffer),
  56. },
  57. function (data, status) {
  58. try {
  59. let result = JSON.parse(data);
  60. if (result.status == 0) {
  61. ntf_show("user wbw " + result.message);
  62. user_wbw_data_buffer = new Array();
  63. } else {
  64. ntf_show("user wbw error" + result.message);
  65. }
  66. } catch (e) {
  67. console.error("user_wbw_update:" + e + " data:" + data);
  68. ntf_show("wbw fail");
  69. }
  70. }
  71. );
  72. jqxhr.done(function () {
  73. notify_bar.hide();
  74. });
  75. jqxhr.fail(function (xhr, error, data) {
  76. switch (xhr.status) {
  77. case 500:
  78. if (commitTimes < 5) {
  79. commitTimes++;
  80. notify_bar.show("发送失败,重试。第" + commitTimes + "次。");
  81. user_wbw_commit();
  82. } else {
  83. notify_bar.show("重试次数过多,请稍后再试。");
  84. commitTimes = 0;
  85. }
  86. break;
  87. default:
  88. notify_bar.show(xhr.statusText);
  89. break;
  90. }
  91. switch (error) {
  92. case "timeout":
  93. notify_bar.show(
  94. "服务器长时间没有回应。等待发送队列" +
  95. user_wbw_data_buffer.length +
  96. "<button onclick='user_wbw_commit()'>重试</button>"
  97. );
  98. break;
  99. case "error":
  100. notify_bar.show(
  101. "与服务器通讯失败,您可能没有连接到网络。等待发送队列" +
  102. user_wbw_data_buffer.length +
  103. "<button onclick='user_wbw_commit()'>重试</button>"
  104. );
  105. break;
  106. case "notmodified":
  107. break;
  108. default:
  109. break;
  110. }
  111. });
  112. }