view_use_case.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // package view_use_case -- отображение вариант использования
  2. package view_use_case
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. "gitp78su.ipnodns.ru/svi/goarch/pkg/elems/use_case"
  8. "gitp78su.ipnodns.ru/svi/kern/v3"
  9. )
  10. // ViewUseCase -- вариант использования
  11. type ViewUseCase struct {
  12. UseCase_ *use_case.UseCase
  13. }
  14. var (
  15. hassert = kern.GetFnHassert()
  16. )
  17. // NewViewUseCase -- возвращает новый вариант использования
  18. func NewViewUseCase(useCase *use_case.UseCase, elem map[string]interface{}) *ViewUseCase {
  19. hassert(useCase != nil,"NewViewUseCase(): useCase=nil")
  20. sf := &ViewUseCase{
  21. UseCase_: useCase,
  22. }
  23. return sf
  24. }
  25. // Draw -- рисует вариант использования
  26. func (sf *ViewUseCase) Draw(canvas *svg.SVG, mapElem map[alias.Id]types.IElemDrawer) {
  27. x := int(sf.UseCase_.ElemBase_.Label_.Coord_.X_)
  28. y := int(sf.UseCase_.ElemBase_.Label_.Coord_.Y_)
  29. offX := int(sf.UseCase_.ElemBase_.Label_.Offset_.X_)
  30. w := int(sf.UseCase_.Size_.W_)
  31. h := int(sf.UseCase_.Size_.H_)
  32. // Овал
  33. canvas.Ellipse(x+70, y, w, h, "fill:none;stroke:black")
  34. strLabel:=string(sf.UseCase_.ElemBase_.Label_.Val_)
  35. if strLabel != "" {
  36. canvas.Text(x+offX, y+6, strLabel, "font-size: 14px; font-family: Courier; fill: black")
  37. }
  38. if msgErr := sf.Check(mapElem); msgErr != "" {
  39. canvas.Group("Ошибка")
  40. canvas.Title(msgErr)
  41. canvas.Image(x-20, y-20, 16, 16, "/static/img/warning.png")
  42. canvas.Gend()
  43. }
  44. }