summaryrefslogtreecommitdiff
path: root/analyze.go
diff options
context:
space:
mode:
authorNikolaus Gotsche <n@softwarefools.com>2019-05-14 12:32:45 +0200
committerNikolaus Gotsche <n@softwarefools.com>2019-05-14 12:32:45 +0200
commit0c4c5ac1ba534425716c80d27dc72817718f0367 (patch)
tree109d394c83b48197abaf9a44f88238c8af7283ca /analyze.go
parentbf7dfda3e67f67687109290209c8b09576a417fd (diff)
Payment Debug, Yearly Analysis0.4.4
Diffstat (limited to 'analyze.go')
-rw-r--r--analyze.go95
1 files changed, 88 insertions, 7 deletions
diff --git a/analyze.go b/analyze.go
index fdf2842..b0d15d2 100644
--- a/analyze.go
+++ b/analyze.go
@@ -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
+}