header.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. require('../utilities/sort.js');
  2. const header = function (object) {
  3. this._header = object.el || '#header';
  4. this._column = object.column;
  5. this._data = object.data;
  6. let _this = this;
  7. let _parentNode = $(_this._header);
  8. let sortType = {};
  9. let columnArr = [];
  10. // form fixed
  11. function parentNodeFloat() {
  12. let _parentNode_top = _parentNode.offset().top;
  13. let height = _parentNode.height();
  14. window.onscroll = function () {
  15. let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
  16. if (scrollTop > _parentNode_top) {
  17. _parentNode.addClass('fixed-top');
  18. _parentNode.height(height);
  19. } else {
  20. _parentNode.removeClass('fixed-top');
  21. }
  22. }
  23. }
  24. /**
  25. * column :{customization : null || bool --是否自定义
  26. * dom : null || element --自定义元素
  27. * style : null || string --样式
  28. * name : null || string --字段名,英文
  29. * value : string --列名
  30. * neglect : null || bool --是否忽略排序
  31. * }
  32. * */
  33. function append() {
  34. _this._column.forEach(function (column) {
  35. if (column.customization){
  36. _parentNode.append(column.dom);
  37. }else{
  38. let _td = "<th";
  39. if (column.style) _td += " style='"+column.style+"'"
  40. _td += ">"+column.value;
  41. _td += "</th>";
  42. _parentNode.append(_td);
  43. if (!column.neglect){
  44. $(_td).click(function () {
  45. if (!sortType[column.name]){
  46. sortType[column.name] = 'asc';
  47. columnArr.push(column.name);
  48. }
  49. if (sortType[column.name] === 'asc') sortType[column.name] = 'desc';
  50. if (sortType[column.name] === 'desc'){
  51. delete sortType[column.name];
  52. delete columnArr[column.name];
  53. }
  54. sort(_this._data,columnArr,sortType);
  55. });
  56. }
  57. }
  58. });
  59. }
  60. };