Home
Symple module

FormElement

Base element within a Symple form.

FormElement

#include <icy/symple/form.h>
class FormElement

Defined in src/symple/include/icy/symple/form.h:33

Subclassed by: Form, FormField

Base element within a Symple form.

FormElement wraps a reference to an external JSON node and provides typed accessors for the common type, id, label, and elements fields. Pages, sections, and fields all derive from this base.

List of all members

NameKindOwner
FormElementfunctionDeclared here
FormElementfunctionDeclared here
FormElementfunctionDeclared here
operator=functionDeclared here
~FormElementfunctionDeclared here
typefunctionDeclared here
idfunctionDeclared here
labelfunctionDeclared here
setTypefunctionDeclared here
setIdfunctionDeclared here
setLabelfunctionDeclared here
setHintfunctionDeclared here
setErrorfunctionDeclared here
addPagefunctionDeclared here
addSectionfunctionDeclared here
addFieldfunctionDeclared here
getFieldfunctionDeclared here
getFieldfunctionDeclared here
hasFieldfunctionDeclared here
setLivefunctionDeclared here
livefunctionDeclared here
clearElementsfunctionDeclared here
clearfunctionDeclared here
validfunctionDeclared here
numElementsfunctionDeclared here
hasErrorsfunctionDeclared here
hasPagesfunctionDeclared here
rootfunctionDeclared here
_rootvariableDeclared here

Public Methods

ReturnNameDescription
FormElementConstructs an unbound element (root pointer is null).
FormElementConstructs an element bound to the given JSON node.
FormElementCopy constructor; copies the root pointer reference (shallow).
FormElement &operator=Copy-assigns the root pointer reference.
std::stringtype constReturns the element type string.
std::stringid constReturns the element ID string.
std::stringlabel constReturns the display label string.
voidsetTypeSets the element type. Possible values: page, section, text, text-multi, list, list-multi, checkbox, media, custom
voidsetIdSets the element ID field.
voidsetLabelSets the display label field.
voidsetHintSets the hint/description field shown below the element.
voidsetErrorSets an optional validation error message.
FormElementaddPageAppends a page child element and returns a handle to it.
FormElementaddSectionAppends a section child element and returns a handle to it.
FormFieldaddFieldAppends a typed field child element and returns a handle to it. Throws std::invalid_argument if type is not a recognised field type.
FormFieldgetFieldSearches child elements for the field with the given ID.
boolgetFieldPopulates a FormField by searching child elements for the given ID.
boolhasFieldReturns true if any child element has an ID matching the given value.
voidsetLiveSets the live flag on this element. Live elements are used to submit partial form sections (e.g. for auto-complete) without sending the entire form.
boollive constReturns true if this field is live, meaning the form-processing entity should auto-update this field's value whenever it changes.
boolclearElementsRemoves all child elements whose ID matches the given value.
voidclearClears all fields from the underlying JSON node.
boolvalid constReturns true if the form element is valid.
intnumElementsReturns the number of child elements.
boolhasErrorsReturns true if any fields have errors.
boolhasPagesReturns true if the form has multiple pages.
json::Value &root constReturns a reference to the underlying JSON node. Throws std::runtime_error if the root pointer is null.

FormElement

FormElement()

Defined in src/symple/include/icy/symple/form.h:37

Constructs an unbound element (root pointer is null).


FormElement

FormElement(json::Value & root, std::string_view type = "", std::string_view id = "", std::string_view label = "")

Defined in src/symple/include/icy/symple/form.h:44

Constructs an element bound to the given JSON node.

Parameters

  • root JSON node this element refers to.

  • type Optional element type string.

  • id Optional element ID string.

  • label Optional display label string.


FormElement

FormElement(const FormElement & r)

Defined in src/symple/include/icy/symple/form.h:49

Copy constructor; copies the root pointer reference (shallow).

Parameters

  • r Source element.

operator=

FormElement & operator=(const FormElement & r)

Defined in src/symple/include/icy/symple/form.h:53

Copy-assigns the root pointer reference.

Parameters

  • r Source element.

type

const

std::string type() const

Defined in src/symple/include/icy/symple/form.h:58

Returns the element type string.


id

const

std::string id() const

Defined in src/symple/include/icy/symple/form.h:61

Returns the element ID string.


label

const

std::string label() const

Defined in src/symple/include/icy/symple/form.h:64

Returns the display label string.


setType

void setType(std::string_view type)

Defined in src/symple/include/icy/symple/form.h:70

