rpt_tpl_calculation.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. /**
  2. * Created by Tony on 2017/7/7.
  3. */
  4. let calculationTreeOprObj = {
  5. treeObj: null,
  6. extCodeTreeObj: null,
  7. currentNode: null,
  8. currentExtCodeNode: null,
  9. iniTree: function (rptTpl) {
  10. var me = this;
  11. let fieldMapList = me.buildTreeData(rptTpl);
  12. me.treeObj = $.fn.zTree.init(
  13. $("#rpt_tpl_formulas"),
  14. caculationSetting,
  15. fieldMapList
  16. );
  17. me.treeObj.expandAll(true);
  18. $("#exprDetail")[0].style.display = "none";
  19. },
  20. iniExtCodeTpl: function () {
  21. let me = this,
  22. params = {};
  23. CommonAjax.postEx(
  24. "report_tpl_api/getExtCodeTpl",
  25. params,
  26. 10000,
  27. true,
  28. function (result) {
  29. me.extCodeTreeObj = $.fn.zTree.init(
  30. $("#rpt_ext_code_tpl"),
  31. extCodeSetting,
  32. result
  33. );
  34. let nodes = me.extCodeTreeObj.getNodes();
  35. for (let node of nodes) {
  36. me.extCodeTreeObj.expandNode(node, true, false);
  37. }
  38. // me.extCodeTreeObj.expandAll(true);
  39. },
  40. null,
  41. null
  42. );
  43. },
  44. buildRunType: function () {
  45. let et = $("#exprRunType");
  46. et.append(
  47. "<option value='" + JV.RUN_TYPE_BEFORE_PAGING + "'>预运行</option>"
  48. );
  49. et.append(
  50. "<option value='" + JV.RUN_TYPE_BEFORE_OUTPUT + "'>实时运行</option>"
  51. );
  52. et.append(
  53. "<option value='" +
  54. JV.RUN_TYPE_BEFORE_ANALYZING +
  55. "'>数据分析前运行</option>"
  56. );
  57. et.append(
  58. "<option value='" +
  59. JV.RUN_TYPE_BEFORE_COMBINE +
  60. "'>合并单元格前事件</option>"
  61. );
  62. et.append(
  63. "<option value='" +
  64. JV.RUN_TYPE_AFTER_COMBINE +
  65. "'>合并单元格后事件</option>"
  66. );
  67. et.append(
  68. "<option value='" +
  69. JV.RUN_TYPE_BEFORE_GROUP_TEXT_OUT +
  70. "'>分组text输出前事件</option>"
  71. );
  72. },
  73. buildTreeData: function (rptTpl) {
  74. let me = this,
  75. rst = { Name: "计算式", items: [] };
  76. if (rptTpl[JV.NODE_FORMULAS]) {
  77. for (let cItem of rptTpl[JV.NODE_FORMULAS]) {
  78. let node = {};
  79. me.copyContent(cItem, node);
  80. node[JV.PROP_NAME] = cItem[JV.PROP_NAME];
  81. node[JV.PROP_RUN_TYPE] = cItem[JV.PROP_RUN_TYPE];
  82. node[JV.PROP_EXPRESSION] = cItem[JV.PROP_EXPRESSION];
  83. node["format"] = cItem["format"] ? cItem["format"] : "";
  84. rst.items.push(node);
  85. }
  86. }
  87. return rst;
  88. },
  89. copyContent: function (source, target) {
  90. target[JV.PROP_NAME] = source[JV.PROP_NAME];
  91. target[JV.PROP_RUN_TYPE] = source[JV.PROP_RUN_TYPE];
  92. target[JV.PROP_EXPRESSION] = source[JV.PROP_EXPRESSION];
  93. target["format"] = source["format"] ? source["format"] : "";
  94. },
  95. changeRunType: function (dom) {
  96. let me = calculationTreeOprObj;
  97. if (me.currentNode) {
  98. me.currentNode[JV.PROP_RUN_TYPE] = dom.value;
  99. }
  100. },
  101. setExtCodeTemplate: function (dom) {
  102. let me = calculationTreeOprObj;
  103. if (me.currentExtCodeNode && me.currentExtCodeNode["Template"] !== "") {
  104. $("#exprContent")[0].value = me.currentExtCodeNode["Template"];
  105. editor2.setValue($("#exprContent")[0].value);
  106. }
  107. },
  108. addExtCodeTemplate: function (dom) {
  109. let me = calculationTreeOprObj;
  110. if (me.currentExtCodeNode && me.currentExtCodeNode["Template"] !== "") {
  111. $("#exprContent")[0].value += me.currentExtCodeNode["Template"];
  112. editor2.setValue($("#exprContent")[0].value);
  113. }
  114. },
  115. changeFormat: function (dom) {
  116. let me = calculationTreeOprObj;
  117. if (me.currentNode) {
  118. me.currentNode["format"] = dom.value;
  119. }
  120. },
  121. changeExpression: function (dom) {
  122. let me = calculationTreeOprObj;
  123. if (me.currentNode) {
  124. me.currentNode[JV.PROP_EXPRESSION] = dom.value;
  125. }
  126. },
  127. onClick: function (event, treeId, treeNode) {
  128. let me = calculationTreeOprObj;
  129. me.currentNode = treeNode;
  130. if (treeNode.level === 0) {
  131. $("#exprDetail")[0].style.display = "none";
  132. } else {
  133. $("#exprDetail")[0].style.display = "";
  134. if (treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_BEFORE_PAGING) {
  135. $("#exprRunType")[0].selectedIndex = 0;
  136. } else if (treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_BEFORE_OUTPUT) {
  137. $("#exprRunType")[0].selectedIndex = 1;
  138. } else if (treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_BEFORE_ANALYZING) {
  139. $("#exprRunType")[0].selectedIndex = 2;
  140. } else if (treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_BEFORE_COMBINE) {
  141. $("#exprRunType")[0].selectedIndex = 3;
  142. } else if (treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_AFTER_COMBINE) {
  143. $("#exprRunType")[0].selectedIndex = 4;
  144. } else if (
  145. treeNode[JV.PROP_RUN_TYPE] === JV.RUN_TYPE_BEFORE_GROUP_TEXT_OUT
  146. ) {
  147. $("#exprRunType")[0].selectedIndex = 5;
  148. } else {
  149. $("#exprRunType")[0].selectedIndex = 2;
  150. }
  151. $("#exprFormat")[0].value = treeNode["format"] ? treeNode["format"] : "";
  152. $("#exprContent")[0].value = treeNode[JV.PROP_EXPRESSION];
  153. editor2.setValue($("#exprContent")[0].value);
  154. }
  155. },
  156. onExtCodeTreeClick: function (event, treeId, treeNode) {
  157. let me = calculationTreeOprObj;
  158. me.currentExtCodeNode = treeNode;
  159. },
  160. onBeforeRemove: function (treeId, treeNode) {
  161. let rst = false;
  162. if (treeNode.level > 0) {
  163. rst = confirm("请确认是否真的删除?");
  164. }
  165. return rst;
  166. },
  167. beforeRename: function (treeId, treeNode, newName, isCancel) {
  168. if (isCancel) {
  169. return true;
  170. }
  171. if (treeNode.level === 0) {
  172. return false;
  173. }
  174. return true;
  175. },
  176. onBeforeDrop: function (treeId, treeNodes, targetNode, moveType) {
  177. let rst = false;
  178. if (
  179. targetNode.level === 1 &&
  180. (moveType === "next" || moveType === "prev")
  181. ) {
  182. return true;
  183. }
  184. return rst;
  185. },
  186. addHoverDom: function (treeId, treeNode) {
  187. let me = calculationTreeOprObj,
  188. sObj = $("#" + treeNode.tId + "_span");
  189. if (
  190. treeNode.editNameFlag ||
  191. $("#addBtn_" + treeNode.tId).length > 0 ||
  192. treeNode.level > 0
  193. ) {
  194. return;
  195. } else {
  196. let addStr =
  197. "<span class='button add' id='addBtn_" +
  198. treeNode.tId +
  199. "' title='新增' onfocus='this.blur();'></span>";
  200. sObj.after(addStr);
  201. let btn = $("#addBtn_" + treeNode.tId);
  202. btn.bind("click", function () {
  203. let newNodes = [],
  204. node = {};
  205. node[JV.PROP_NAME] = "新计算式";
  206. node[JV.PROP_RUN_TYPE] = JV.RUN_TYPE_BEFORE_PAGING;
  207. node[JV.PROP_EXPRESSION] = "";
  208. node["format"] = "";
  209. newNodes.push(node);
  210. me.treeObj.addNodes(treeNode, -1, newNodes, true);
  211. });
  212. }
  213. },
  214. removeHoverDom: function (treeId, treeNode) {
  215. $("#addBtn_" + treeNode.tId)
  216. .unbind()
  217. .remove();
  218. },
  219. extractCalculation: function (rptTpl) {
  220. let me = this,
  221. newCaclList = [];
  222. let topNode = me.treeObj.getNodes()[0];
  223. for (let node of topNode.items) {
  224. let item = {};
  225. me.copyContent(node, item);
  226. newCaclList.push(item);
  227. }
  228. rptTpl[JV.NODE_FORMULAS] = newCaclList;
  229. },
  230. };
  231. $(document).ready(function () {
  232. editor2.on("change", function () {
  233. let me = calculationTreeOprObj;
  234. if (me.currentNode) {
  235. me.currentNode[JV.PROP_EXPRESSION] = editor2.getValue();
  236. }
  237. });
  238. });