pager.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. (function($) {
  2. 'use strict';
  3. var con;
  4. /**
  5. * Datatable class
  6. *
  7. * @param object element DOM element or jquery element
  8. * @param object options Datatable options
  9. */
  10. var mytable = function(element, options) {
  11. this.name = name;
  12. this.con = $(element);
  13. var cols = options.cols;
  14. var tableData = options.tableData;
  15. var rowData = formatTableData(tableData, cols);
  16. clearTable(cols);
  17. // 使用data参数更新数据:
  18. this.con.datatable('load', {
  19. cols: cols,
  20. rows:rowData
  21. }
  22. );
  23. function formatTableData(data,cols){
  24. var rows = [];
  25. for(var i=0;i<data.length;i++){
  26. data[i].num=(p_cur-1)*10+i+1;
  27. rows.push(genRow(data[i],cols));
  28. }
  29. return rows;
  30. }
  31. function genRow(obj,cols){
  32. var row = {checked: false, data:null};
  33. var dArr=[];
  34. for(var i=0;i<cols.length;i++){
  35. if(cols[i].text=='操作') {
  36. var str='<a href="#" onclick="showEditConstant('+obj[cols[i].field]+')"><i class="icon icon-edit"></i> 修改</a><a href="#" onclick="deleteConstant('+obj[cols[i].field]+')"><i class="icon icon-remove-circle"></i> 删除</a>';
  37. dArr.push(str);
  38. }else{
  39. dArr.push(obj[cols[i].field]);
  40. }
  41. }
  42. row.data=dArr;
  43. return row;
  44. }
  45. function clearTable(cols){
  46. $(element).datatable( {
  47. checkable:false,
  48. sortable:false,
  49. data: {
  50. cols: cols,
  51. rows:[]
  52. }
  53. });
  54. }
  55. };
  56. // default options
  57. mytable.DEFAULTS = {
  58. container:"",
  59. pages:'',
  60. curr:'',
  61. groups:'',
  62. first:1,
  63. last:1,
  64. prev:1,
  65. next:1,
  66. jump:null
  67. };
  68. // Get options
  69. mytable.prototype.getOptions = function(options) {
  70. var $e = this.$;
  71. options = $.extend({}, DataTable.DEFAULTS, this.$.data(), options);
  72. options.tableClass = options.tableClass || '';
  73. options.tableClass = ' ' + options.tableClass + ' table-datatable';
  74. $.each(['bordered', 'condensed', 'striped', 'condensed', 'fixed'], function(idx, cls) {
  75. cls = 'table-' + cls;
  76. if($e.hasClass(cls)) options.tableClass += ' ' + cls;
  77. });
  78. if($e.hasClass('table-hover') || options.rowHover) {
  79. options.tableClass += ' table-hover';
  80. }
  81. if(!options.checkable || !$.fn.selectable) options.selectable = false;
  82. this.options = options;
  83. };
  84. // Load data form options or table dom
  85. mytable.prototype.load = function(data) {
  86. var options = this.options,
  87. cols;
  88. this.render();
  89. };
  90. // Render datatable
  91. mytable.prototype.render = function() {
  92. var that = this;
  93. };
  94. // Bind global events
  95. mytable.prototype.bindEvents = function() {
  96. var that = this,
  97. data = this.data,
  98. options = this.options,
  99. $datatable = this.$datatable;
  100. var $dataSpans = that.$dataSpans = $datatable.children('.datatable-head, .datatable-rows').find('.datatable-span');
  101. var $rowsSpans = that.$rowsSpans = $datatable.children('.datatable-rows').children('.datatable-rows-span');
  102. var $headSpans = that.$headSpans = $datatable.children('.datatable-head').children('.datatable-head-span');
  103. var $cells = that.$cells = $dataSpans.find('td, th');
  104. var $dataCells = that.$dataCells = $cells.filter('td');
  105. that.$headCells = $cells.filter('th');
  106. var $rows = that.$rows = that.$rowsSpans.find('.table > tbody > tr');
  107. };
  108. $.fn.mytable = function(option) {
  109. return this.each(function() {
  110. var $this = $(this);
  111. new mytable(this,option);
  112. });
  113. };
  114. // $.fn.pager.Constructor = mytable;
  115. }(jQuery));