summaryrefslogtreecommitdiff
path: root/analyze.go
diff options
context:
space:
mode:
authorNikolaus Gotsche <n@softwarefools.com>2019-05-22 23:46:20 +0200
committerNikolaus Gotsche <n@softwarefools.com>2019-05-22 23:46:20 +0200
commit06c765d4691dd65b926343e5391f627ac8a9c983 (patch)
tree2cbe1107396eef52ad4d2d6b738dc840538f6476 /analyze.go
parent83410ee498d56f18ccab0abb9c69f112f4d9f008 (diff)
interactive analysis
Diffstat (limited to 'analyze.go')
-rw-r--r--analyze.go52
1 files changed, 49 insertions, 3 deletions
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
+}
+