Symple module

FormElement

Base element within a Symple form.

#include <icy/symple/form.h>

class FormElement

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

Subclassed by
Form, FormField

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.

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.
~FormElement virtual
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

ParameterTypeDescription
rootjson::Value &JSON node this element refers to.
typestd::string_viewOptional element type string.
idstd::string_viewOptional element ID string.
labelstd::string_viewOptional 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

ParameterTypeDescription
rconst FormElement &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

ParameterTypeDescription
rconst FormElement &Source element.

~FormElement

virtual

virtual ~FormElement()

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


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

ParameterTypeDescription
typestd::string_viewElement 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

ParameterTypeDescription
idstd::string_viewElement 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

ParameterTypeDescription
textstd::string_viewLabel 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

ParameterTypeDescription
textstd::string_viewHint 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

ParameterTypeDescription
errorstd::string_viewError 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.

Returns

FormElement referencing the new page node.

Parameters

ParameterTypeDescription
idstd::string_viewOptional page ID.
labelstd::string_viewOptional page label.

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.

Returns

FormElement referencing the new section node.

Parameters

ParameterTypeDescription
idstd::string_viewOptional section ID.
labelstd::string_viewOptional section label.

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.

Returns

FormField referencing the new field node.

Parameters

ParameterTypeDescription
typestd::string_viewField type (e.g. "text", "list", "boolean").
idstd::string_viewOptional field ID.
labelstd::string_viewOptional field label.

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.

Returns

FormField handle (may be invalid if not found).

Parameters

ParameterTypeDescription
idstd::string_viewField ID to search for.
partialboolIf true, performs a substring match.

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.

Returns

True if the field was found.

Parameters

ParameterTypeDescription
idstd::string_viewField ID to search for.
fieldFormField &Output field handle.
partialboolIf true, performs a substring match.

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

ParameterTypeDescription
idstd::string_viewID string to search for.
partialboolIf 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

ParameterTypeDescription
flagboolTrue 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.

Returns

True if at least one element was removed.

Parameters

ParameterTypeDescription
idstd::string_viewID string to match against.
partialboolIf true, removes elements whose ID contains the string.

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

Type: json::Value *

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

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