From 06c765d4691dd65b926343e5391f627ac8a9c983 Mon Sep 17 00:00:00 2001 From: Nikolaus Gotsche Date: Wed, 22 May 2019 23:46:20 +0200 Subject: interactive analysis --- analyze.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) (limited to 'analyze.go') diff --git a/analyze.go b/analyze.go index 8fb56aa..aa18053 100644 --- a/analyze.go +++ b/analyze.go @@ -5,12 +5,24 @@ import ( "fmt" ) +// Daydata +type Daydata struct { + Day int + + Taskcount int + Projectcount int + + Workhours float64 + Workvalue float64 +} + // Data for Month type Month struct { Month int MonthName string Year int Days []int + Daydatas []Daydata Earnings float64 @@ -36,6 +48,11 @@ type Year struct { Projects []int } +func (d Daydata)Show()(out string){ + out = fmt.Sprintf("%v. : %v Tasks in %v Projects: %.2f [h] for %.2f[€]",d.Day,d.Taskcount,d.Projectcount,d.Workhours,d.Workvalue) + return +} + var analysis []Month var yearly []Year @@ -57,21 +74,34 @@ func MakeAnalysis() { val := ta.Money() if exist { + dex,dexid := DaydataExists(day,analysis[exid].Daydatas) if !isElement(day,analysis[exid].Days){ analysis[exid].Days = append(analysis[exid].Days,day) + }else{ + if dex { + analysis[exid].Daydatas[dexid].Workvalue += val + analysis[exid].Daydatas[dexid].Workhours += dur + analysis[exid].Daydatas[dexid].Taskcount += 1 + } } analysis[exid].Workvalue += val analysis[exid].Workhours += dur analysis[exid].Tasks = append(analysis[exid].Tasks,ta.Id) if !isElement(ta.Projectid,analysis[exid].Projects){ analysis[exid].Projects = append(analysis[exid].Projects,ta.Projectid) + }else{ + if dex { + analysis[exid].Daydatas[dexid].Projectcount += 1 + } } }else{ + daydat := Daydata{day,1,1, dur,val} analysis = append(analysis,Month{ month, monthstr, year, []int{day}, + []Daydata{daydat}, 0.0, //Earning @@ -96,6 +126,7 @@ func MakeAnalysis() { monthstr, year, []int{}, + []Daydata{}, py.Amount, //Earning @@ -137,8 +168,8 @@ func MakeAnalysis() { } } - ShowMonthlyAnalysis() - ShowYearlyAnalysis() +// ShowMonthlyAnalysis() +// ShowYearlyAnalysis() } @@ -173,7 +204,7 @@ func ShowMonthlyAnalysis() { for _,mo := range analysis { cnt, hr, dur := AnalyzeTasks(GetSelectedTasks(mo.Tasks)) - fmt.Println(sli,mo.Year,mo.MonthName) + fmt.Println(sub(fmt.Sprint(mo.Year,mo.MonthName))) fmt.Printf("%s Workhours: %.2f[h]\n",nli,mo.Workhours) fmt.Printf("%s Earnings: %.2f[€]\n",nli,mo.Earnings) fmt.Printf("%s Workvalue: %.2f[€]\n",nli,mo.Workvalue) @@ -183,7 +214,11 @@ func ShowMonthlyAnalysis() { fmt.Printf("%s %s\n",nli,dur) fmt.Printf("%s Hourly Rate: %.2f[€/h]\n",nli,mo.Earnings/mo.Workhours) fmt.Printf("%s Productivity: %.2f[h/d]\n",nli,mo.Workhours/float64(len(mo.Days))) + fmt.Println(sli,"Days:") + for _,dt := range mo.Daydatas { + fmt.Println(nli,dt.Show()) + } fmt.Println(nli) } fmt.Println(frame("",false)) @@ -209,3 +244,14 @@ func YearExists(year int) (exist bool, id int) { } return false,-1 } + +// Test if yearly slice conatins the year already and return its id if +func DaydataExists(day int, data []Daydata) (exist bool, id int) { + for i,dat := range data { + if dat.Day == day { + return true,i + } + } + return false,-1 +} + -- cgit v1.2.3