report-bug.go 6.8 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3
package page

import (
4
	"fmt"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
5 6 7
	zentaoService "github.com/easysoft/zentaoatf/src/service/zentao"
	"github.com/easysoft/zentaoatf/src/ui"
	"github.com/easysoft/zentaoatf/src/ui/widget"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9 10 11 12 13 14 15 16
	"github.com/easysoft/zentaoatf/src/utils/vari"
	"github.com/fatih/color"
	"github.com/jroimartin/gocui"
	"strings"
)

var filedValMap map[string]int

17
func InitReportBugPage(resultDir string, caseId string) error {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
18
	DestoryReportBugPage()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
19

aaronchen2k2k's avatar
aaronchen2k2k 已提交
20
	//vari.CurrBug, vari.CurrBugStepIds = zentaoService.PrepareBug(resultDir, caseId)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21
	bug := vari.CurrBug
aaronchen2k2k's avatar
aaronchen2k2k 已提交
22

aaronchen2k2k's avatar
aaronchen2k2k 已提交
23
	//w, h := vari.Cui.Size()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
24 25
	x := 1
	y := 1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
26

aaronchen2k2k's avatar
aaronchen2k2k 已提交
27 28 29 30
	//var bugVersion string
	//for _, val := range bug.OpenedBuild { // 取字符串值显示
	//	bugVersion = val
	//}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
31 32

	// title
33
	left := x
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34
	//right := left + widget.TextWidthFull - 5
35 36
	titleInput := widget.NewTextWidget("titleInput", left, y, widget.TextWidthFull-5, bug.Title)
	ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], titleInput.Name())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
37

aaronchen2k2k's avatar
aaronchen2k2k 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
	//// steps
	//left = right + ui.Space
	//stepsWidth := w - left - 3
	//stepsInput := widget.NewTextareaWidget("stepsInput", left, y, stepsWidth, h-constant.CmdViewHeight-2, bug.Steps)
	//stepsInput.Title = i118Utils.I118Prt.Sprintf("steps")
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], stepsInput.Name())
	//
	//// module
	//y += 3
	//left = x
	//right = left + widget.SelectWidth
	//moduleInput := widget.NewSelectWidgetWithDefault("module", left, y, widget.SelectWidth, 6,
	//	i118Utils.I118Prt.Sprintf("module"),
	//	vari.ZentaoBugFileds.Modules, zentaoService.GetNameById(bug.Module, vari.ZentaoBugFileds.Modules),
	//	bugSelectFieldCheckEvent())
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], moduleInput.Name())
	//
	//// type
	//left = right + ui.Space
	//right = left + widget.SelectWidth
	//typeInput := widget.NewSelectWidgetWithDefault("type", left, y, widget.SelectWidth, 6,
	//	i118Utils.I118Prt.Sprintf("category"),
	//	vari.ZentaoBugFileds.Categories, zentaoService.GetNameById(bug.Type, vari.ZentaoBugFileds.Categories),
	//	bugSelectFieldCheckEvent())
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], typeInput.Name())
	//
	//// version
	//left = right + ui.Space
	//right = left + widget.SelectWidth
	//versionInput := widget.NewSelectWidgetWithDefault("version", left, y, widget.SelectWidth, 6,
	//	i118Utils.I118Prt.Sprintf("version"),
	//	vari.ZentaoBugFileds.Versions, zentaoService.GetNameById(bugVersion, vari.ZentaoBugFileds.Versions),
	//	bugSelectFieldCheckEvent())
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], versionInput.Name())
	//
	//// severity
	//y += 7
	//left = x
	//right = left + widget.SelectWidth
	//severityInput := widget.NewSelectWidgetWithDefault("severity", left, y, widget.SelectWidth, 6,
	//	i118Utils.I118Prt.Sprintf("severity"),
	//	vari.ZentaoBugFileds.Severities, zentaoService.GetNameById(bug.Severity, vari.ZentaoBugFileds.Severities),
	//	bugSelectFieldCheckEvent())
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], severityInput.Name())
	//
	//// priority
	//left = right + ui.Space
	//right = left + widget.SelectWidth
	//priorityInput := widget.NewSelectWidgetWithDefault("priority", left, y, widget.SelectWidth, 6,
	//	i118Utils.I118Prt.Sprintf("priority"),
	//	vari.ZentaoBugFileds.Priorities, zentaoService.GetNameById(bug.Pri, vari.ZentaoBugFileds.Priorities),
	//	bugSelectFieldCheckEvent())
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], priorityInput.Name())
	//
	//// msg
	//y += 7
	//left = x
	//reportBugMsg := widget.NewPanelWidget("reportBugMsg", left, y, widget.TextWidthFull-5, 2, "")
	//reportBugMsg.Frame = false
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], reportBugMsg.Name())
	//
	//// buttons
	//y += 5
	//buttonX := x + widget.SelectWidth + ui.Space
	//submitInput := widget.NewButtonWidgetAutoWidth("submitInput", buttonX, y,
	//	i118Utils.I118Prt.Sprintf("submit"), reportBug)
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], submitInput.Name())
	//
	//cancelReportBugInput := widget.NewButtonWidgetAutoWidth("cancelReportBugInput",
	//	buttonX+11, y, i118Utils.I118Prt.Sprintf("cancel"), cancelReportBug)
	//ui.ViewMap["reportBug"] = append(ui.ViewMap["reportBug"], cancelReportBugInput.Name())
	//
	//ui.BindEventForInputWidgets(ui.ViewMap["reportBug"])
