Browse Source

add entry sortable

fancl 2 years ago
parent
commit
374d24568e
1 changed files with 19 additions and 8 deletions
  1. 19 8
      element/entry.go

+ 19 - 8
element/entry.go

@@ -6,9 +6,13 @@ import (
 )
 
 type (
+	entryItem struct {
+		Label   Element
+		Content Element
+	}
 	Entry struct {
 		Title Element
-		Items map[string]Element
+		Items []entryItem
 		Outro Element
 	}
 )
@@ -24,13 +28,13 @@ func (element *Entry) String() string {
 	if element.Title != nil {
 		br.WriteString(element.Title.Html())
 	}
-	for k, v := range element.Items {
+	for _, v := range element.Items {
 		br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "row"}))
 		br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "preview-label"}))
-		br.WriteString(k)
+		br.WriteString(v.Label.Html())
 		br.WriteString(endTag(atom.Div.String()))
 		br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "preview-value"}))
-		br.WriteString(v.Html())
+		br.WriteString(v.Content.Html())
 		br.WriteString(endTag(atom.Div.String()))
 		br.WriteString(endTag(atom.Div.String()))
 	}
@@ -41,17 +45,24 @@ func (element *Entry) String() string {
 	return br.String()
 }
 
-func (element *Entry) AddItem(label string, e Element) *Entry {
+func (element *Entry) PushItem(label Element, content Element) *Entry {
 	if element.Items == nil {
-		element.Items = make(map[string]Element)
+		element.Items = make([]entryItem, 0)
 	}
-	element.Items[label] = e
+	element.Items = append(element.Items, entryItem{
+		Label:   label,
+		Content: content,
+	})
 	return element
 }
 
+func (element *Entry) AddItem(label string, e Element) *Entry {
+	return element.PushItem(NewText(label), e)
+}
+
 func NewEntry(element Element) *Entry {
 	return &Entry{
 		Title: element,
-		Items: make(map[string]Element),
+		Items: make([]entryItem, 0),
 	}
 }