initiate.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * 把用户移动的块,标记为true
  3. * @param {*} layout
  4. * @param {*} key
  5. * @param {*} GridX
  6. * @param {*} GridY
  7. * @param {*} isUserMove
  8. */
  9. export const syncLayout = (layout, key, GridX, GridY, isUserMove) => {
  10. const newlayout = layout.map((item) => {
  11. if (item.key === key) {
  12. item.GridX = GridX;
  13. item.GridY = GridY;
  14. item.isUserMove = isUserMove;
  15. return item;
  16. }
  17. return item;
  18. });
  19. return newlayout;
  20. };
  21. /**
  22. * 初始化的时候调用
  23. * 会把isUserMove和key一起映射到layout中
  24. * 不用用户设置
  25. * @param {*} layout
  26. * @param {*} children
  27. */
  28. export const MapLayoutTostate = (layout, children) => {
  29. return layout.map((child, index) => {
  30. let newChild = Object.assign({}, child, { isUserMove: true, key: children[index].key, static: children[index].static });
  31. return newChild;
  32. });
  33. };
  34. /**
  35. * 用key从layout中拿出item
  36. * @param {*} layout 输入进来的布局
  37. * @param {*} key
  38. */
  39. export const layoutItemForkey = (layout, key) => {
  40. for (let i = 0, length = layout.length; i < length; i++) {
  41. if (key === layout[i].key) {
  42. return layout[i];
  43. }
  44. }
  45. };