diff options
Diffstat (limited to 'analyze.go')
| -rw-r--r-- | analyze.go | 95 |
1 files changed, 88 insertions, 7 deletions
@@ -21,8 +21,23 @@ type Month struct { Projects []int } -var analysis []Month +// Yearly Data +type Year struct { + Year int + Months []int + Days []int + + Earnings float64 + Workvalue float64 + Workhours float64 + + Tasks []int + Projects []int +} + +var analysis []Month +var yearly []Year //Analyze all tasks and PAyments func MakeAnalysis() { @@ -89,13 +104,70 @@ func MakeAnalysis() { } } //fmt.Println("Length:",len(analysis)) - ShowFullAnalysis() + for _,mo := range analysis { + exist,exid := YearExists(mo.Year) + + if exist{ + yearly[exid].Months = append(yearly[exid].Months,mo.Month) + yearly[exid].Days = append(yearly[exid].Days,mo.Days...) + //yearly[exid].Days = AddNewElement(yearly[exid].Days,mo.Days) + + yearly[exid].Earnings += mo.Earnings + + yearly[exid].Workvalue += mo.Workvalue + yearly[exid].Workhours += mo.Workhours + + yearly[exid].Tasks = AddNewElement(yearly[exid].Tasks,mo.Tasks) + yearly[exid].Projects = AddNewElement(yearly[exid].Projects,mo.Projects) + }else{ + yearly = append(yearly,Year{ + mo.Year, + []int{mo.Month}, + mo.Days, + + mo.Earnings, + + mo.Workvalue, + mo.Workhours, + + mo.Tasks, + mo.Projects}) + } + } + + ShowMonthlyAnalysis() + ShowYearlyAnalysis() } -//Show full analysis -func ShowFullAnalysis() { - fmt.Println(frame("Full Analysis",true)) +//Show Yearly analysis +func ShowYearlyAnalysis() { + fmt.Println(frame("Yearly Analysis",true)) + for _,yr := range yearly { + cnt, hr, dur := AnalyzeTasks(GetSelectedTasks(yr.Tasks)) + + fmt.Println(sli,yr.Year) + fmt.Printf("%s Workhours: %.2f[h]\n",nli,yr.Workhours) + fmt.Printf("%s Earnings: %.2f[€]\n",nli,yr.Earnings) + fmt.Printf("%s %.2f[€/m]\n",nli,yr.Earnings/float64(len(yr.Months))) + fmt.Printf("%s Workvalue: %.2f[€]\n",nli,yr.Workvalue) + fmt.Printf("%s %.2f[€/m]\n",nli,yr.Workvalue/float64(len(yr.Months))) + fmt.Printf("%s Projects: %v\n",nli,len(yr.Projects)) + fmt.Printf("%s Days: %v\n",nli,len(yr.Days)) + fmt.Printf("%s Tasks: %v Hours: %.2f[h]\n",nli,cnt, hr) + fmt.Printf("%s %s\n",nli,dur) + fmt.Printf("%s Hourly Rate: %.2f[€/h]\n",nli,yr.Earnings/yr.Workhours) + fmt.Printf("%s Productivity: %.2f[h/d]\n",nli,yr.Workhours/float64(len(yr.Days))) + fmt.Printf("%s %.2f[h/m]\n",nli,yr.Workhours/float64(len(yr.Months))) + fmt.Printf("%s %.2f[d/m]\n",nli,float64(len(yr.Days))/float64(len(yr.Months))) + + fmt.Println(nli) + } + fmt.Println(frame("",false)) +} +//Show Mothly analysis +func ShowMonthlyAnalysis() { + fmt.Println(frame("Monthly Analysis",true)) for _,mo := range analysis { cnt, hr, dur := AnalyzeTasks(GetSelectedTasks(mo.Tasks)) @@ -105,12 +177,11 @@ func ShowFullAnalysis() { fmt.Printf("%s Workvalue: %.2f[€]\n",nli,mo.Workvalue) fmt.Printf("%s Projects: %v\n",nli,len(mo.Projects)) fmt.Printf("%s Days: %v\n",nli,len(mo.Days)) - fmt.Printf("%s Tasks: %v Hours: %.2f[€]\n",nli,cnt, hr) + fmt.Printf("%s Tasks: %v Hours: %.2f[h]\n",nli,cnt, hr) 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(nli) } fmt.Println(frame("",false)) @@ -126,3 +197,13 @@ func MonthExists(year, month int) (exist bool, id int) { } return false,-1 } + +// Test if yearly slice conatins the year already and return its id if +func YearExists(year int) (exist bool, id int) { + for i,yr := range yearly { + if yr.Year == year { + return true,i + } + } + return false,-1 +} |
