jquery.datalist.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. var _3=$.data(_2,"datalist").options;
  13. $(_2).datagrid($.extend({},_3,{cls:"datalist"+(_3.lines?" datalist-lines":""),frozenColumns:(_3.frozenColumns&&_3.frozenColumns.length)?_3.frozenColumns:(_3.checkbox?[[{field:"_ck",checkbox:true}]]:undefined),columns:(_3.columns&&_3.columns.length)?_3.columns:[[{field:_3.textField,width:"100%",formatter:function(_4,_5,_6){
  14. return _3.textFormatter?_3.textFormatter(_4,_5,_6):_4;
  15. }}]]}));
  16. };
  17. var _7=$.extend({},$.fn.datagrid.defaults.view,{render:function(_8,_9,_a){
  18. var _b=$.data(_8,"datagrid");
  19. var _c=_b.options;
  20. if(_c.groupField){
  21. var g=this.groupRows(_8,_b.data.rows);
  22. this.groups=g.groups;
  23. _b.data.rows=g.rows;
  24. var _d=[];
  25. for(var i=0;i<g.groups.length;i++){
  26. _d.push(this.renderGroup.call(this,_8,i,g.groups[i],_a));
  27. }
  28. $(_9).html(_d.join(""));
  29. }else{
  30. $(_9).html(this.renderTable(_8,0,_b.data.rows,_a));
  31. }
  32. },renderGroup:function(_e,_f,_10,_11){
  33. var _12=$.data(_e,"datagrid");
  34. var _13=_12.options;
  35. var _14=$(_e).datagrid("getColumnFields",_11);
  36. var _15=[];
  37. _15.push("<div class=\"datagrid-group\" group-index="+_f+">");
  38. if(!_11){
  39. _15.push("<span class=\"datagrid-group-title\">");
  40. _15.push(_13.groupFormatter.call(_e,_10.value,_10.rows));
  41. _15.push("</span>");
  42. }
  43. _15.push("</div>");
  44. _15.push(this.renderTable(_e,_10.startIndex,_10.rows,_11));
  45. return _15.join("");
  46. },groupRows:function(_16,_17){
  47. var _18=$.data(_16,"datagrid");
  48. var _19=_18.options;
  49. var _1a=[];
  50. for(var i=0;i<_17.length;i++){
  51. var row=_17[i];
  52. var _1b=_1c(row[_19.groupField]);
  53. if(!_1b){
  54. _1b={value:row[_19.groupField],rows:[row]};
  55. _1a.push(_1b);
  56. }else{
  57. _1b.rows.push(row);
  58. }
  59. }
  60. var _1d=0;
  61. var _17=[];
  62. for(var i=0;i<_1a.length;i++){
  63. var _1b=_1a[i];
  64. _1b.startIndex=_1d;
  65. _1d+=_1b.rows.length;
  66. _17=_17.concat(_1b.rows);
  67. }
  68. return {groups:_1a,rows:_17};
  69. function _1c(_1e){
  70. for(var i=0;i<_1a.length;i++){
  71. var _1f=_1a[i];
  72. if(_1f.value==_1e){
  73. return _1f;
  74. }
  75. }
  76. return null;
  77. };
  78. }});
  79. $.fn.datalist=function(_20,_21){
  80. if(typeof _20=="string"){
  81. var _22=$.fn.datalist.methods[_20];
  82. if(_22){
  83. return _22(this,_21);
  84. }else{
  85. return this.datagrid(_20,_21);
  86. }
  87. }
  88. _20=_20||{};
  89. return this.each(function(){
  90. var _23=$.data(this,"datalist");
  91. if(_23){
  92. $.extend(_23.options,_20);
  93. }else{
  94. var _24=$.extend({},$.fn.datalist.defaults,$.fn.datalist.parseOptions(this),_20);
  95. _24.columns=$.extend(true,[],_24.columns);
  96. _23=$.data(this,"datalist",{options:_24});
  97. }
  98. _1(this);
  99. if(!_23.options.data){
  100. var _25=$.fn.datalist.parseData(this);
  101. if(_25.total){
  102. $(this).datalist("loadData",_25);
  103. }
  104. }
  105. });
  106. };
  107. $.fn.datalist.methods={options:function(jq){
  108. return $.data(jq[0],"datalist").options;
  109. }};
  110. $.fn.datalist.parseOptions=function(_26){
  111. return $.extend({},$.fn.datagrid.parseOptions(_26),$.parser.parseOptions(_26,["valueField","textField","groupField",{checkbox:"boolean",lines:"boolean"}]));
  112. };
  113. $.fn.datalist.parseData=function(_27){
  114. var _28=$.data(_27,"datalist").options;
  115. var _29={total:0,rows:[]};
  116. $(_27).children().each(function(){
  117. var _2a=$.parser.parseOptions(this,["value","group"]);
  118. var row={};
  119. var _2b=$(this).html();
  120. row[_28.valueField]=_2a.value!=undefined?_2a.value:_2b;
  121. row[_28.textField]=_2b;
  122. if(_28.groupField){
  123. row[_28.groupField]=_2a.group;
  124. }
  125. _29.total++;
  126. _29.rows.push(row);
  127. });
  128. return _29;
  129. };
  130. $.fn.datalist.defaults=$.extend({},$.fn.datagrid.defaults,{fitColumns:true,singleSelect:true,showHeader:false,checkbox:false,lines:false,valueField:"value",textField:"text",groupField:"",view:_7,textFormatter:function(_2c,row){
  131. return _2c;
  132. },groupFormatter:function(_2d,_2e){
  133. return _2d;
  134. }});
  135. })(jQuery);