sort.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. export function quickSort(a) {
  2. return a.length <= 1 ? a : quickSort(a.slice(1).filter(function (item) { return item <= a[0]; })).concat(a[0], quickSort(a.slice(1).filter(function (item) { return item > a[0]; })));
  3. }
  4. export var sortLayout = function (layout) {
  5. return [].concat(layout).sort(function (a, b) {
  6. if (a.GridY > b.GridY || (a.GridY === b.GridY && a.GridX > b.GridX)) {
  7. if (a.static)
  8. return 0; //为了静态,排序的时候尽量把静态的放在前面
  9. return 1;
  10. }
  11. else if (a.GridY === b.GridY && a.GridX === b.GridX) {
  12. return 0;
  13. }
  14. return -1;
  15. });
  16. };
  17. /**
  18. * 这个函数带有记忆功能
  19. */
  20. export var getMaxContainerHeight = function () {
  21. var lastOneGridY = 0;
  22. return function (layout, elementHeight, elementMarginBottom, currentHeight) {
  23. if (elementHeight === void 0) { elementHeight = 30; }
  24. if (elementMarginBottom === void 0) { elementMarginBottom = 10; }
  25. var length = layout.length;
  26. var currentLastOne = layout[length - 1];
  27. if (currentLastOne.GridY === lastOneGridY) {
  28. return currentHeight;
  29. }
  30. lastOneGridY = currentLastOne.GridY;
  31. var ar = layout.map(function (item) {
  32. return item.GridY + item.h;
  33. });
  34. var h = quickSort(ar)[ar.length - 1];
  35. var height = h * (elementHeight + elementMarginBottom) + elementMarginBottom;
  36. return height;
  37. };
  38. }();