tfHelperAsync_old.js.soonsu 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. var submitArray = new Array();
  2. function asyncSend(transactionId, paramPath, resultPath, responseHandler, errorHandler) {
  3. var submitUUID = "" + getRandomSubmitUUID();
  4. var submit = TFHttpService.createInstance(submitUUID);
  5. submit.URL = getActionURL(transactionId);
  6. submit.mediaType = "application/x-www-form-urlencoded";
  7. submit.method = "POST";
  8. submit.onResponse = "defualtResponseHandler";
  9. submit.onError = "defualtErrorHandler";
  10. if (submitArray == undefined || submitArray == null) {
  11. submitArray = new Array();
  12. }
  13. var submitItem = new Object();
  14. submitItem.trid = transactionId;
  15. submitItem.resultPath = resultPath;
  16. submitItem.submitUUID = submitUUID;
  17. submitItem.responseHandler = responseHandler;
  18. submitItem.errorHandler = errorHandler;
  19. submitArray.push(submitItem);
  20. submit.send(paramPath);
  21. }
  22. function defualtResponseHandler(submitUUID, response, responseType) {
  23. if (submitArray == null || submitArray.length <= 0) {
  24. messageBox("submit ��� ó�� �� ������ �߻��Ͽ����ϴ�.", "C");
  25. return;
  26. }
  27. var submitItem = getSubmitItem(submitUUID);
  28. bindInstance(submitUUID, response, responseType, submitItem.resultPath);
  29. try {
  30. eval(submitItem.responseHandler+"()");
  31. } catch (e) {
  32. messageBox(e.message, "C");
  33. return;
  34. }
  35. }
  36. function defualtErrorHandler(submitUUID, errorInfo) {
  37. var submitItem = getSubmitItem(submitUUID);
  38. if (typeof(submitItem.errorHandler) != "undefined") {
  39. try {
  40. eval(submitItem.errorHandler);
  41. } catch (e) {
  42. messageBox(e.message, "C");
  43. return;
  44. }
  45. } else {
  46. messageBox(errorInfo, "C");
  47. return;
  48. }
  49. }
  50. function bindInstance(submitUUID, response, responseType, resultPath) {
  51. var parentNodePath = resultPath.substring(0, resultPath.lastIndexOf("/"));
  52. var lastPath = resultPath.split(/\
  53. model.removeNode(parentNodePath);
  54. model.makeNode(parentNodePath);
  55. model.createChild("xforms:instance", "id:"+submitUUID);
  56. if (responseType == "xml") {
  57. if(model.instances.item(submitUUID).loadXML(response)) {
  58. var targetNode = model.instances.item(0).selectSingleNode(parentNodePath);
  59. var sourceNode = model.instances.item(submitUUID).selectSingleNode("//" + lastPath + "/..");
  60. if (targetNode != undefined && sourceNode != undefined) {
  61. var sourceChildNodes = sourceNode.childNodes;
  62. while (childNode = sourceChildNodes.nextNode()) {
  63. targetNode.appendChild(childNode);
  64. }
  65. }
  66. model.removeChild(submitUUID);
  67. }
  68. }
  69. model.refresh();
  70. }
  71. function bindInstanceOld(submitUUID, response, responseType, resultPath) {
  72. model.removeNode(resultPath);
  73. model.makeNode(resultPath);
  74. var lastPath = resultPath.split(/\
  75. var xml;
  76. if (responseType == "xml") {
  77. xml = stringToXML(response);
  78. copyNodeToInstance(xml, resultPath, model.instances.item(0), resultPath);
  79. }
  80. model.refresh();
  81. }
  82. function copyNodeToInstance(srcXML, srcPath, destInstance, destPath) {
  83. if (srcXML == undefined) {
  84. return;
  85. }
  86. if (destInstance == undefined) {
  87. return;
  88. }
  89. model.removeNode(destPath);
  90. model.makeNode(destPath);
  91. var lastPath = destPath.split(/\
  92. var srcNodeList = srcXML.getElementsByTagName(lastPath);
  93. for (var idx = 0 ; idx < srcNodeList.length ; idx++) {
  94. var resultPath = srcPath + "[" + idx + "]";
  95. if (idx == 0 ) {
  96. resultPath = srcPath;
  97. }
  98. model.makeNode(resultPath);
  99. var childNodes = srcNodeList[idx].childNodes;
  100. for (var cIdx = 0 ; cIdx < childNodes.length ; cIdx++) {
  101. var child = childNodes[cIdx];
  102. var childPath = resultPath + "/" + child.nodeName;
  103. model.makeNode(childPath);
  104. model.setValue(childPath, child.text);
  105. }
  106. }
  107. model.refresh();
  108. }
  109. function stringToXML(xmlStr) {
  110. if (typeof htmlwindow.DOMParser != "undefined") {
  111. return ( new htmlwindow.DOMParser() ).parseFromString(xmlStr, "text/xml");
  112. } else if (typeof htmlwindow.ActiveXObject != "undefined" && new htmlwindow.ActiveXObject("Microsoft.XMLDOM")) {
  113. var xmlDoc = new htmlwindow.ActiveXObject("Microsoft.XMLDOM");
  114. xmlDoc.async = "false";
  115. xmlDoc.loadXML(xmlStr);
  116. return xmlDoc;
  117. } else {
  118. throw new Error("No XML parser found");
  119. }
  120. return null;
  121. }
  122. function getSubmitItem(submitUUID) {
  123. if (submitUUID == undefined || submitUUID == "") {
  124. messageBox("submitItem ȹ�� ����!", "C");
  125. return;
  126. }
  127. if (submitArray.length <= 0) {
  128. messageBox("submitArray is Empty!", "C");
  129. return;
  130. }
  131. for (var idx = 0 ; idx < submitArray.length ; idx++) {
  132. var curItem = submitArray[idx];
  133. if (submitUUID == curItem.submitUUID) {
  134. submitArray[idx] = null;
  135. makeFullArray(submitArray);
  136. return curItem;
  137. }
  138. }
  139. }
  140. function makeFullArray(array) {
  141. for (var idx = 0 ; idx < array.length ; idx++) {
  142. if (array[idx] == undefined || array[idx] == null) {
  143. var lastItem = array.pop();
  144. if (lastItem != null) {
  145. array[idx] = lastItem;
  146. }
  147. }
  148. }
  149. }
  150. function getRandomSubmitUUID() {
  151. var s = [], itoh = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
  152. for (var i = 0; i <36; i++) {
  153. s[i] = Math.floor(Math.random()*0x10);
  154. }
  155. s[14] = 4;
  156. s[19] = (s[19] & 0x3) | 0x8;
  157. for (var i = 0; i <36; i++) {
  158. s[i] = itoh[s[i]];
  159. }
  160. return s.join('');
  161. }