# HG changeset patch # User Sean E. Russell # Date 1498142858 14400 # Thu Jun 22 10:47:38 2017 -0400 # Node ID 5911099800ded6134cc2258874cd96c2a78a636e # Parent 1967ff278ca42f3369e32ef7af256e6b6b59984e Adds 9box diff --git a/cmd/9box/9box.go b/cmd/9box/9box.go new file mode 100644 --- /dev/null +++ b/cmd/9box/9box.go @@ -0,0 +1,86 @@ +package main + +import ( + "encoding/csv" + "html/template" + "io" + "io/ioutil" + "log" + "os" + "strconv" + "time" +) + +type Data struct { + BU string + Updated string + Owner string + People [][]Person +} + +type Person struct { + Name string + Title string +} + +const ( + NAME = 0 + TITLE = 2 + BOX = 6 +) + +func main() { + in, err := os.Open(os.Args[1]) + if err != nil { + log.Fatal(err) + } + defer in.Close() + r := csv.NewReader(in) + r.Read() // Skip header + d := Data{ + BU: "DTRM", + Updated: time.Now().Format("2006.01.02"), + Owner: "Sean Russell", + People: make([][]Person, 10), + } + for i := 0; i < 10; i++ { + d.People[i] = make([]Person, 0) + } + for { + record, err := r.Read() + if err == io.EOF { + break + } + if err != nil { + log.Fatal(err) + } + p := Person{ + Name: record[NAME], + Title: record[TITLE], + } + idx, err := strconv.Atoi(record[BOX]) + if err != nil { + continue + } + d.People[idx] = append(d.People[idx], p) + } + fm := template.FuncMap{ + "offset": offset, + } + t, err := ioutil.ReadFile("9box.svg.templ") + if err != nil { + log.Fatal(err) + } + svg, err := template.New("templs").Funcs(fm).Parse(string(t)) + if err != nil { + log.Fatal(err) + } + err = svg.Execute(os.Stdout, d) + if err != nil { + log.Fatal(err) + } +} + +func offset(pos float64, idx int) float64 { + return pos + float64(idx*22) +} diff --git a/cmd/9box/9box.svg.templ b/cmd/9box/9box.svg.templ new file mode 100644 --- /dev/null +++ b/cmd/9box/9box.svg.templ @@ -0,0 +1,71 @@ + + + + + + + + + + + [3] Possible Talent + [2] Rising Talent + [1] Top Talent + [6] Must Improve + [5] Valued Contributor + [4] High Potential + [9] Resolve or Depart + [8] Professional + [7] High Performer + + + + Business Unit: + {{.BU}} + Last Update: + {{.Updated}} + + Doc. Owner: + {{.Owner}} + + + Av. Performance Rating < 80% + Av. Performance Rating > 90% + Av. Performance Rating 80% - 90% + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + + + {{$p.Name}} + {{$p.Title}} + +