Fix not direct child issue
This commit is contained in:
parent
c7ac15a287
commit
b9c3769189
|
@ -1,3 +1,14 @@
|
||||||
|
HTMLElement.prototype.isChildOf = function(parent){
|
||||||
|
var node = this.parentNode;
|
||||||
|
while (node != null) {
|
||||||
|
if (node == parent) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
node = node.parentNode;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
class SerializerField {
|
class SerializerField {
|
||||||
/**
|
/**
|
||||||
* constructor
|
* constructor
|
||||||
|
@ -36,12 +47,15 @@ class Serializer {
|
||||||
* @returns {Serializer}
|
* @returns {Serializer}
|
||||||
*/
|
*/
|
||||||
constructor(element){
|
constructor(element){
|
||||||
let fields = element.querySelectorAll(`:scope > input:not([type="submit"]), :scope > select, :scope > textarea, :scope > group`);
|
let fields = element.querySelectorAll(`:scope input:not([type="submit"]), :scope select, :scope textarea, :scope group`);
|
||||||
|
let groups = [].slice.call(element.querySelectorAll(`:scope group`));
|
||||||
|
|
||||||
this._fields = new Map();
|
this._fields = new Map();
|
||||||
|
|
||||||
for(let f of fields){
|
for(let f of fields){
|
||||||
this.addField(f);
|
if(f.isChildOf(element) && groups.every(g => !f.isChildOf(g))){
|
||||||
|
this.addField(f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ func postTest(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
var p []*Person
|
var p []*Person
|
||||||
|
|
||||||
body := json.NewDecoder(r.Body)
|
body := json.NewDecoder(r.Body)
|
||||||
|
|
||||||
err := body.Decode(&p)
|
err := body.Decode(&p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(color.RedString(err.Error()))
|
fmt.Println(color.RedString(err.Error()))
|
||||||
|
@ -128,18 +129,25 @@ func isEq(p1, p2 Person) {
|
||||||
assert(p1.Surname, p2.Surname, "Surname")
|
assert(p1.Surname, p2.Surname, "Surname")
|
||||||
assert(p1.Age, p2.Age, "Age")
|
assert(p1.Age, p2.Age, "Age")
|
||||||
assert(p1.BirthDate, p2.BirthDate, "BirthDate")
|
assert(p1.BirthDate, p2.BirthDate, "BirthDate")
|
||||||
for k := range p1.Languages {
|
if !assert(len(p2.Languages), len(p1.Languages), "Languages length") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for k := range p2.Languages {
|
||||||
assert(p1.Languages[k].Language, p2.Languages[k].Language, "Languages.Language")
|
assert(p1.Languages[k].Language, p2.Languages[k].Language, "Languages.Language")
|
||||||
assert(p1.Languages[k].SkillLevel, p2.Languages[k].SkillLevel, "Languages.SkillLevel")
|
assert(p1.Languages[k].SkillLevel, p2.Languages[k].SkillLevel, "Languages.SkillLevel")
|
||||||
assert(p1.Languages[k].Native, p2.Languages[k].Native, "Languages.Native")
|
assert(p1.Languages[k].Native, p2.Languages[k].Native, "Languages.Native")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func assert(v, v2 interface{}, ident string) {
|
func assert(v, v2 interface{}, ident string) bool {
|
||||||
|
pass := true
|
||||||
if !reflect.DeepEqual(v, v2) {
|
if !reflect.DeepEqual(v, v2) {
|
||||||
fmt.Fprint(tw, color.RedString("FAIL\t"))
|
fmt.Fprint(tw, color.RedString("FAIL\t"))
|
||||||
|
pass = false
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprint(tw, color.GreenString("PASS\t"))
|
fmt.Fprint(tw, color.GreenString("PASS\t"))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(tw, "%s\t%s\n", color.BlueString(ident), color.YellowString(fmt.Sprintf("'%v'\t'%v'", v, v2)))
|
fmt.Fprintf(tw, "%s\t%s\n", color.BlueString(ident), color.YellowString(fmt.Sprintf("'%v'\t'%v'", v, v2)))
|
||||||
|
|
||||||
|
return pass
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,9 @@
|
||||||
<input name="birth_date" type="date" value="{{ $p.BirthDate.Format "2006-01-02" }}">
|
<input name="birth_date" type="date" value="{{ $p.BirthDate.Format "2006-01-02" }}">
|
||||||
{{ range $p.Languages }}
|
{{ range $p.Languages }}
|
||||||
<group name="[]languages">
|
<group name="[]languages">
|
||||||
<input name="language" type="text" value="{{ .Language }}">
|
<label>
|
||||||
|
<input name="language" type="text" value="{{ .Language }}">
|
||||||
|
</label>
|
||||||
<input name="native" type="checkbox" {{ if .Native }} checked {{ end }}>
|
<input name="native" type="checkbox" {{ if .Native }} checked {{ end }}>
|
||||||
<input name="skill_level" type="number" value="{{ .SkillLevel }}">
|
<input name="skill_level" type="number" value="{{ .SkillLevel }}">
|
||||||
</group>
|
</group>
|
||||||
|
|
Loading…
Reference in New Issue