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 returnBtn *widget.Button report *widget.Card layout *fyne.Container } 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) } // 返回 app.returnBtn = widget.NewButtonWithIcon("", theme.NavigateBackIcon(), nil) app.returnBtn.Disable() app.returnBtn.OnTapped = func() { defer openApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE) app.itemList.Reset() closeApp3(perfWin.tabs, common.TOOLBAR_PERF_RES) } app.returnBtn.Text = "等待中..." //统计Panel app.report = widget.NewCard("测试报告", "登录/创角", container.NewVBox( // widget.NewLabel("结果:"), )) app.report.Hide() //layout app.layout = container.NewBorder(app.report, container.NewHBox(layout.NewSpacer(), app.resetBtn, app.returnBtn), nil, nil, app.itemList.ItemList) content.Objects = append(content.Objects, app.layout) 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.returnBtn.Text = "返回" app.returnBtn.Enable() app.returnBtn.Refresh() app.layout.Refresh() }, }) 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 }