// package view_use_case -- отображение вариант использования
package view_use_case

import (
	svg "github.com/ajstarks/svgo"

	"gitp78su.ipnodns.ru/svi/goarch/lev0/types"
	"gitp78su.ipnodns.ru/svi/goarch/lev1/arch_use_case"
	"gitp78su.ipnodns.ru/svi/goarch/lev1/view_coord"
	"gitp78su.ipnodns.ru/svi/goarch/lev1/view_text"
)

// ViewUseCase -- вариант использования
type ViewUseCase struct {
	*arch_use_case.ArchUseCase
	Size_  types.IViewSize
	Coord_ view_coord.ViewCoord
	text   *view_text.ViewText
}

// NewViewUseCase -- возвращает новый вариант использования
func NewViewUseCase(useCase *arch_use_case.ArchUseCase) *ViewUseCase {
	sf := &ViewUseCase{
		ArchUseCase: useCase,
	}
	sf.SelfCheck()
	return sf
}

// SelfCheck -- проверяет корректность элемента
func (sf *ViewUseCase) SelfCheck() {
	sf.ArchUseCase.SelfCheck()
	sf.Size_.SelfCheck()
}

// Draw -- рисует вариант использования
func (sf *ViewUseCase) Draw(canvas *svg.SVG) {
	x, y := sf.Coord_.Int()
	// offX := int(sf.Label().Offset().X())
	w, h := sf.Size_.Int()
	// Овал
	canvas.Ellipse(x+70, y, w, h, "fill:none;stroke:black")
	// strLabel := sf.Label().String()
	sf.text.Draw(canvas)
	// if strLabel != "" {
	// 	canvas.Text(x+offX, y+6, strLabel, "font-size: 14px; font-family: Courier; fill: black")
	// }
	// if msgErr := sf.Check(mapElem); msgErr != "" {
	// 	canvas.Group("Ошибка")
	// 	canvas.Title(msgErr)
	// 	canvas.Image(x-20, y-20, 16, 16, "/static/img/warning.png")
	// }
	canvas.Gend()
}
