rpt_tpl_field_map.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. 'use strict'
  2. let fieldMapTreeOprObj = {
  3. treeObj : null,
  4. currentNode: null,
  5. dataTypeDef: ['string', 'int32', 'int64', 'double', 'currency', 'date', 'image'],
  6. iniTree: function(rptTpl) {
  7. var me = this;
  8. let fieldMapList = me.buildTreeData(rptTpl);
  9. me.treeObj = $.fn.zTree.init($("#field_map_tree_reversed"), fieldMapSetting, fieldMapList);
  10. me.treeObj.expandAll(true);
  11. },
  12. buildTreeData: function (rptTpl) {
  13. let rst = [];
  14. let private_setSubFields = function (parent, fieldList) {
  15. for (let field of fieldList) {
  16. parent.items.push(field);
  17. }
  18. }
  19. if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) {
  20. rst.push({Name: JV.NODE_DISCRETE_FIELDS, items: [], isParent: true});
  21. private_setSubFields(rst[rst.length - 1], rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS])
  22. }
  23. if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
  24. rst.push({Name: JV.NODE_MASTER_FIELDS, items: [], isParent: true});
  25. private_setSubFields(rst[rst.length - 1], rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS])
  26. }
  27. if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
  28. rst.push({Name: JV.NODE_DETAIL_FIELDS, items: [], isParent: true});
  29. private_setSubFields(rst[rst.length - 1], rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS])
  30. }
  31. return rst;
  32. },
  33. copySelectedFieldList: function () {
  34. let me = this, rst = [];
  35. let nodes = me.treeObj.getNodes();
  36. for (let node of nodes) {
  37. let item = {Name: node.Name, items: [], isParent: true};
  38. if (node.items) {
  39. for (let subNode of node.items) {
  40. let subItem = me.createMapFieldByNode(subNode);
  41. item.items.push(subItem);
  42. }
  43. }
  44. rst.push(item)
  45. }
  46. return rst;
  47. },
  48. onClick: function (event,treeId,treeNode) {
  49. let me = fieldMapTreeOprObj;
  50. me.currentNode = treeNode;
  51. //then refresh the field map tab properties
  52. //数据类型
  53. switch (me.dataTypeDef.indexOf(treeNode[JV.PROP_DATA_TYPE])) {
  54. case 0:
  55. $("#fieldDataTypeSelection").get(0).selectedIndex = 0;
  56. break;
  57. case 1:
  58. case 2:
  59. case 3:
  60. case 4:
  61. $("#fieldDataTypeSelection").get(0).selectedIndex = 1;
  62. break;
  63. case 5:
  64. $("#fieldDataTypeSelection").get(0).selectedIndex = 2;
  65. break;
  66. case 6:
  67. $("#fieldDataTypeSelection").get(0).selectedIndex = 3;
  68. break;
  69. default:
  70. $("#fieldDataTypeSelection").get(0).selectedIndex = 0;
  71. break;
  72. }
  73. //映射指标
  74. },
  75. onBeforeRemove: function(treeId, treeNode){
  76. if (treeNode.level === 0) {
  77. return false;
  78. }
  79. return true;
  80. },
  81. beforeRename: function(treeId, treeNode, newName, isCancel) {
  82. if (isCancel) {
  83. return true;
  84. }
  85. if (treeNode.level === 0) {
  86. return false;
  87. }
  88. return true;
  89. },
  90. onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
  91. let rst = true;
  92. if (treeId === 'selectable_field_tree_reversed' || targetNode.level === 0 || moveType === 'inner') {
  93. rst = false;
  94. } else {
  95. //
  96. }
  97. return rst;
  98. },
  99. onRemove: function () {
  100. //
  101. },
  102. onRename: function () {
  103. //
  104. },
  105. extractFieldMaps: function (rptTpl) {
  106. let me = this;
  107. for (let rootNode of me.treeObj.getNodes()) {
  108. rptTpl[JV.NODE_FIELD_MAP][rootNode.Name] = [];
  109. for (let mappingFieldNode of rootNode.items) {
  110. rptTpl[JV.NODE_FIELD_MAP][rootNode.Name].push(me.createMapFieldByNode(mappingFieldNode));
  111. }
  112. }
  113. },
  114. createMapFieldByNode: function (node) {
  115. let rst = {};
  116. rst[JV.PROP_ID] = node[JV.PROP_ID];
  117. rst[JV.PROP_NAME] = node[JV.PROP_NAME];
  118. rst[JV.PROP_DATA_TYPE] = node[JV.PROP_DATA_TYPE];
  119. rst.mapExpression = node.mapExpression;
  120. rst.adHocFormula = node.adHocFormula;
  121. rst.descr = node.descr;
  122. return rst;
  123. }
  124. };
  125. let selectableFiledTreeOprObj = {
  126. treeObj : null,
  127. currentNode: null,
  128. iniTree: function() {
  129. let me = this, params = {};
  130. params.userId = userID;
  131. CommonAjax.postEx("report_tpl_api/getMappingFields", params, 20000, true, function(result){
  132. let showRst = [];
  133. for (let item of result) {
  134. if (item.items.length > 0) {
  135. showRst.push(item);
  136. }
  137. }
  138. me.treeObj = $.fn.zTree.init($("#selectable_field_tree_reversed"), selectableFieldSetting, showRst);
  139. me.treeObj.expandAll(true);
  140. showRst = null;
  141. }, null, null
  142. );
  143. },
  144. onClick: function (event,treeId,treeNode) {
  145. let me = fieldMapTreeOprObj;
  146. me.currentNode = treeNode;
  147. },
  148. onBeforeDrag: function (treeId, treeNodes) {
  149. let rst = true;
  150. for (let node of treeNodes) {
  151. if (node.level === 0) {
  152. rst = false;
  153. break;
  154. }
  155. }
  156. return rst;
  157. },
  158. onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
  159. let rst = true;
  160. if (treeId === 'field_map_tree_reversed') {
  161. if ( (targetNode.level === 0 && moveType !== 'inner') || (targetNode.level > 0 && moveType === 'inner')) {
  162. rst = false;
  163. }
  164. } else {
  165. rst = false;
  166. }
  167. return rst;
  168. },
  169. addDiyDom: function (treeId, treeNode) {
  170. if (treeNode.level > 0) {
  171. let aObj = $("#" + treeNode.tId + "_a");
  172. if ($("#diyBtn_"+treeNode.ID).length>0) return;
  173. let editStr = "<span>&nbsp(" + treeNode.DataType + ")</span>";
  174. aObj.append(editStr);
  175. let btn = $("#diyBtn_"+treeNode.ID);
  176. if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
  177. }
  178. }
  179. };
  180. let discreteFieldParamTreeOprObj = {
  181. treeObj : null,
  182. currentNode: null,
  183. iniTree: function(rptTpl) {
  184. var me = this;
  185. let fieldMapList = me.buildTreeData(rptTpl);
  186. me.treeObj = $.fn.zTree.init($("#tpl_discrete_fields_params_reversed"), discreteFieldParamSetting, fieldMapList);
  187. me.treeObj.expandAll(true);
  188. },
  189. buildTreeData: function(rptTpl){
  190. let rst = [];
  191. let disFieldNode = {Name: JV.NODE_NO_MAPPING_FIELDS, items: [], isParent: true};
  192. let disParamNode = {Name: JV.NODE_DISCRETE_PARAMS, items: [], isParent: true};
  193. rst.push(disFieldNode);
  194. rst.push(disParamNode);
  195. //rptTpl[JV.NODE_NO_MAPPING_FIELDS]
  196. //rptTpl[JV.NODE_DISCRETE_PARAMS]
  197. return rst;
  198. },
  199. addHoverDom: function(treeId, treeNode) {
  200. let me = discreteFieldParamTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  201. if (treeNode.level > 0 || $("#addBtn_"+treeNode.tId).length > 0) return;
  202. let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  203. sObj.after(addStr);
  204. let btn = $("#addBtn_"+treeNode.tId);
  205. if (btn) btn.bind("click", function(){
  206. //
  207. });
  208. },
  209. removeHoverDom: function(treeId, treeNode) {
  210. $("#addBtn_"+treeNode.tId).unbind().remove();
  211. },
  212. onBeforeRemove: function(treeId, treeNode){
  213. let rst = true;
  214. if (treeNode.isParent) {
  215. rst = false;
  216. }
  217. return rst;
  218. },
  219. beforeRename: function(treeId, treeNode, newName, isCancel) {
  220. let rst = true;
  221. if (treeNode.isParent && !isCancel) {
  222. rst = false;
  223. }
  224. return rst;
  225. },
  226. onBeforeDrag: function (treeId, treeNodes) {
  227. //
  228. },
  229. onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
  230. // let rst = false;
  231. // if (targetNode.tId && targetNode.tId.indexOf("tpl_data_info_reversed") >= 0 && (!(targetNode.isParent && moveType !== 'inner')) ) {
  232. // if (targetNode.level === 0) {
  233. // if (targetNode.Name !== "离散信息" && moveType === 'inner') {
  234. // rst = true;
  235. // }
  236. // } else {
  237. // let parentNode = targetNode.getParentNode();
  238. // if (parentNode.Name === "离散信息") {
  239. // if (targetNode.Name === "Fields") {
  240. // rst = true;
  241. // }
  242. // } else if (parentNode.Name === "Fields") {
  243. // rst = true;
  244. // }
  245. // }
  246. // }
  247. // return rst;
  248. },
  249. onRemove: function () {
  250. //
  251. },
  252. onRename: function () {
  253. //
  254. }
  255. };