func (v *BoolEditorView) Render() *vecty.HTML { v.input = elem.Input( prop.Type(prop.TypeCheckbox), prop.Checked(v.model.Node.ValueBool), event.Change(func(e *vecty.Event) { v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: e.Target.Get("checked").Bool(), Immediate: true, }) }), ) return elem.Div( prop.Class("checkbox"), elem.Label( v.input, vecty.Text(v.model.Node.Label(v.Ctx)), ), ) }
func (v *Header) Render() *vecty.HTML { return elem.Navigation( prop.Class("navbar navbar-inverse navbar-fixed-top"), elem.Div( prop.Class("container-fluid"), elem.Div( prop.Class("navbar-header"), elem.Button( prop.Type("button"), prop.Class("navbar-toggle collapsed"), vecty.Data("toggle", "collapse"), vecty.Data("target", "#navbar"), elem.Span( prop.Class("sr-only"), vecty.Text("Toggle navigation"), ), elem.Span( prop.Class("icon-bar"), ), elem.Span( prop.Class("icon-bar"), ), elem.Span( prop.Class("icon-bar"), ), ), /* elem.Anchor( prop.Class("navbar-brand"), prop.Href("#"), vecty.Text("Ke"), ), */ ), elem.Div( prop.ID("navbar"), prop.Class("navbar-collapse collapse"), elem.UnorderedList( prop.Class("nav navbar-nav"), NewViewMenuView(v.Ctx), NewEditMenuView(v.Ctx), NewSaveView(v.Ctx), ), elem.Form( prop.Class("navbar-form navbar-right"), elem.Input( prop.Type("text"), prop.Class("form-control"), prop.Placeholder("Search..."), ), ), ), ), ) }
func (v *StringEditorView) Render() *vecty.HTML { contents := vecty.List{ prop.Value(v.model.Node.ValueString), prop.Class("form-control"), event.KeyUp(func(e *vecty.Event) { getVal := func() interface{} { return e.Target.Get("value").String() } val := getVal() changed := func() bool { return val != getVal() } go func() { <-time.After(common.EditorKeyboardDebounceShort) if changed() { return } v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: val, Changed: changed, }) }() }), } if sr, ok := v.model.Node.Rule.Interface.(*system.StringRule); ok && sr.Long { v.input = elem.TextArea( contents, ) } else { v.input = elem.Input( prop.Type(prop.TypeText), contents, ) } return elem.Div(v.input) }
func (v *NumberEditorView) Render() *vecty.HTML { v.input = elem.Input( prop.Type(prop.TypeNumber), prop.Value(fmt.Sprintf("%v", v.model.Node.ValueNumber)), prop.Class("form-control"), event.KeyUp(func(e *vecty.Event) { getVal := func() interface{} { val, err := strconv.ParseFloat(e.Target.Get("value").String(), 64) if err != nil { // if there's an error converting to a float, ignore it return nil } return val } val := getVal() changed := func() bool { return val != getVal() } go func() { <-time.After(common.EditorKeyboardDebounceShort) if changed() { return } v.App.Dispatch(&actions.Modify{ Undoer: &actions.Undoer{}, Editor: v.model, Before: v.model.Node.NativeValue(), After: val, Changed: changed, }) }() }), ) return elem.Div(v.input) }
func (v *AddPopupView) Render() *vecty.HTML { if v.model == nil || !v.model.Visible { return v.modal() } v.nameInput = nil v.typeSelect = nil var nameControl, typeControl *vecty.HTML if v.model.HasName() { v.nameInput = elem.Input( prop.Class("form-control"), prop.ID("add-modal-name"), ) nameControl = elem.Div( prop.Class("form-group"), elem.Label( prop.For("add-modal-name"), vecty.Text("name"), ), v.nameInput, elem.Paragraph( prop.Class("help-block"), vecty.Text("Enter a name for the new item"), ), ) } if len(v.model.Types) > 1 { var options vecty.List for _, t := range v.model.Types { displayName, err := t.Id.ValueContext(v.Ctx) if err != nil { // we shouldn't be able to get here v.App.Fail <- kerr.Wrap("NTSWPIEAHC", err) } options = append(options, elem.Option( prop.ID(t.Id.String()), vecty.Text(displayName), )) } v.typeSelect = elem.Select( prop.Class("form-control"), prop.ID("add-modal-type"), elem.Option( prop.ID(""), vecty.Text(""), ), options, ) typeControl = elem.Div( prop.Class("form-group"), elem.Label( prop.For("add-modal-type"), vecty.Text("type"), ), v.typeSelect, elem.Paragraph( prop.Class("help-block"), vecty.Text("Select a type for the new object"), ), ) } return v.modal( elem.Div( prop.Class("modal-body"), elem.Form( event.Submit(func(ev *vecty.Event) { v.save() }).PreventDefault(), nameControl, typeControl, ), ), ) }