1
0

IconService.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import VectorType from '../enum/VectorType.js'
  2. import Icon from '../Geometry/Icon.js'
  3. import { mathUtil } from '../MathUtil.js'
  4. import { floorplanService } from './FloorplanService'
  5. import Constant from '../Constant'
  6. export default class IconService {
  7. constructor() {
  8. this.values = [];
  9. }
  10. getNewValue(){
  11. let value = 1;
  12. while(true){
  13. if(this.values.includes(value)){
  14. ++value;
  15. continue;
  16. }
  17. else{
  18. this.values.push(value);
  19. break;
  20. }
  21. }
  22. return value;
  23. }
  24. createIcon(leftTopPosition,rightDownPosition,value,vectorId,floor) {
  25. const radius = mathUtil.getDistance(leftTopPosition,rightDownPosition)/2
  26. const center = {
  27. x:(leftTopPosition.x+rightDownPosition.x)/2,
  28. y:(leftTopPosition.y+rightDownPosition.y)/2
  29. }
  30. if(value == null){
  31. value = this.getNewValue();
  32. }
  33. else{
  34. if(!this.values.includes(value)){
  35. this.values.push(value);
  36. }
  37. }
  38. const icon = new Icon(center, radius,value,vectorId,floor)
  39. floorplanService.addIcon(icon)
  40. return icon
  41. }
  42. createIcon2(center,radius,value,vectorId,floor) {
  43. const icon = new Icon(center, radius,value,vectorId,floor)
  44. floorplanService.addIcon(icon)
  45. return icon
  46. }
  47. updateIconVertex(vectorId,newPosition,index){
  48. const icon = floorplanService.getIcon(vectorId)
  49. icon.updatePoints(newPosition,index)
  50. }
  51. setIconInfo(iconInfo) {
  52. let icon = floorplanService.getIcon(iconInfo.vectorId)
  53. icon.vectorId = iconInfo.vectorId
  54. icon.radius = iconInfo.radius
  55. icon.value = iconInfo.value
  56. icon.angle = iconInfo.angle
  57. icon.center = JSON.parse(JSON.stringify(iconInfo.center))
  58. icon.points = JSON.parse(JSON.stringify(iconInfo.points))
  59. }
  60. deleteIcon(iconId, floorNum) {
  61. const icon = floorplanService.getIcon(iconId)
  62. const index = this.values.indexOf(icon.value);
  63. this.values.splice(index,1)
  64. floorplanService.deleteIcon(iconId, floorNum)
  65. }
  66. clear(){
  67. this.values = [];
  68. }
  69. }
  70. const iconService = new IconService()
  71. export { iconService }