summaryrefslogtreecommitdiff
path: root/management/editor/elements.go
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2016-10-02 01:46:05 -0700
committerSteve Manuel <nilslice@gmail.com>2016-10-02 01:46:05 -0700
commit37d3f13e071cfdb5e063c67dec604c10dbc6ddde (patch)
treec9f2d885dd1c1c38ef6f9c07b24c58a4ff73d6a2 /management/editor/elements.go
parent0ae265fd9c8496e107b8794bcf583885b20dd37c (diff)
refactor editor view buffer to include the Item default fields.. may wantto reconsider this later as the two packages are now very closely tied. also added UI structural changes
Diffstat (limited to 'management/editor/elements.go')
-rw-r--r--management/editor/elements.go81
1 files changed, 31 insertions, 50 deletions
diff --git a/management/editor/elements.go b/management/editor/elements.go
index 4ea0be0..dd71aa1 100644
--- a/management/editor/elements.go
+++ b/management/editor/elements.go
@@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"reflect"
+ "strings"
)
type element struct {
@@ -48,6 +49,7 @@ func Select(fieldName string, p interface{}, attrs, options map[string]string) [
// may need to alloc a buffer, as we will probably loop through options
// and append the []byte from domElement() called for each option
+ attrs["class"] = "browser-default"
sel := newElement("select", attrs["label"], fieldName, p, attrs)
var opts []*element
@@ -69,29 +71,22 @@ func Select(fieldName string, p interface{}, attrs, options map[string]string) [
opts = append(opts, cta, reset)
- var val string
for k, v := range options {
+ optAttrs := map[string]string{"value": k}
if k == fieldVal {
- val = "true"
- } else {
- val = "false"
+ optAttrs["selected"] = "true"
}
opt := &element{
TagName: "option",
- Attrs: map[string]string{"value": k, "selected": val},
+ Attrs: optAttrs,
data: v,
viewBuf: &bytes.Buffer{},
}
- // if val is false (unselected option), delete the attr for clarity
- if val == "false" {
- delete(opt.Attrs, "selected")
- }
-
opts = append(opts, opt)
}
- return domElementWithChildren(sel, opts)
+ return domElementWithChildrenSelect(sel, opts)
}
// Checkbox returns the []byte of a set of <input type="checkbox"> HTML elements
@@ -100,15 +95,9 @@ func Select(fieldName string, p interface{}, attrs, options map[string]string) [
// The `fieldName` argument will cause a panic if it is not exactly the string
// form of the struct field that this editor input is representing
func Checkbox(fieldName string, p interface{}, attrs, options map[string]string) []byte {
- // options are the value attr and the display value, i.e.
- /*
- <label>
- {map value}
- <input type="checkbox" name="{fieldName}" value="{map key}"/>
- </label>
- */
-
+ attrs["class"] = "input-field col s12"
div := newElement("div", attrs["label"], "", p, attrs)
+
var opts []*element
// get the pre-checked options if this is already an existing post
@@ -120,12 +109,13 @@ func Checkbox(fieldName string, p interface{}, attrs, options map[string]string)
inputAttrs := map[string]string{
"type": "checkbox",
"value": k,
+ "id": strings.Join(strings.Split(v, " "), "-"),
}
// check if k is in the pre-checked values and set to checked
for _, x := range checked {
if k == x {
- inputAttrs["checked"] = "true"
+ inputAttrs["checked"] = "checked"
}
}
@@ -150,8 +140,9 @@ func Checkbox(fieldName string, p interface{}, attrs, options map[string]string)
// 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 {
+ e.viewBuf.Write([]byte(`<div class="input-field col s12">`))
if e.label != "" {
- e.viewBuf.Write([]byte(`<label>` + e.label))
+ e.viewBuf.Write([]byte(`<label class="active" for="` + strings.Join(strings.Split(e.label, " "), "-") + `">` + e.label + `</label>`))
}
e.viewBuf.Write([]byte(`<` + e.TagName + ` value="`))
e.viewBuf.Write([]byte(e.data + `" `))
@@ -162,19 +153,14 @@ func domElementSelfClose(e *element) []byte {
e.viewBuf.Write([]byte(` name="` + e.Name + `"`))
e.viewBuf.Write([]byte(` />`))
- if e.label != "" {
- e.viewBuf.Write([]byte(`</label>`))
- }
-
+ e.viewBuf.Write([]byte(`</div>`))
return e.viewBuf.Bytes()
}
// 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 {
- if e.label != "" {
- e.viewBuf.Write([]byte(`<label>`))
- }
+ e.viewBuf.Write([]byte(`<p class="col s6">`))
e.viewBuf.Write([]byte(`<` + e.TagName + ` `))
for attr, value := range e.Attrs {
@@ -182,18 +168,19 @@ func domElementCheckbox(e *element) []byte {
}
e.viewBuf.Write([]byte(` name="` + e.Name + `"`))
e.viewBuf.Write([]byte(` /> `))
-
if e.label != "" {
- e.viewBuf.Write([]byte(e.label + `</label>`))
+ e.viewBuf.Write([]byte(`<label for="` + strings.Join(strings.Split(e.label, " "), "-") + `">` + e.label + `</label>`))
}
-
+ e.viewBuf.Write([]byte(`</p>`))
return e.viewBuf.Bytes()
}
// domElement creates a DOM element
func domElement(e *element) []byte {
+ e.viewBuf.Write([]byte(`<div class="input-field col s12">`))
+
if e.label != "" {
- e.viewBuf.Write([]byte(`<label>` + e.label))
+ e.viewBuf.Write([]byte(`<label class="active" for="` + strings.Join(strings.Split(e.label, " "), "-") + `">` + e.label + `</label>`))
}
e.viewBuf.Write([]byte(`<` + e.TagName + ` `))
@@ -206,17 +193,13 @@ func domElement(e *element) []byte {
e.viewBuf.Write([]byte(e.data))
e.viewBuf.Write([]byte(`</` + e.TagName + `>`))
- if e.label != "" {
- e.viewBuf.Write([]byte(`</label>`))
- }
-
+ e.viewBuf.Write([]byte(`</div>`))
return e.viewBuf.Bytes()
}
-func domElementWithChildren(e *element, children []*element) []byte {
- if e.label != "" {
- e.viewBuf.Write([]byte(`<label>` + e.label))
- }
+func domElementWithChildrenSelect(e *element, children []*element) []byte {
+ e.viewBuf.Write([]byte(`<div class="input-field col s6">`))
+
e.viewBuf.Write([]byte(`<` + e.TagName + ` `))
for attr, value := range e.Attrs {
@@ -233,34 +216,32 @@ func domElementWithChildren(e *element, children []*element) []byte {
e.viewBuf.Write([]byte(`</` + e.TagName + `>`))
if e.label != "" {
- e.viewBuf.Write([]byte(`</label>`))
+ e.viewBuf.Write([]byte(`<label class="active">` + e.label + `</label>`))
}
+ e.viewBuf.Write([]byte(`</div>`))
return e.viewBuf.Bytes()
}
func domElementWithChildrenCheckbox(e *element, children []*element) []byte {
- if e.label != "" {
- e.viewBuf.Write([]byte(`<label>` + e.label))
- }
e.viewBuf.Write([]byte(`<` + e.TagName + ` `))
for attr, value := range e.Attrs {
e.viewBuf.Write([]byte(attr + `="` + value + `" `))
}
- e.viewBuf.Write([]byte(` name="` + e.Name + `"`))
+
e.viewBuf.Write([]byte(` >`))
+ if e.label != "" {
+ e.viewBuf.Write([]byte(`<label class="active">` + e.label + `</label>`))
+ }
+
// loop over children and create domElement for each child
for _, child := range children {
e.viewBuf.Write(domElementCheckbox(child))
}
- e.viewBuf.Write([]byte(`</` + e.TagName + `>`))
-
- if e.label != "" {
- e.viewBuf.Write([]byte(`</label>`))
- }
+ e.viewBuf.Write([]byte(`</` + e.TagName + `><div class="clear padding">&nbsp;</div>`))
return e.viewBuf.Bytes()
}