initiate.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 = { ...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. }