You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.2 KiB
67 lines
1.2 KiB
package http |
|
|
|
import ( |
|
"bytes" |
|
"net/http" |
|
|
|
modsvg "go-common/app/admin/main/aegis/model/svg" |
|
bm "go-common/library/net/http/blademaster" |
|
|
|
"github.com/pkg/errors" |
|
) |
|
|
|
// HTMLContentType |
|
var ( |
|
HTMLContentType = []string{"text/html"} |
|
_ Render = HTML{} |
|
) |
|
|
|
// HTML str. |
|
type HTML struct { |
|
Content []byte |
|
Title string |
|
} |
|
|
|
// WriteContentType fn |
|
func (j HTML) WriteContentType(w http.ResponseWriter) { |
|
writeContentType(w, HTMLContentType, j.Title, "html") |
|
} |
|
|
|
// Render (JSON) writes data with json ContentType. |
|
func (j HTML) Render(w http.ResponseWriter) (err error) { |
|
if _, err = w.Write(j.Content); err != nil { |
|
err = errors.WithStack(err) |
|
} |
|
return |
|
} |
|
|
|
func svg(c *bm.Context) { |
|
opt := new(struct { |
|
NetID int64 `form:"net_id" validate:"required"` |
|
Debug int8 `form:"debug"` |
|
}) |
|
if err := c.Bind(opt); err != nil { |
|
return |
|
} |
|
|
|
var ( |
|
nv *modsvg.NetView |
|
err error |
|
) |
|
if opt.Debug > 0 { |
|
nv = modsvg.DebugSVG() |
|
} else { |
|
if nv, err = srv.NetSVG(c, opt.NetID); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
} |
|
|
|
bs := bytes.NewBufferString("") |
|
nv.Execute(c.Writer, nv.Data) |
|
|
|
c.Render(http.StatusOK, CSV{ |
|
Content: bs.Bytes(), |
|
Title: "流程网图", |
|
}) |
|
}
|
|
|