CMSFormField.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. MWF.xApplication.Organization.Selector = MWF.xApplication.Organization.Selector || {};
  2. MWF.xDesktop.requireApp("Organization", "Actions.RestActions", null, false);
  3. MWF.xDesktop.requireApp("Organization", "Selector.Department", null, false);
  4. MWF.xApplication.Organization.Selector.CMSFormField = new Class({
  5. Extends: MWF.xApplication.Organization.Selector.Department,
  6. options: {
  7. "style": "default",
  8. "count": 0,
  9. "title": "Select Field",
  10. "fieldType": "",
  11. "values": [],
  12. "names": [],
  13. "application": "",
  14. "form" : "",
  15. "expand": false
  16. },
  17. getFields : function(){
  18. var dataTypes = {
  19. "string": ["htmledit", "radio", "select", "textarea", "textfield"],
  20. "person": ["personfield"],
  21. "date": ["calender"],
  22. "number": ["number"],
  23. "array": ["checkbox"]
  24. };
  25. fieldList = [];
  26. debugger;
  27. Object.each( this.relativeFormData.json.moduleList, function(moudle){
  28. var key = "";
  29. for (k in dataTypes){
  30. if (dataTypes[k].indexOf( ( moudle.moduleName || moudle.type ).toLowerCase())!=-1){
  31. key = k;
  32. break;
  33. }
  34. }
  35. if (key){
  36. fieldList.push({
  37. "name": moudle.id,
  38. "dataType": key
  39. });
  40. }
  41. }.bind(this));
  42. return fieldList;
  43. },
  44. loadSelectItems: function(addToNext){
  45. if( this.options.form ){
  46. this.action.getCMSForm(this.options.form, function(json){
  47. this.relativeFormData = (json.data.data) ? JSON.decode(MWF.decodeJsonString(json.data.data)): null;
  48. this.getFields().each( function( f ){
  49. if( !this.options.fieldType || this.options.fieldType == f.dataType ){
  50. f.id = f.name;
  51. var item = this._newItem(f, this, this.itemAreaNode);
  52. }
  53. }.bind(this));
  54. }.bind(this))
  55. }else{
  56. if (this.options.application){
  57. this.action.listCMSFormField(this.options.application, function(json){
  58. this.fieldData = json.data;
  59. if (this.options.fieldType){
  60. json.data[this.options.fieldType].each(function(data){
  61. data.id = data.name;
  62. var item = this._newItem(data, this, this.itemAreaNode);
  63. }.bind(this));
  64. }else{
  65. Object.each(json.data, function(v, k){
  66. var category = this._newItemCategory({"name": k, "data": v}, this, this.itemAreaNode);
  67. }.bind(this));
  68. }
  69. }.bind(this));
  70. }
  71. }
  72. },
  73. _scrollEvent: function(y){
  74. return true;
  75. },
  76. _getChildrenItemIds: function(){
  77. return null;
  78. },
  79. _newItemCategory: function(data, selector, item, level){
  80. return new MWF.xApplication.Organization.Selector.CMSFormField.ItemCategory(data, selector, item, level)
  81. },
  82. _listItemByKey: function(callback, failure, key){
  83. var data = [];
  84. if (this.options.fieldType){
  85. data = this.fieldData[this.options.fieldType];
  86. }else{
  87. Object.each(this.fieldData, function(v, k){
  88. data = (data.length) ? data.concat(v) : v
  89. }.bind(this));
  90. }
  91. var searchData = [];
  92. data.each(function(d){
  93. if (d.name.toLowerCase().indexOf(key.toLowerCase())!=-1) searchData.push(d);
  94. }.bind(this));
  95. if (callback) callback.apply(this, [{"data": searchData}]);
  96. //if (callback) callback({"data": {"name": key, "id": key}});
  97. },
  98. _getItem: function(callback, failure, id, async){
  99. if (callback) callback({"data": {"name": id, "id": id}});
  100. },
  101. _newItemSelected: function(data, selector, item){
  102. return new MWF.xApplication.Organization.Selector.CMSFormField.ItemSelected(data, selector, item)
  103. },
  104. _listItemByPinyin: function(callback, failure, key){
  105. this._listItemByKey(callback, failure, key);
  106. },
  107. _newItem: function(data, selector, container, level){
  108. return new MWF.xApplication.Organization.Selector.CMSFormField.Item(data, selector, container, level);
  109. }
  110. });
  111. MWF.xApplication.Organization.Selector.CMSFormField.Item = new Class({
  112. Extends: MWF.xApplication.Organization.Selector.Person.Item,
  113. _getShowName: function(){
  114. return this.data.name;
  115. },
  116. _setIcon: function(){
  117. this.iconNode.setStyle("background-image", "url("+"/x_component_Organization/Selector/$Selector/default/icon/processicon.png)");
  118. },
  119. loadSubItem: function(){
  120. return false;
  121. // this.children = new Element("div", {
  122. // "styles": this.selector.css.selectorItemCategoryChildrenNode
  123. // }).inject(this.node, "after");
  124. // this.children.setStyle("display", "block");
  125. //// if (!this.selector.options.expand) this.children.setStyle("display", "none");
  126. //
  127. // this.selector.action.listProcess(function(subJson){
  128. // subJson.data.each(function(subData){
  129. // var category = this.selector._newItem(subData, this.selector, this.children, this.level+1);
  130. // }.bind(this));
  131. // }.bind(this), null, this.data.id);
  132. }
  133. });
  134. MWF.xApplication.Organization.Selector.CMSFormField.ItemSelected = new Class({
  135. Extends: MWF.xApplication.Organization.Selector.Person.ItemSelected,
  136. _getShowName: function(){
  137. return this.data.name;
  138. },
  139. _setIcon: function(){
  140. this.iconNode.setStyle("background-image", "url("+"/x_component_Organization/Selector/$Selector/default/icon/processicon.png)");
  141. }
  142. });
  143. MWF.xApplication.Organization.Selector.CMSFormField.ItemCategory = new Class({
  144. Extends: MWF.xApplication.Organization.Selector.Identity.ItemCompanyCategory,
  145. _setIcon: function(){
  146. this.iconNode.setStyle("background-image", "url("+"/x_component_Organization/Selector/$Selector/default/icon/applicationicon.png)");
  147. },
  148. loadSub: function(callback){
  149. if (!this.loaded){
  150. var subJson = this.selector.fieldData[this.data.name];
  151. //this.selector.action.listProcess(function(subJson){
  152. subJson.each(function(subData){
  153. //subData.applicationName = this.data.name;
  154. //subData.application = this.data.id;
  155. var category = this.selector._newItem(subData, this.selector, this.children, this.level+1);
  156. }.bind(this));
  157. this.loaded = true;
  158. if (callback) callback();
  159. //}.bind(this), null, this.data.id);
  160. }else{
  161. if (callback) callback();
  162. }
  163. },
  164. _hasChild: function(){
  165. var d = this.selector.fieldData[this.data.name];
  166. return (d && d.length);
  167. }
  168. });