Sets the element type. Possible values: page, section, text, text-multi, list, list-multi, checkbox, media, custom

Parameters

  • type Element type string.

setId

void setId(std::string_view id)

Defined in src/symple/include/icy/symple/form.h:74

Sets the element ID field.

Parameters

  • id Element ID string.

setLabel

void setLabel(std::string_view text)

Defined in src/symple/include/icy/symple/form.h:78

Sets the display label field.

Parameters

  • text Label text.

setHint

void setHint(std::string_view text)

Defined in src/symple/include/icy/symple/form.h:82

Sets the hint/description field shown below the element.

Parameters

  • text Hint text.

setError

void setError(std::string_view error)

Defined in src/symple/include/icy/symple/form.h:86

Sets an optional validation error message.

Parameters

  • error Error text to display.

addPage

FormElement addPage(std::string_view id = "", std::string_view label = "")

Defined in src/symple/include/icy/symple/form.h:92

Appends a page child element and returns a handle to it.

Parameters

  • id Optional page ID.

  • label Optional page label.

Returns

FormElement referencing the new page node.


addSection

FormElement addSection(std::string_view id = "", std::string_view label = "")

Defined in src/symple/include/icy/symple/form.h:99

Appends a section child element and returns a handle to it.

Parameters

  • id Optional section ID.

  • label Optional section label.

Returns

FormElement referencing the new section node.


addField

FormField addField(std::string_view type, std::string_view id = "", std::string_view label = "")

Defined in src/symple/include/icy/symple/form.h:108

Appends a typed field child element and returns a handle to it. Throws std::invalid_argument if type is not a recognised field type.

Parameters

  • type Field type (e.g. "text", "list", "boolean").

  • id Optional field ID.

  • label Optional field label.

Returns

FormField referencing the new field node.


getField

FormField getField(std::string_view id, bool partial = false)

Defined in src/symple/include/icy/symple/form.h:115

Searches child elements for the field with the given ID.

Parameters

  • id Field ID to search for.

  • partial If true, performs a substring match.

Returns

FormField handle (may be invalid if not found).


getField

bool getField(std::string_view id, FormField & field, bool partial = false)

Defined in src/symple/include/icy/symple/form.h:122

Populates a FormField by searching child elements for the given ID.

Parameters

  • id Field ID to search for.

  • field Output field handle.

  • partial If true, performs a substring match.

Returns

True if the field was found.


hasField

bool hasField(std::string_view id, bool partial = false)

Defined in src/symple/include/icy/symple/form.h:128

Returns true if any child element has an ID matching the given value.

Parameters

  • id ID string to search for.

  • partial If true, a substring match is sufficient.


setLive

void setLive(bool flag)

Defined in src/symple/include/icy/symple/form.h:134

Sets the live flag on this element. Live elements are used to submit partial form sections (e.g. for auto-complete) without sending the entire form.

Parameters

  • flag True to enable live updates.

live

const

bool live() const

Defined in src/symple/include/icy/symple/form.h:139

Returns true if this field is live, meaning the form-processing entity should auto-update this field's value whenever it changes.


clearElements

bool clearElements(std::string_view id, bool partial = false)

Defined in src/symple/include/icy/symple/form.h:145

Removes all child elements whose ID matches the given value.

Parameters

  • id ID string to match against.

  • partial If true, removes elements whose ID contains the string.

Returns

True if at least one element was removed.


clear

void clear()

Defined in src/symple/include/icy/symple/form.h:148

Clears all fields from the underlying JSON node.


valid

const

bool valid() const

Defined in src/symple/include/icy/symple/form.h:151

Returns true if the form element is valid.


numElements

int numElements()

Defined in src/symple/include/icy/symple/form.h:154

Returns the number of child elements.


hasErrors

bool hasErrors()

Defined in src/symple/include/icy/symple/form.h:157

Returns true if any fields have errors.


hasPages

bool hasPages()

Defined in src/symple/include/icy/symple/form.h:160

Returns true if the form has multiple pages.


root

const

json::Value & root() const

Defined in src/symple/include/icy/symple/form.h:164

Returns a reference to the underlying JSON node. Throws std::runtime_error if the root pointer is null.

Protected Attributes

ReturnNameDescription
json::Value *_rootThe root pointer is just a reference to the externally managed JSON value memory.

_root

json::Value * _root

Defined in src/symple/include/icy/symple/form.h:169

The root pointer is just a reference to the externally managed JSON value memory.