sort.js 913 B

12345678910111213141516171819202122232425
  1. export function quickSort(a) {
  2. return a.length <= 1 ? a : quickSort(a.slice(1).filter(item => item <= a[0])).concat(a[0], quickSort(a.slice(1).filter(item => item > a[0])));
  3. }
  4. export const sortLayout = (layout) => {
  5. return [].concat(layout).sort((a, b) => {
  6. if (a.GridY > b.GridY || (a.GridY === b.GridY && a.GridX > b.GridX)) {
  7. if (a.static) return 0//为了静态,排序的时候尽量把静态的放在前面
  8. return 1
  9. } else if (a.GridY === b.GridY && a.GridX === b.GridX) {
  10. return 0
  11. }
  12. return -1
  13. })
  14. }
  15. export const getMaxContainerHeight = (layout, elementHeight = 30, elementMarginBottom = 10) => {
  16. const ar = layout.map((item) => {
  17. return item.GridY + item.h
  18. })
  19. const h = quickSort(ar)[ar.length - 1];
  20. const height = h * (elementHeight + elementMarginBottom) + elementMarginBottom
  21. return height
  22. }