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
	constant "github.com/easysoft/zentaoatf/src/utils/const"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10 11 12 13 14 15 16 17
	"github.com/easysoft/zentaoatf/src/utils/vari"
	"github.com/fatih/color"
	"github.com/jroimartin/gocui"
	"strings"
)

var filedValMap map[string]int

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

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

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

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

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

aaronchen2k2k's avatar
aaronchen2k2k 已提交
39 40 41 42 43 44 45
	// 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())

aaronchen2k2k's avatar
aaronchen2k2k 已提交
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 111
	//// 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 已提交
112

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

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

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

aaronchen2k2k's avatar
aaronchen2k2k 已提交
121
	titleView, _ := g.View("titleInput")
122
	stepsView, _ := g.View("stepsInput")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
123 124 125 126 127 128 129
	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())
130 131
	stepsStr := strings.TrimSpace(stepsView.Buffer())

132 133 134 135 136
	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 已提交
137 138 139

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

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

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

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

	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 已提交
157
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
158 159
	bug.OpenedBuild = build

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

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

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

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

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

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

	return nil
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
184
func bugSelectFieldCheckEvent() func(g *gocui.Gui, v *gocui.View) error {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
185 186 187 188 189 190 191 192 193 194 195 196 197 198
	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 {
199
	return gocui.ErrQuit
aaronchen2k2k's avatar
aaronchen2k2k 已提交
200 201 202 203 204 205 206 207
}

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