geometry.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { get, reduce } from '@antv/util';
  2. /**
  3. * 在 View 中查找第一个指定 type 类型的 geometry
  4. * @param view
  5. * @param type
  6. */
  7. export function findGeometry(view, type) {
  8. return view.geometries.find(function (g) { return g.type === type; });
  9. }
  10. /**
  11. * 获取 View 的 所有 elements
  12. */
  13. export function getAllElements(view) {
  14. return reduce(view.geometries, function (r, geometry) {
  15. return r.concat(geometry.elements);
  16. }, []);
  17. }
  18. /**
  19. * 递归获取 View 的 所有 elements, 包括 View 的子 View
  20. */
  21. export function getAllElementsRecursively(view) {
  22. if (get(view, ['views', 'length'], 0) <= 0) {
  23. return getAllElements(view);
  24. }
  25. return reduce(view.views, function (ele, subView) {
  26. return ele.concat(getAllElementsRecursively(subView));
  27. }, getAllElements(view));
  28. }
  29. /**
  30. * 递归获取 View 的 所有 geometries, 包括 View 的子 View
  31. */
  32. export function getAllGeometriesRecursively(view) {
  33. if (get(view, ['views', 'length'], 0) <= 0) {
  34. return view.geometries;
  35. }
  36. return reduce(view.views, function (ele, subView) {
  37. return ele.concat(subView.geometries);
  38. }, view.geometries);
  39. }
  40. //# sourceMappingURL=geometry.js.map