2019-04-22 02:59:20 +00:00

56 lines
1.1 KiB
Go

package service
import (
"context"
"go-common/app/admin/main/aegis/model/net"
"go-common/app/admin/main/aegis/model/svg"
)
//NetSVG 绘制网的svg图
func (s *Service) NetSVG(c context.Context, netid int64) (nv *svg.NetView, err error) {
flows, err := s.gorm.FlowsByNet(c, []int64{netid})
if err != nil {
return
}
dirs, err := s.gorm.DirectionByNet(c, netid)
if err != nil {
return
}
trans, err := s.gorm.TranByNet(c, netid, true)
if err != nil {
return
}
var binds []*net.TokenBind
for _, flow := range flows {
abs, _, _ := s.fetchOldBindAndLog(c, flow.ID, []int8{1})
for _, bind := range abs {
binds = append(binds, bind)
}
}
for _, tran := range trans {
abs, _, _ := s.fetchOldBindAndLog(c, tran.ID, []int8{2})
for _, bind := range abs {
binds = append(binds, bind)
}
}
tbds, err := s.tokenBindDetail(c, binds)
if err != nil {
return
}
dot := svg.NewDot()
dot.StartDot().AddTokenBinds(tbds...).
AddFlow(flows...).
AddTransitions(trans...).
AddDirections(dirs...).
End()
nv = svg.NewNetView()
nv.SetDot(dot)
return
}