aaronchen2k2k's avatar
aaronchen2k2k 已提交
111

112 113
	vari.Cui.SetCurrentView("titleInput")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
114 115 116 117
	return nil
}

func reportBug(g *gocui.Gui, v *gocui.View) error {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
118 119
	bug := vari.CurrBug

aaronchen2k2k's avatar
aaronchen2k2k 已提交
120
	titleView, _ := g.View("titleInput")
121
	stepsView, _ := g.View("stepsInput")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
122 123 124 125 126 127 128
	moduleView, _ := g.View("module")
	typeView, _ := g.View("type")
	versionView, _ := g.View("version")
	severityView, _ := g.View("severity")
	priorityView, _ := g.View("priority")

	title := strings.TrimSpace(titleView.Buffer())
129 130
	stepsStr := strings.TrimSpace(stepsView.Buffer())

131 132 133 134 135
	moduleStr := strings.TrimSpace(ui.GetSelectedRowVal(moduleView))
	typeStr := strings.TrimSpace(ui.GetSelectedRowVal(typeView))
	versionStr := strings.TrimSpace(ui.GetSelectedRowVal(versionView))
	severityStr := strings.TrimSpace(ui.GetSelectedRowVal(severityView))
	priorityStr := strings.TrimSpace(ui.GetSelectedRowVal(priorityView))
aaronchen2k2k's avatar
aaronchen2k2k 已提交
136 137 138

	if title == "" {
		v, _ := vari.Cui.View("reportBugMsg")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
139
		color.New(color.FgMagenta).Fprintf(v, i118Utils.ReadI18nJson("title_cannot_be_empty"))
aaronchen2k2k's avatar
aaronchen2k2k 已提交
140 141 142 143
		return nil
	}

	bug.Title = title
144
	bug.Steps = strings.Replace(stepsStr, "\n", "<br/>", -1)
145

aaronchen2k2k's avatar
aaronchen2k2k 已提交
146
	bug.Type = zentaoService.GetIdByName(typeStr, vari.ZentaoBugFileds.Categories)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
147

148
	bug.Module = zentaoService.GetIdByName(moduleStr, vari.ZentaoBugFileds.Modules)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
149 150 151 152 153 154 155

	versionKey := zentaoService.GetIdByName(versionStr, vari.ZentaoBugFileds.Versions)
	build := make(map[string]string)
	if versionKey == "trunk" {
		build["0"] = "trunk"
	} else {
		build[versionKey] = versionStr
aaronchen2k2k's avatar
aaronchen2k2k 已提交
156
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
157 158
	bug.OpenedBuild = build

159 160
	bug.Severity = zentaoService.GetIdByName(severityStr, vari.ZentaoBugFileds.Severities)
	bug.Pri = zentaoService.GetIdByName(priorityStr, vari.ZentaoBugFileds.Priorities)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
161

162
	vari.CurrBug = bug
aaronchen2k2k's avatar
aaronchen2k2k 已提交
163 164 165 166
	ok, msg := zentaoService.CommitBug()

	msgView, _ := vari.Cui.View("reportBugMsg")
	msgView.Clear()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
167

168
	if ok {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
169 170
		color.New(color.FgGreen).Fprintf(msgView, msg)

171 172 173 174
		vari.Cui.DeleteView("submitInput")

		cancelReportBugInput, _ := vari.Cui.View("cancelReportBugInput")
		cancelReportBugInput.Clear()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
175
		fmt.Fprint(cancelReportBugInput, " "+i118Utils.I118Prt.Sprintf("close"))
aaronchen2k2k's avatar
aaronchen2k2k 已提交
176 177
	} else {
		color.New(color.FgMagenta).Fprintf(msgView, msg)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
178
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
179 180 181 182

	return nil
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
183
func bugSelectFieldCheckEvent() func(g *gocui.Gui, v *gocui.View) error {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
184 185 186 187 188 189 190 191 192 193 194 195 196 197
	return func(g *gocui.Gui, v *gocui.View) error {
		name := v.Name()

		g.SetCurrentView(name)

		return nil
	}
}

func init() {
	filedValMap = make(map[string]int)
}

func cancelReportBug(g *gocui.Gui, v *gocui.View) error {
198
	return gocui.ErrQuit
aaronchen2k2k's avatar
aaronchen2k2k 已提交
199 200 201 202 203 204 205 206
}

func DestoryReportBugPage() {
	for _, v := range ui.ViewMap["reportBug"] {
		vari.Cui.DeleteView(v)
		vari.Cui.DeleteKeybindings(v)
	}
}