This commit is contained in:
Adam R Grey 2022-02-03 12:41:53 -05:00
parent f6d7b984a4
commit 4cfd4fbd28

View File

@ -3,6 +3,7 @@ package main
import (
"bufio"
"encoding/csv"
"flag"
"fmt"
"io"
"io/ioutil"
@ -18,7 +19,37 @@ type ActivityLine struct {
}
func main() {
csvFile, _ := os.Open("heat.csv")
var csvPathArg string
var endDateArg string
var startDateArg string
var outputPath string
flag.StringVar(&csvPathArg, "csv", "heat.csv", "Specify csv path, default is heat.csv.")
flag.StringVar(&outputPath, "o", "heatmap.svg", "Specify output path, default is heatmeap.svg.")
flag.StringVar(&startDateArg, "s", "", "Specify start date (2006-01-02). Default is 1 year previous to end date.")
flag.StringVar(&endDateArg, "e", "", "Specify end date (2006-01-02). Default is today.")
flag.Parse()
endDate := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
if endDateArg != "" {
var err error
endDate, err = time.Parse("2006-01-02", endDateArg)
if err != nil {
fmt.Println("failed to parse end time")
return
}
}
start := time.Date(endDate.Year()-1, endDate.Month(), endDate.Day(), 0, 0, 0, 0, time.Local)
if startDateArg != "" {
var err error
start, err = time.Parse("2006-01-02", startDateArg)
if err != nil {
fmt.Println("failed to parse start time")
return
}
}
csvFile, _ := os.Open(csvPathArg)
reader := csv.NewReader(bufio.NewReader(csvFile))
var length int = 17
var days = make(map[time.Time]uint64)
@ -42,11 +73,9 @@ func main() {
days[thisTime] = days[thisTime] + cals
}
start := time.Date(time.Now().Year()-1, time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
svg := "<svg width=\"960\" height=\"152\"><g transform=\"translate(29.5,24)\"><g fill=\"none\" stroke=\"#ccc\">"
datePointer := start
var week int = 0
midnightThisMorning := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
var monthChange = false
var monthLabelSpots = make(map[string]int)
@ -61,7 +90,7 @@ func main() {
}
datePointer = datePointer.Add(time.Hour * 24)
if datePointer.After(midnightThisMorning) {
if datePointer.After(endDate) {
break
}
if datePointer.Day() == 1 {
@ -89,5 +118,5 @@ func main() {
svg = fmt.Sprintf("%s</g>", svg)
svg = fmt.Sprintf("%s</svg>", svg)
ioutil.WriteFile("heatmap.svg", []byte(svg), 0644)
ioutil.WriteFile(outputPath, []byte(svg), 0644)
}