Add context packs impact analysis and message validation
This commit is contained in:
@@ -96,6 +96,33 @@ func (g Graph) Markdown() string {
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
func (p *Project) ImpactGraph(impact ImpactResult) Graph {
|
||||
nodeMap := map[string]GraphNode{}
|
||||
if unit, ok := p.ByID[impact.Entry]; ok {
|
||||
nodeMap[impact.Entry] = GraphNode{ID: unit.ID, Title: unit.Title, Type: unit.Type, Resolution: unit.Resolution, File: unit.File}
|
||||
} else {
|
||||
nodeMap[impact.Entry] = GraphNode{ID: impact.Entry, Missing: true}
|
||||
}
|
||||
for _, entry := range append(append([]ImpactEntry{}, impact.Direct...), impact.Indirect...) {
|
||||
nodeMap[entry.ID] = GraphNode{ID: entry.ID, Title: entry.Title, Type: entry.Type, Resolution: entry.Resolution, File: entry.File}
|
||||
if _, ok := nodeMap[entry.Via]; !ok && entry.Via != "" {
|
||||
if unit, exists := p.ByID[entry.Via]; exists {
|
||||
nodeMap[entry.Via] = GraphNode{ID: unit.ID, Title: unit.Title, Type: unit.Type, Resolution: unit.Resolution, File: unit.File}
|
||||
} else {
|
||||
nodeMap[entry.Via] = GraphNode{ID: entry.Via, Missing: true}
|
||||
}
|
||||
}
|
||||
}
|
||||
nodes := make([]GraphNode, 0, len(nodeMap))
|
||||
for _, node := range nodeMap {
|
||||
nodes = append(nodes, node)
|
||||
}
|
||||
sort.Slice(nodes, func(i, j int) bool {
|
||||
return nodes[i].ID < nodes[j].ID
|
||||
})
|
||||
return Graph{Nodes: nodes, Edges: impact.Edges}
|
||||
}
|
||||
|
||||
func (g Graph) Canvas() ([]byte, error) {
|
||||
canvas := canvasDocument{
|
||||
Nodes: make([]canvasNode, 0, len(g.Nodes)),
|
||||
|
||||
Reference in New Issue
Block a user