From 6f4661333088b190c40e3717e13cdc61f2785ea0 Mon Sep 17 00:00:00 2001 From: Gabriel Musat Date: Sat, 10 Feb 2024 19:01:59 +0100 Subject: [PATCH] chore: white color for single entrypoint --- internal/entropy/graph.go | 45 +++++++++++++++++++++---------------- internal/entropy/index.html | 4 ++-- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/internal/entropy/graph.go b/internal/entropy/graph.go index be4f712..bc8a3b4 100644 --- a/internal/entropy/graph.go +++ b/internal/entropy/graph.go @@ -2,6 +2,7 @@ package entropy import ( "fmt" + "os" "path/filepath" "github.com/gabotechs/dep-tree/internal/graph" @@ -14,14 +15,15 @@ const ( ) type Node struct { - Id int64 `json:"id"` - FileName string `json:"fileName"` - Group string `json:"group,omitempty"` - DirName string `json:"dirName"` - Loc int `json:"loc"` - Size int `json:"size"` - Color []int `json:"color,omitempty"` - IsDir bool `json:"isDir"` + Id int64 `json:"id"` + IsEntrypoint bool `json:"isEntrypoint"` + FileName string `json:"fileName"` + Group string `json:"group,omitempty"` + DirName string `json:"dirName"` + Loc int `json:"loc"` + Size int `json:"size"` + Color []int `json:"color,omitempty"` + IsDir bool `json:"isDir"` } type Link struct { @@ -51,6 +53,7 @@ func makeGraph(files []string, parser graph.NodeParser[*language.FileInfo], load if err != nil { return Graph{}, err } + var singleEntrypointAbsPath string var entrypoints []*graph.Node[*language.FileInfo] if len(files) == 1 { entrypoint := g.Get(files[0]) @@ -58,9 +61,11 @@ func makeGraph(files []string, parser graph.NodeParser[*language.FileInfo], load return Graph{}, fmt.Errorf("could not find entrypoint %s", files[0]) } entrypoints = append(entrypoints, entrypoint) + singleEntrypointAbsPath = entrypoint.Data.AbsPath } else { entrypoints = g.GetNodesWithoutParents() } + cycles := g.RemoveCycles(entrypoints) out := Graph{ Nodes: make([]Node, 0), @@ -72,25 +77,27 @@ func makeGraph(files []string, parser graph.NodeParser[*language.FileInfo], load return n.Data.Loc }), 1) - addedFolders := map[string]bool{} - dirTree := NewDirTree() for _, node := range allNodes { dirTree.AddDirsFromFileInfo(node.Data) } + addedFolders := map[string]bool{} + for _, node := range allNodes { dirName := filepath.Dir(node.Data.RelPath) - out.Nodes = append(out.Nodes, Node{ - Id: node.ID(), - FileName: filepath.Base(node.Data.RelPath), - Group: node.Data.Package, - DirName: dirName + "/", - Loc: node.Data.Loc, - Size: maxNodeSize * node.Data.Loc / maxLoc, - Color: toInt(dirTree.ColorForFileInfo(node.Data, RGB)), - }) + n := Node{ + Id: node.ID(), + IsEntrypoint: node.Data.AbsPath == singleEntrypointAbsPath, + FileName: filepath.Base(node.Data.RelPath), + Group: node.Data.Package, + DirName: dirName + string(os.PathSeparator), + Loc: node.Data.Loc, + Size: maxNodeSize * node.Data.Loc / maxLoc, + Color: toInt(dirTree.ColorForFileInfo(node.Data, RGB)), + } + out.Nodes = append(out.Nodes, n) for _, to := range g.FromId(node.Id) { out.Links = append(out.Links, Link{ diff --git a/internal/entropy/index.html b/internal/entropy/index.html index a8e7f40..12e8e90 100644 --- a/internal/entropy/index.html +++ b/internal/entropy/index.html @@ -103,7 +103,7 @@ } function colorNode(node) { - const [r, g, b] = node['color'] + const [r, g, b] = node['isEntrypoint'] ? [255, 255, 255] : node['color'] let alpha = SETTINGS.NODE_ALPHA if (highlightNodes.size > 0 && !highlightNodes.has(node)) alpha = SETTINGS.UNSELECTED_NODE_ALPHA return `rgba(${r}, ${g}, ${b}, ${alpha})`; @@ -152,7 +152,7 @@ // Node params .nodeLabel(({fileName, dirName, group, loc}) => selectedNode ? undefined :`
${dirName}${fileName} - ${group ?? ''} + ${group != null ? `package: ${group}` : ''} LOC: ${loc}
`) .nodeThreeObject(nodeThreeObject)