equipment.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*
  2. * *********************************************************************************************************************
  3. *
  4. * !!
  5. * .F88X
  6. * X8888Y
  7. * .}888888N;
  8. * i888888N; .:! .I$WI:
  9. * R888888I .'N88~ i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
  10. * .R888888I .;N8888~ .X8' "8I.!,/8" !%NY8`"8I8~~8>,88I
  11. * +888888N; .8888888Y "&&8Y.}8,
  12. * ./888888N; .R888888Y .'}~ .>}'.`+> i}! "i' +/' .'i~ !11,.:">, .~]! .i}i
  13. * ~888888%: .I888888l .]88~`1/iY88Ii+1'.R$8$8]"888888888> Y8$ W8E X8E W8888'188Il}Y88$*
  14. * 18888888 E8888881 .]W%8$`R8X'&8%++N8i,8N%N8+l8%` .}8N:.R$RE%N88N%N$K$R 188,FE$8%~Y88I
  15. * .E888888I .i8888888' .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
  16. * 8888888I .,N888888~ ~88i"8W,!N8*.I88.}888%F,i$88"F88" 888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
  17. * i888888N' I888Y ]88;/EX*IFKFK88X K8R .l8W 88Y ~88}'88E&%8W.X8N``]88!.$8K .:W8I
  18. * .i888888N; I8Y .&8$ .X88! i881.:%888>I88 ;88] +88+.';;;;:.Y88X 18N.,88l .+88/
  19. * .:R888888I
  20. * .&888888I Copyright (c) 2009-2020. 博锐尚格科技股份有限公司
  21. * ~8888'
  22. * .!88~ All rights reserved.
  23. *
  24. * *********************************************************************************************************************
  25. */
  26. import { SMouseEvent } from "@persagy-web/base";
  27. import { SEquipItem } from "@persagy-web/big"
  28. import { SGraphItem, STextItem, SGraphCircleItem } from "@persagy-web/graph/lib";
  29. import { SColor, SFont, SPoint } from "@persagy-web/draw/lib";
  30. import { SCircleItem } from "./SCircleItem"
  31. /**
  32. * 拓扑图派生设备类
  33. *
  34. * @author 韩耀龙 <han_yao_long@163.com>
  35. */
  36. export class EquipItem extends SEquipItem {
  37. StatusPoint: SCircleItem | null = null;
  38. constructor(parent: SGraphItem | null) {
  39. super(parent);
  40. }
  41. // 设置设备名称
  42. setEquipName() {
  43. const item = new STextItem(this);
  44. item.text = this.data.properties.localName;
  45. // item.strokeColor = new SColor('#6b7086');
  46. item.color = new SColor('#6b7086')
  47. item.font = new SFont("sans-serif", 16);
  48. item.isTransform = false;
  49. // item.font = new SFont("sans-serif", 16);
  50. item.moveTo(-this.width / 2, this.height / 2 +16 );
  51. this.setStatusPoint(item)
  52. }
  53. /**
  54. * 设置状态点
  55. *
  56. * @param parent 父类
  57. */
  58. setStatusPoint(parent: STextItem | null) {
  59. const item = new SCircleItem(parent);
  60. const h = parent ? parent.height : 0
  61. item.localtion = new SPoint(0, 0);
  62. item.radius = 4;
  63. item.fillColor = new SColor('#de6466');
  64. item.strokeColor = new SColor('#de6466')
  65. item.moveTo(-item.radius * 2, h)
  66. this.StatusPoint = item;
  67. }
  68. /**
  69. * 设置状态远点颜色
  70. *
  71. * @param val 颜色字符
  72. */
  73. setStatusPointColor(val: string) {
  74. if (!this.StatusPoint) return;
  75. this.StatusPoint.fillColor = new SColor(val);
  76. this.StatusPoint.strokeColor = new SColor(val);
  77. }
  78. /**
  79. * 获取信息点数组
  80. */
  81. getMsgList(): any {
  82. return this.textItemList
  83. }
  84. onMouseMove(event:SMouseEvent):boolean{
  85. const scene = this.scene;
  86. if (null != scene) {
  87. if (scene.hoverItem == null || scene.hoverItem !== this) {
  88. if (scene.hoverItem != null) {
  89. scene.hoverItem.onMouseLeave(event);
  90. }
  91. this.onMouseEnter(event);
  92. scene.hoverItem = this;
  93. }
  94. }
  95. return true
  96. }
  97. /**
  98. * 鼠标进入事件
  99. *''
  100. * @param event 保存事件参数
  101. * @return 是否处理事件
  102. */
  103. onMouseEnter(event: SMouseEvent): boolean {
  104. this.$emit("onMouseEnter");
  105. return false;
  106. }
  107. /**
  108. * 鼠标离开事件
  109. *
  110. * @param event 保存事件参数
  111. * @return 是否处理事件
  112. */
  113. onMouseLeave(event: SMouseEvent): boolean {
  114. this.$emit("onMouseLeave");
  115. return false;
  116. }
  117. }