update.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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),getNodeText(xWord,'status'));
  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,getNodeText(xAllWord[i],'status'));
  34. }
  35. }
  36. function user_wbw_push(block_id, wid, data,status=7) {
  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. objData.status = status;
  46. user_wbw_data_buffer.push(objData);
  47. }
  48. var commitTimes = 0;
  49. function user_wbw_commit() {
  50. if (user_wbw_data_buffer.length == 0) {
  51. return;
  52. }
  53. var jqxhr = $.post(
  54. "../uwbw/update.php",
  55. {
  56. data: JSON.stringify(user_wbw_data_buffer),
  57. },
  58. function (data, status) {
  59. try {
  60. let result = JSON.parse(data);
  61. if (result.status == 0) {
  62. ntf_show("user wbw " + result.message);
  63. user_wbw_data_buffer = new Array();
  64. } else {
  65. ntf_show("user wbw error" + result.message);
  66. }
  67. } catch (e) {
  68. console.error("user_wbw_update:" + e + " data:" + data);
  69. ntf_show("wbw fail");
  70. }
  71. }
  72. );
  73. jqxhr.done(function () {
  74. notify_bar.hide();
  75. });
  76. jqxhr.fail(function (xhr, error, data) {
  77. switch (xhr.status) {
  78. case 500:
  79. if (commitTimes < 5) {
  80. commitTimes++;
  81. notify_bar.show("发送失败,重试。第" + commitTimes + "次。");
  82. user_wbw_commit();
  83. } else {
  84. notify_bar.show("重试次数过多,请稍后再试。");
  85. commitTimes = 0;
  86. }
  87. break;
  88. default:
  89. notify_bar.show(xhr.statusText);
  90. break;
  91. }
  92. switch (error) {
  93. case "timeout":
  94. notify_bar.show(
  95. "服务器长时间没有回应。等待发送队列" +
  96. user_wbw_data_buffer.length +
  97. "<button onclick='user_wbw_commit()'>重试</button>"
  98. );
  99. break;
  100. case "error":
  101. notify_bar.show(
  102. "与服务器通讯失败,您可能没有连接到网络。等待发送队列" +
  103. user_wbw_data_buffer.length +
  104. "<button onclick='user_wbw_commit()'>重试</button>"
  105. );
  106. break;
  107. case "notmodified":
  108. break;
  109. default:
  110. break;
  111. }
  112. });
  113. }