id
This commit is contained in:
Alexander Wang 2023-03-01 10:43:53 -08:00
parent 756068bef5
commit 8e074070d8
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
3 changed files with 28 additions and 4 deletions

View file

@ -97,6 +97,7 @@ func (c *compiler) compileBoardsField(g *d2graph.Graph, ir *d2ir.Map, fieldName
continue continue
} }
g2 := d2graph.NewGraph() g2 := d2graph.NewGraph()
g2.Parent = g
g2.AST = g.AST g2.AST = g.AST
c.compileBoard(g2, f.Map()) c.compileBoard(g2, f.Map())
g2.Name = f.Name g2.Name = f.Name

View file

@ -2036,7 +2036,7 @@ layers: {
} }
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) { assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Name, g.Objects[0].LinkedBoard.Name) tassert.Equal(t, ".layers.x", g.Objects[0].LinkedBoard.AbsID())
}, },
}, },
{ {
@ -2056,7 +2056,7 @@ scenarios: {
} }
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) { assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Name, g.Objects[0].LinkedBoard.Name) tassert.Equal(t, ".layers.cat", g.Objects[0].LinkedBoard.AbsID())
}, },
}, },
{ {
@ -2089,7 +2089,7 @@ layers: {
} }
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) { assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Layers[0], g.Objects[0].LinkedBoard) tassert.Equal(t, ".layers.x.layers.x", g.Objects[0].LinkedBoard.AbsID())
}, },
}, },
} }

View file

@ -28,6 +28,7 @@ const DEFAULT_SHAPE_SIZE = 100.
const MIN_SHAPE_SIZE = 5 const MIN_SHAPE_SIZE = 5
type Graph struct { type Graph struct {
Parent *Graph `json:"-"`
Name string `json:"name"` Name string `json:"name"`
// IsFolderOnly indicates a board or scenario itself makes no modifications from its // IsFolderOnly indicates a board or scenario itself makes no modifications from its
// base. Folder only boards do not have a render and are used purely for organizing // base. Folder only boards do not have a render and are used purely for organizing
@ -55,6 +56,28 @@ func NewGraph() *Graph {
return d return d
} }
func (g *Graph) AbsID() string {
if g.Parent == nil {
return g.Name
}
for _, l := range g.Parent.Layers {
if l.Name == g.Name {
return g.Parent.AbsID() + ".layers." + g.Name
}
}
for _, s := range g.Parent.Scenarios {
if s.Name == g.Name {
return g.Parent.AbsID() + ".scenarios." + g.Name
}
}
for _, s := range g.Parent.Steps {
if s.Name == g.Name {
return g.Parent.AbsID() + ".steps." + g.Name
}
}
return ""
}
// TODO consider having different Scalar types // TODO consider having different Scalar types
// Right now we'll hold any types in Value and just convert, e.g. floats // Right now we'll hold any types in Value and just convert, e.g. floats
type Scalar struct { type Scalar struct {