@@ 17,10 17,10 @@
</tr>
</thead>
<tbody>
- {{range $name, $prop := .Properties}}
+ {{range $prop := .Properties}}
<tr>
<td class="pre">
- <a href="/properties/{{printf "%d" $prop.ObjectType}}/{{$name}}">{{$name}}</a>
+ <a href="/properties/{{printf "%d" $prop.ObjectType}}/{{$prop.Name}}">{{$prop.Name}}</a>
</td>
<td>{{$prop.Type}}</td>
<td><a href="?object-type={{printf "%d" $prop.ObjectType}}" title="Only show {{$prop.ObjectType}} properties">
@@ 338,6 338,7 @@ func New() *echo.Echo {
e.GET("/properties", func(c echo.Context) error {
type propertyData struct {
+ Name string
Type drm.PropertyType
ObjectType drm.ObjectType
Drivers map[string]bool
@@ 354,8 355,13 @@ func New() *echo.Echo {
driverName := c.QueryParam("driver")
+ type propKey struct {
+ Name string
+ ObjectType drm.ObjectType
+ }
+
drivers := make(map[string]struct{})
- props := make(map[string]propertyData)
+ props := make(map[propKey]propertyData)
err := db.Walk(func(k string, n *drmtree.Node) error {
drv := n.Driver.Name
if driverName != "" && drv != driverName {
@@ 368,14 374,16 @@ func New() *echo.Echo {
if objectType != drm.ObjectAny && obj.Type() != objectType {
return nil
}
- if _, ok := props[name]; !ok {
- props[name] = propertyData{
+ k := propKey{name, obj.Type()}
+ if _, ok := props[k]; !ok {
+ props[k] = propertyData{
+ Name: name,
Type: prop.Type,
ObjectType: obj.Type(),
Drivers: make(map[string]bool),
}
}
- props[name].Drivers[drv] = true
+ props[k].Drivers[drv] = true
return nil
})
})
@@ 383,10 391,18 @@ func New() *echo.Echo {
return err
}
+ propList := make([]propertyData, 0, len(props))
+ for _, prop := range props {
+ propList = append(propList, prop)
+ }
+ sort.Slice(propList, func(i, j int) bool {
+ return propList[i].Name < propList[j].Name
+ })
+
return c.Render(http.StatusOK, "properties.html", struct {
Drivers map[string]struct{}
- Properties map[string]propertyData
- }{drivers, props})
+ Properties []propertyData
+ }{drivers, propList})
})
e.GET("/properties/:obj/:name", func(c echo.Context) error {