func (v *EditorView) helpBlock() *vecty.HTML { if v.model.Node.Rule == nil || v.model.Node.Rule.Interface == nil { return nil } description := v.model.Node.Rule.Interface.(system.ObjectInterface).GetObject(v.Ctx).Description if description == "" { return nil } return elem.Paragraph( prop.Class("help-block"), vecty.Text(description), ) }
func (v *EditorView) errorBlock() *vecty.HTML { if !v.node.Invalid { return nil } errors := vecty.List{} for _, e := range v.node.Errors { errors = append(errors, elem.ListItem(vecty.Text(e.Description))) } return elem.Paragraph( prop.Class("help-block text-danger"), elem.UnorderedList(errors), ) }
func (v *MapView) Render() *vecty.HTML { if v.model == nil { return elem.Div(vecty.Text("Map (nil)")) } var info vecty.List if v.App.Misc.Info() { ir, err := v.node.Node.Rule.ItemsRule() if err != nil { v.App.Fail <- kerr.Wrap("KYTRRFBKGP", err) return nil } dt, err := ir.DisplayType() if err != nil { v.App.Fail <- kerr.Wrap("RRJAVDKLSI", err) return nil } info = append(info, elem.Paragraph( prop.Class("lead"), vecty.Text("type: map of "+dt), ), ) } return elem.Div( NewPanelNavView(v.Ctx, v.branch).Contents( func() vecty.MarkupOrComponentOrHTML { return elem.UnorderedList( prop.Class("nav navbar-nav navbar-right"), elem.ListItem( elem.Anchor( vecty.Text("Add"), prop.Href("#"), event.Click(func(ev *vecty.Event) { addCollectionItem(v.Ctx, v.App, v.model.Node) }).PreventDefault(), ), ), elem.ListItem( prop.Class("dropdown"), elem.Anchor( prop.Href("#"), prop.Class("dropdown-toggle"), vecty.Data("toggle", "dropdown"), vecty.Property("role", "button"), vecty.Property("aria-haspopup", "true"), vecty.Property("aria-expanded", "false"), vecty.Text("Options"), elem.Span( prop.Class("caret"), ), ), elem.UnorderedList( prop.Class("dropdown-menu"), elem.ListItem( elem.Anchor( prop.Href("#"), vecty.Text("Delete"), event.Click(func(e *vecty.Event) { v.App.Dispatch(&actions.Delete{ Undoer: &actions.Undoer{}, Node: v.model.Node, Parent: v.model.Node.Parent, }) }).PreventDefault(), ), ), ), ), ) }, ), info, NewEditorListView(v.Ctx, v.model, nil, nil), v.errorBlock(), ) }
func (v *ObjectEditorView) Render() *vecty.HTML { sections := vecty.List{} sections = append(sections, views.NewPanelNavView(v.Ctx, v.branch).Contents( func() vecty.MarkupOrComponentOrHTML { return elem.UnorderedList( prop.Class("nav navbar-nav navbar-right"), elem.ListItem( prop.Class("dropdown"), elem.Anchor( prop.Href("#"), prop.Class("dropdown-toggle"), vecty.Data("toggle", "dropdown"), vecty.Property("role", "button"), vecty.Property("aria-haspopup", "true"), vecty.Property("aria-expanded", "false"), vecty.Text("Options"), elem.Span( prop.Class("caret"), ), ), elem.UnorderedList( prop.Class("dropdown-menu"), elem.ListItem( elem.Anchor( prop.Href("#"), event.Click(func(ev *vecty.Event) { v.App.Dispatch(&actions.ToggleSystemControls{ Node: v.model.Node, }) }).PreventDefault(), elem.Italic( vecty.ClassMap{ "dropdown-icon": true, "glyphicon": true, "glyphicon-check": v.node.ShowSystemControls, "glyphicon-unchecked": !v.node.ShowSystemControls, }, ), vecty.Text("System controls"), ), ), elem.ListItem( prop.Class("divider"), vecty.Property("role", "separator"), ), elem.ListItem( elem.Anchor( prop.Href("#"), vecty.Text("Delete"), event.Click(func(e *vecty.Event) { v.App.Dispatch(&actions.Delete{ Undoer: &actions.Undoer{}, Node: v.model.Node, Parent: v.model.Node.Parent, }) }).PreventDefault(), ), ), ), ), ) }, ), ) d := v.model.Node.Map["description"] if !d.Null && !d.Missing && d.ValueString != "" { sections = append(sections, elem.Paragraph( prop.Class("lead"), vecty.Text(d.ValueString), )) } if v.App.Misc.Info() { dt, err := v.node.Node.DisplayType(v.Ctx) if err != nil { v.App.Fail <- kerr.Wrap("KFKGCGFULR", err) return nil } sections = append(sections, elem.Paragraph( prop.Class("lead"), vecty.Text("type: "+dt), ), ) } if v.node.ShowSystemControls { sections = append(sections, elem.Div( prop.Class("well object-editor"), views.NewEditorListView(v.Ctx, v.model, system.NewReference("kego.io/system", "object"), []string{"id", "type"}), ), ) } return elem.Div( sections, ) }
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, ), ), ) }