Template.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. MWF.xApplication.CRM = MWF.xApplication.CRM || {};
  2. MWF.xApplication.CRM.Template = MWF.xApplication.CRM.Template || {};
  3. MWF.xApplication.CRM.Template.Select = new Class({
  4. Extends: MWF.widget.Common,
  5. Implements: [Options, Events],
  6. options: {
  7. "style": "default",
  8. "width": "800",
  9. "height": "100%"
  10. },
  11. initialize: function (node ,explorer, actions, options) {
  12. this.setOptions(options);
  13. this.app = explorer.app;
  14. this.explorer = explorer;
  15. this.lp = this.app.lp.template;
  16. this.actions = this.app.restActions;
  17. this.path = "/x_component_CRM/Template/";
  18. this.loadCss();
  19. this.node = $(node);
  20. this.actions = actions;
  21. },
  22. loadCss: function () {
  23. this.cssPath = "/x_component_CRM/$Template/" + this.options.style + "/css.wcss";
  24. this._loadCss();
  25. },
  26. load:function(data,callback){
  27. this.data = data || {};
  28. var _width = this.options.width?this.options.width:230;
  29. var _height = this.options.height?this.options.height:30;
  30. var _available = this.options.available?this.options.available:false;
  31. if(this.node)this.node.empty();
  32. this.selectValueDiv = new Element("div.selectValueDiv",{
  33. "styles":this.css.selectValueDiv,
  34. "id":this.node.get("id")+"Value",
  35. "text":this.lp.defaultSelect
  36. }).inject(this.node);
  37. this.selectArrowDiv = new Element("div.selectArrowDiv",{
  38. "styles":this.css.selectArrowDiv
  39. }).inject(this.node);
  40. this.selectArrowDiv.setStyles({
  41. "width":_height+"px",
  42. "height":_height+"px"
  43. });
  44. this.node.setStyles(this.css.selectDiv);
  45. this.node.setStyles({
  46. "width":_width+"px",
  47. "height":_height+"px",
  48. "background-color":_available?"#999999":""
  49. });
  50. this.node.set("available",_available);
  51. this.selectValueDiv.setStyles({
  52. "width":(_width-_height-10)+"px",
  53. "height":_height+"px",
  54. "line-height":_height+"px"
  55. });
  56. this.explorer.allArrowArr.push(this.selectArrowDiv);
  57. this.setList(this.data,callback);
  58. },
  59. setList:function(data,callback){
  60. data = data || {};
  61. var _self = this;
  62. this.node.addEvents({
  63. "click":function(e){
  64. if(_self.node.get("available")=="true") return false;
  65. _self.selectArrowDiv.setStyles({
  66. "background":"url(/x_component_CRM/$Template/default/icons/arrow-up.png) no-repeat center"
  67. });
  68. if(_self.explorer.listContentDiv)_self.explorer.listContentDiv.destroy();
  69. if(_self.explorer.listDiv)_self.explorer.listDiv.destroy();
  70. _self.explorer.listContentDiv = new Element("div.listContentDiv",{"styles":_self.css.listContentDiv,"id":"listContentDiv"}).inject(_self.node);
  71. _self.explorer.listContentDiv.setStyles({
  72. "width":_self.node.getSize().x+"px",
  73. "margin-top":(_self.node.getSize().y)+"px",
  74. "z-index":"300"
  75. });
  76. _self.listDiv = new Element("div.listDiv",{"styles":_self.css.listDiv}).inject(_self.explorer.listContentDiv);
  77. _self.app.setScrollBar(_self.listDiv);
  78. data.childNodes.unshift({
  79. "configname":_self.lp.defaultSelect
  80. });
  81. data.childNodes.each(function(d){
  82. var listLi = new Element("li.listLi",{
  83. "styles":_self.css.listLi,
  84. "text": d.configname
  85. }).inject(_self.listDiv);
  86. listLi.setStyles({
  87. "color":_self.selectValueDiv.get("text")==listLi.get("text")?"#ffffff":"",
  88. "background-color":_self.selectValueDiv.get("text")==listLi.get("text")?"#3d77c1":""
  89. });
  90. listLi.addEvents({
  91. "click":function(ev){
  92. _self.selectValueDiv.set({"text":this.get("text")});
  93. _self.node.set("value",this.get("text"));
  94. _self.explorer.listContentDiv.destroy();
  95. _self.selectArrowDiv.setStyles({"background":"url(/x_component_CRM/$Template/default/icons/arrow.png) no-repeat center"});
  96. if(callback)callback();
  97. ev.stopPropagation();
  98. },
  99. "mouseover":function(){
  100. if(this.get("text") != _self.selectValueDiv.get("text")){
  101. this.setStyles({
  102. "background-color":"#ccc",
  103. "color":"#ffffff"
  104. });
  105. }
  106. },
  107. "mouseout":function(){
  108. if(this.get("text") != _self.selectValueDiv.get("text")){
  109. this.setStyles({
  110. "background-color":"",
  111. "color":""
  112. });
  113. }
  114. }
  115. });
  116. }.bind(_self));
  117. data.childNodes.splice(0,1);
  118. e.stopPropagation();
  119. }.bind(_self)
  120. })
  121. }
  122. });