112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
package ui
|
|
|
|
import (
|
|
"fmt"
|
|
"go_dreamfactory/cmd/v2/lib"
|
|
"go_dreamfactory/cmd/v2/lib/common"
|
|
"go_dreamfactory/cmd/v2/lib/storage"
|
|
"go_dreamfactory/cmd/v2/service"
|
|
"go_dreamfactory/cmd/v2/service/observer"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/layout"
|
|
"fyne.io/fyne/v2/theme"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
type perfResult struct {
|
|
appAdapter
|
|
|
|
obs observer.Observer
|
|
conf *storage.Config
|
|
|
|
itemList common.ItemList
|
|
|
|
resultList func() //结果列表
|
|
resetBtn *widget.Button
|
|
report *widget.Card
|
|
}
|
|
|
|
func (app *perfResult) LazyInit(ptService service.PttService, obs observer.Observer) error {
|
|
app.obs = obs
|
|
app.conf = perfWin.UIImpl.config
|
|
|
|
app.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PERF_RES, theme.ContentCopyIcon(), nil)
|
|
content := container.NewMax()
|
|
content.Objects = []fyne.CanvasObject{}
|
|
|
|
app.itemList = *common.NewItemList()
|
|
app.itemList.ItemList = app.itemList.CreateList()
|
|
|
|
//重新开始
|
|
app.resetBtn = widget.NewButtonWithIcon("再来一次", theme.ContentRedoIcon(), nil)
|
|
app.resetBtn.Hide()
|
|
app.resetBtn.OnTapped = func() {
|
|
defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_TIP)
|
|
app.itemList.Reset()
|
|
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
|
|
}
|
|
|
|
// 返回
|
|
returnBtn := widget.NewButtonWithIcon("返回", theme.NavigateBackIcon(), nil)
|
|
returnBtn.OnTapped = func() {
|
|
defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
|
|
app.itemList.Reset()
|
|
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
|
|
}
|
|
|
|
//统计Panel
|
|
app.report = widget.NewCard("测试报告", "登录/创角", container.NewVBox(
|
|
// widget.NewLabel("结果:"),
|
|
))
|
|
app.report.Hide()
|
|
//layout
|
|
c := container.NewBorder(app.report, container.NewHBox(layout.NewSpacer(), app.resetBtn, returnBtn), nil, nil, app.itemList.ItemList)
|
|
content.Objects = append(content.Objects, c)
|
|
app.tabItem.Content = content
|
|
app.listen()
|
|
return nil
|
|
}
|
|
|
|
func (app *perfResult) listen() {
|
|
app.obs.AddListener(observer.EVENT_RESULT, observer.Listener{
|
|
OnNotify: func(data interface{}, args ...interface{}) {
|
|
res, ok := data.(*lib.Statistics)
|
|
if !ok {
|
|
return
|
|
}
|
|
item := common.Item{
|
|
Text: fmt.Sprintf("协议名称:%s, 调用次数:%d, 总耗时:%vms, 平均耗时:%vms, 最大耗时:%vms, 最小耗时:%vms",
|
|
res.Route, res.CallCount, res.ElapseTotal, res.AvgElapse, res.MaxElapse, res.MinElapse),
|
|
Data: res,
|
|
}
|
|
app.itemList.AddItem(item)
|
|
},
|
|
})
|
|
|
|
app.obs.AddListener(observer.EVENT_FINISH, observer.Listener{
|
|
OnNotify: func(data interface{}, args ...interface{}) {
|
|
finish, ok := data.(bool)
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
if finish {
|
|
app.resetBtn.Show()
|
|
app.resetBtn.Refresh()
|
|
app.report.Show()
|
|
app.report.Refresh()
|
|
}
|
|
},
|
|
})
|
|
}
|
|
|
|
func (app *perfResult) GetAppName() string {
|
|
return common.TOOLBAR_PERF_RES
|
|
}
|
|
|
|
func (a *perfResult) OnClose() bool {
|
|
return false
|
|
}
|