summaryrefslogtreecommitdiff
path: root/management/editor/dom.go
diff options
context:
space:
mode:
Diffstat (limited to 'management/editor/dom.go')
-rw-r--r--management/editor/dom.go231
1 files changed, 117 insertions, 114 deletions
diff --git a/management/editor/dom.go b/management/editor/dom.go
index 41aafa7..5888db5 100644
--- a/management/editor/dom.go
+++ b/management/editor/dom.go
@@ -7,288 +7,291 @@ import (
"strings"
)
-type element struct {
- tagName string
- attrs map[string]string
- name string
- label string
- data string
- viewBuf *bytes.Buffer
+// Element is a basic struct for representing DOM elements
+type Element struct {
+ TagName string
+ Attrs map[string]string
+ Name string
+ Label string
+ Data string
+ ViewBuf *bytes.Buffer
}
-func newElement(tagName, label, fieldName string, p interface{}, attrs map[string]string) *element {
- return &element{
- tagName: tagName,
- attrs: attrs,
- name: tagNameFromStructField(fieldName, p),
- label: label,
- data: valueFromStructField(fieldName, p),
- viewBuf: &bytes.Buffer{},
+// NewElement returns an Element with Name and Data already processed from the
+// fieldName and content interface provided
+func NewElement(tagName, label, fieldName string, p interface{}, attrs map[string]string) *Element {
+ return &Element{
+ TagName: tagName,
+ Attrs: attrs,
+ Name: TagNameFromStructField(fieldName, p),
+ Label: label,
+ Data: ValueFromStructField(fieldName, p),
+ ViewBuf: &bytes.Buffer{},
}
}
-// domElementSelfClose is a special DOM element which is parsed as a
+// DOMElementSelfClose is a special DOM element which is parsed as a
// self-closing tag and thus needs to be created differently
-func domElementSelfClose(e *element) []byte {
- _, err := e.viewBuf.WriteString(`<div class="input-field col s12">`)
+func DOMElementSelfClose(e *Element) []byte {
+ _, err := e.ViewBuf.WriteString(`<div class="input-field col s12">`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
- if e.label != "" {
- _, err = e.viewBuf.WriteString(
+ if e.Label != "" {
+ _, err = e.ViewBuf.WriteString(
`<label class="active" for="` +
- strings.Join(strings.Split(e.label, " "), "-") + `">` + e.label +
+ strings.Join(strings.Split(e.Label, " "), "-") + `">` + e.Label +
`</label>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
}
- _, err = e.viewBuf.WriteString(`<` + e.tagName + ` value="`)
+ _, err = e.ViewBuf.WriteString(`<` + e.TagName + ` value="`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
- _, err = e.viewBuf.WriteString(html.EscapeString(e.data) + `" `)
+ _, err = e.ViewBuf.WriteString(html.EscapeString(e.Data) + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
- for attr, value := range e.attrs {
- _, err := e.viewBuf.WriteString(attr + `="` + value + `" `)
+ for attr, value := range e.Attrs {
+ _, err := e.ViewBuf.WriteString(attr + `="` + value + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
}
- _, err = e.viewBuf.WriteString(` name="` + e.name + `" />`)
+ _, err = e.ViewBuf.WriteString(` name="` + e.Name + `" />`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
- _, err = e.viewBuf.WriteString(`</div>`)
+ _, err = e.ViewBuf.WriteString(`</div>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementSelfClose")
+ log.Println("Error writing HTML string to buffer: DOMElementSelfClose")
return nil
}
- return e.viewBuf.Bytes()
+ return e.ViewBuf.Bytes()
}
-// domElementCheckbox is a special DOM element which is parsed as a
+// DOMElementCheckbox is a special DOM element which is parsed as a
// checkbox input tag and thus needs to be created differently
-func domElementCheckbox(e *element) []byte {
- _, err := e.viewBuf.WriteString(`<p class="col s6">`)
+func DOMElementCheckbox(e *Element) []byte {
+ _, err := e.ViewBuf.WriteString(`<p class="col s6">`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
- _, err = e.viewBuf.WriteString(`<` + e.tagName + ` `)
+ _, err = e.ViewBuf.WriteString(`<` + e.TagName + ` `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
- for attr, value := range e.attrs {
- _, err := e.viewBuf.WriteString(attr + `="` + value + `" `)
+ for attr, value := range e.Attrs {
+ _, err := e.ViewBuf.WriteString(attr + `="` + value + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
}
- _, err = e.viewBuf.WriteString(` name="` + e.name + `" />`)
+ _, err = e.ViewBuf.WriteString(` name="` + e.Name + `" />`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
- if e.label != "" {
- _, err = e.viewBuf.WriteString(
+ if e.Label != "" {
+ _, err = e.ViewBuf.WriteString(
`<label for="` +
- strings.Join(strings.Split(e.label, " "), "-") + `">` +
- e.label + `</label>`)
+ strings.Join(strings.Split(e.Label, " "), "-") + `">` +
+ e.Label + `</label>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
}
- _, err = e.viewBuf.WriteString(`</p>`)
+ _, err = e.ViewBuf.WriteString(`</p>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementCheckbox")
return nil
}
- return e.viewBuf.Bytes()
+ return e.ViewBuf.Bytes()
}
-// domElement creates a DOM element
-func domElement(e *element) []byte {
- _, err := e.viewBuf.WriteString(`<div class="input-field col s12">`)
+// DOMElement creates a DOM element
+func DOMElement(e *Element) []byte {
+ _, err := e.ViewBuf.WriteString(`<div class="input-field col s12">`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- if e.label != "" {
- _, err = e.viewBuf.WriteString(
+ if e.Label != "" {
+ _, err = e.ViewBuf.WriteString(
`<label class="active" for="` +
- strings.Join(strings.Split(e.label, " "), "-") + `">` + e.label +
+ strings.Join(strings.Split(e.Label, " "), "-") + `">` + e.Label +
`</label>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
}
- _, err = e.viewBuf.WriteString(`<` + e.tagName + ` `)
+ _, err = e.ViewBuf.WriteString(`<` + e.TagName + ` `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- for attr, value := range e.attrs {
- _, err = e.viewBuf.WriteString(attr + `="` + string(value) + `" `)
+ for attr, value := range e.Attrs {
+ _, err = e.ViewBuf.WriteString(attr + `="` + string(value) + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
}
- _, err = e.viewBuf.WriteString(` name="` + e.name + `" > `)
+ _, err = e.ViewBuf.WriteString(` name="` + e.Name + `" >`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- _, err = e.viewBuf.WriteString(html.EscapeString(e.data))
+ _, err = e.ViewBuf.WriteString(html.EscapeString(e.Data))
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- _, err = e.viewBuf.WriteString(`</` + e.tagName + `>`)
+ _, err = e.ViewBuf.WriteString(`</` + e.TagName + `>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- _, err = e.viewBuf.WriteString(`</div>`)
+ _, err = e.ViewBuf.WriteString(`</div>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElement")
+ log.Println("Error writing HTML string to buffer: DOMElement")
return nil
}
- return e.viewBuf.Bytes()
+ return e.ViewBuf.Bytes()
}
-func domElementWithChildrenSelect(e *element, children []*element) []byte {
- _, err := e.viewBuf.WriteString(`<div class="input-field col s6">`)
+func DOMElementWithChildrenSelect(e *Element, children []*Element) []byte {
+ _, err := e.ViewBuf.WriteString(`<div class="input-field col s6">`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
- _, err = e.viewBuf.WriteString(`<` + e.tagName + ` `)
+ _, err = e.ViewBuf.WriteString(`<` + e.TagName + ` `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
- for attr, value := range e.attrs {
- _, err = e.viewBuf.WriteString(attr + `="` + value + `" `)
+ for attr, value := range e.Attrs {
+ _, err = e.ViewBuf.WriteString(attr + `="` + value + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
}
- _, err = e.viewBuf.WriteString(` name="` + e.name + `" >`)
+ _, err = e.ViewBuf.WriteString(` name="` + e.Name + `" >`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
- // loop over children and create domElement for each child
+ // loop over children and create DOMElement for each child
for _, child := range children {
- _, err = e.viewBuf.Write(domElement(child))
+ _, err = e.ViewBuf.Write(DOMElement(child))
if err != nil {
- log.Println("Error writing HTML domElement to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML DOMElement to buffer: DOMElementWithChildrenSelect")
return nil
}
}
- _, err = e.viewBuf.WriteString(`</` + e.tagName + `>`)
+ _, err = e.ViewBuf.WriteString(`</` + e.TagName + `>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
- if e.label != "" {
- _, err = e.viewBuf.WriteString(`<label class="active">` + e.label + `</label>`)
+ if e.Label != "" {
+ _, err = e.ViewBuf.WriteString(`<label class="active">` + e.Label + `</label>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
}
- _, err = e.viewBuf.WriteString(`</div>`)
+ _, err = e.ViewBuf.WriteString(`</div>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenSelect")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenSelect")
return nil
}
- return e.viewBuf.Bytes()
+ return e.ViewBuf.Bytes()
}
-func domElementWithChildrenCheckbox(e *element, children []*element) []byte {
- _, err := e.viewBuf.WriteString(`<` + e.tagName + ` `)
+func DOMElementWithChildrenCheckbox(e *Element, children []*Element) []byte {
+ _, err := e.ViewBuf.WriteString(`<` + e.TagName + ` `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenCheckbox")
return nil
}
- for attr, value := range e.attrs {
- _, err = e.viewBuf.WriteString(attr + `="` + value + `" `)
+ for attr, value := range e.Attrs {
+ _, err = e.ViewBuf.WriteString(attr + `="` + value + `" `)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenCheckbox")
return nil
}
}
- _, err = e.viewBuf.WriteString(` >`)
+ _, err = e.ViewBuf.WriteString(` >`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenCheckbox")
return nil
}
- if e.label != "" {
- _, err = e.viewBuf.WriteString(`<label class="active">` + e.label + `</label>`)
+ if e.Label != "" {
+ _, err = e.ViewBuf.WriteString(`<label class="active">` + e.Label + `</label>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenCheckbox")
return nil
}
}
- // loop over children and create domElement for each child
+ // loop over children and create DOMElement for each child
for _, child := range children {
- _, err = e.viewBuf.Write(domElementCheckbox(child))
+ _, err = e.ViewBuf.Write(DOMElementCheckbox(child))
if err != nil {
- log.Println("Error writing HTML domElementCheckbox to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML DOMElementCheckbox to buffer: DOMElementWithChildrenCheckbox")
return nil
}
}
- _, err = e.viewBuf.WriteString(`</` + e.tagName + `><div class="clear padding">&nbsp;</div>`)
+ _, err = e.ViewBuf.WriteString(`</` + e.TagName + `><div class="clear padding">&nbsp;</div>`)
if err != nil {
- log.Println("Error writing HTML string to buffer: domElementWithChildrenCheckbox")
+ log.Println("Error writing HTML string to buffer: DOMElementWithChildrenCheckbox")
return nil
}
- return e.viewBuf.Bytes()
+ return e.ViewBuf.Bytes()
}