| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // package view_link -- отображение связи между объектами
- package view_link
- import (
- svg "github.com/ajstarks/svgo"
- "gitp78su.ipnodns.ru/svi/kern/v3"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
- )
- // ViewLink -- отображение связи между объектами
- type ViewLink struct {
- types.IElemLink
- }
- var (
- hassert = kern.GetFnHassert()
- )
- // NewViewLink -- возвращает новое отображение связи
- func NewViewLink(useLink types.IElemLink) *ViewLink {
- hassert(useLink != nil, "NewViewLink: useLink is nil")
- sf := &ViewLink{
- IElemLink: useLink,
- }
- return sf
- }
- // Draw -- рисует связь между объектами
- func (sf *ViewLink) Draw(canvas *svg.SVG, mapDrawer map[alias.Id]types.IDrawer) {
- x, y := sf.Label().Coord().Int()
- _x, _y = sf.CoordEnd().Coord()
- x1 := int(_x)
- y1 := int(_y)
- _x, _y = sf.UseLink_.ElemBase_.Label_.Offset_.Offset()
- offX := int(_x)
- offY := int(_y)
- // Линия
- canvas.Line(x, y, x1, y1, "stroke:black;stroke-width:1")
- strLabel := string(sf.UseLink_.ElemBase_.Label_.Val_)
- if strLabel != "" {
- canvas.Text(x+offX, y+offY, strLabel, "font-size: 12px; font-family: Courier; fill: black")
- }
- strTypeLink := string(sf.UseLink_.TypeLink_)
- if strTypeLink != "" {
- canvas.Text(x+offX, y+offY+12, "<<"+strTypeLink+">>", "font-size: 12px; font-family: Courier; fill: black")
- }
- if msgErr := sf.UseLink_.ElemBase_.Check(mapDrawer); msgErr != "" { // Проверка на правильность
- canvas.Group("Ошибка")
- canvas.Title(msgErr)
- canvas.Image(x-20+offX, y-20+offY, 16, 16, "/static/img/warning.png")
- canvas.Gend() // Group end
- }
- }
- // SrcId -- возвращает источник связи
- func (sf *ViewLink) SrcId() alias.Id {
- return sf.Src_
- }
- // DstId -- возвращает получателя связи
- func (sf *ViewLink) DstId() alias.Id {
- return sf.Dst_
- }
|