utils.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { GROUP_NAME, defaultCircleStyle, defaultLineStyle } from './constants';
  2. import { uid } from 'uid';
  3. import { FenceGroup } from './types';
  4. export const getCircleConfig = (points: number[], scale: number) => {
  5. const circlePoints = [];
  6. for (let i = 0; i < points.length - 1; i += 2) {
  7. circlePoints.push([points[i], points[i + 1]]);
  8. }
  9. return circlePoints.map((point, idx) => {
  10. return createCircleConfigItem(point as [number, number], idx, scale);
  11. });
  12. };
  13. export const createCircleConfigItem = (point: [number, number], idx: number, scale: number) => {
  14. return {
  15. ...defaultCircleStyle,
  16. radius: defaultCircleStyle.radius / scale,
  17. hitStrokeWidth: defaultCircleStyle.hitStrokeWidth / scale,
  18. x: point[0],
  19. y: point[1],
  20. uid: uid(),
  21. idx,
  22. };
  23. };
  24. export const createGroupConfig = (points: number[], scale: number): FenceGroup => {
  25. const lineConfig = {
  26. ...defaultLineStyle,
  27. strokeWidth: defaultLineStyle.strokeWidth / scale,
  28. points: points,
  29. };
  30. const circleConfigs = getCircleConfig(points, scale);
  31. return {
  32. lineConfig,
  33. name: GROUP_NAME,
  34. circleConfigs,
  35. uid: uid(),
  36. _temp: { points: [] },
  37. };
  38. };