-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkanban.go
84 lines (71 loc) · 1.69 KB
/
kanban.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package main
import "github.com/mariusgrigoriu/kanban-stats/trello"
func GetBoardFromTrello(client trello.Client, boardID string) (board Board) {
trelloLists := client.GetLists(boardID)
lists := make([]List, len(trelloLists))
for i, list := range trelloLists {
lists[i] = List(list)
}
return trelloBoard{
id: boardID,
lists: lists,
client: client,
}
}
type Board interface {
GetID() string
GetColumns() []Column
}
type Column interface {
CountCardsByType(string) int
GetID() string
GetName() string
GetCards() []trello.Card
}
type trelloBoard struct {
id string
lists []List
client trello.Client
}
type List trello.List
func (board trelloBoard) GetColumns() []Column {
columns := make([]Column, len(board.lists))
for i, list := range board.lists {
columns[i] = Column(list)
}
return columns
}
func (board trelloBoard) GetID() string {
return board.id
}
// Tagsys Label: 54641fc074d650d56757a692
// Defect Label: 54641fc074d650d56757a68e
func (list List) CountCardsByType(cardType string) (found int) {
defectLabelID := "54641fc074d650d56757a68e" //TODO: Move these to configuration
nonDevLabelID := "54641fc074d650d56757a68d"
for _, card := range list.Cards {
var foundDefect, foundNonDev bool
for _, label := range card.Labels {
switch label.ID {
case nonDevLabelID:
foundNonDev = true
break
case defectLabelID:
foundDefect = true
}
}
if !foundNonDev && (cardType == "defect" && foundDefect || cardType != "defect" && !foundDefect) {
found += 1
}
}
return
}
func (list List) GetID() string {
return list.ID
}
func (list List) GetName() string {
return list.Name
}
func (list List) GetCards() []trello.Card {
return list.Cards
}