rpt_tpl_field_map.js 9.8 KB

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