| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // package view_link -- отображение связи между объектами
- package view_link
- import (
- "fmt"
- svg "github.com/ajstarks/svgo"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
- "gitp78su.ipnodns.ru/svi/goarch/pkg/elems/use_link"
- )
- // Link -- отображение связи между объектами
- type Link struct {
- *use_link.UseLink
- }
- // NewViewLink -- возвращает новое отображение связи
- func NewViewLink(elem map[string]interface{}) (*Link, error) {
- link, err := use_link.NewUseLink(elem)
- if err != nil {
- return nil, fmt.Errorf("NewLNewViewLink(): in create Link, err=\n\t%w", err)
- }
- sf := &Link{
- UseLink: link,
- }
- return sf, nil
- }
- // Draw -- рисует связь между объектами
- func (sf *Link) Draw(canvas *svg.SVG, mapDrawer map[alias.Id]types.IElemDrawer) {
- _x, _y := sf.Coord_.Coord()
- x := int(_x)
- y := int(_y)
- _x, _y = sf.CoordEnd_.Coord()
- x1 := int(_x)
- y1 := int(_y)
- _x, _y = sf.Offset_.Offset()
- offX := int(_x)
- offY := int(_y)
- // Линия
- canvas.Line(x, y, x1, y1, "stroke:black;stroke-width:1")
- if sf.Label_ != "" {
- canvas.Text(x+offX, y+offY, string(sf.Label_), "font-size: 12px; font-family: Courier; fill: black")
- }
- if sf.TypeLink_ != "" {
- canvas.Text(x+offX, y+offY+12, "<<"+sf.TypeLink_+">>", "font-size: 12px; font-family: Courier; fill: black")
- }
- if msgErr := sf.Check(mapDrawer); msgErr != "" { // Проверка на правильность
- canvas.Group("Ошибка")
- canvas.Title(msgErr)
- canvas.Image(x-20+offX, y-20+offY, 16, 16, "/static/img/warning.png")
- canvas.Gend()
- }
- }
- // SrcId -- возвращает источник связи
- func (sf *Link) SrcId() alias.Id {
- return sf.Src_
- }
- // DstId -- возвращает получателя связи
- func (sf *Link) DstId() alias.Id {
- return sf.Dst_
- }
|