EmbAJAX
Simplistic framework for creating and handling displays and controls on a web page served by an embeddable device (Arduino or other microcontroller with Arduino support).
|
Abstract base class for modifiable elements. More...
#include <EmbAJAX.h>
Public Member Functions | |
EmbAJAXElement (const char *id) | |
const char * | id () const |
bool | sendUpdates (uint16_t since, bool first) override |
virtual const char * | value (uint8_t which=EmbAJAXBase::Value) const |
virtual bool | valueNeedsEscaping (uint8_t which=EmbAJAXBase::Value) const |
virtual const char * | valueProperty (uint8_t which=EmbAJAXBase::Value) const |
virtual void | updateFromDriverArg (const char *argname) |
EmbAJAXElement * | toElement () override final |
Public Member Functions inherited from EmbAJAXBase | |
virtual void | print () const =0 |
void | setVisible (bool visible) |
void | setEnabled (bool enabled) |
virtual EmbAJAXElement * | findChild (const char *id) const |
Protected Member Functions | |
void | setBasicProperty (uint8_t num, bool status) override |
bool | basicProperty (uint8_t num) const |
void | setChanged () |
bool | changed (uint16_t since) |
void | printTextInput (size_t size, const char *value) const |
Protected Member Functions inherited from EmbAJAXBase | |
void | printChildren (EmbAJAXBase **children, size_t num) const |
bool | sendUpdates (EmbAJAXBase **children, size_t num, uint16_t since, bool first) |
EmbAJAXElement * | findChild (EmbAJAXBase **children, size_t num, const char *id) const |
void | printPage (EmbAJAXBase **children, size_t num, const char *_title, const char *_header, uint16_t _min_interval) const |
void | handleRequest (EmbAJAXBase **children, size_t num, void(*change_callback)()) |
Protected Attributes | |
byte | _flags |
const char * | _id |
Friends | |
template<size_t NUM> | |
class | EmbAJAXPage |
class | EmbAJAXBase |
Additional Inherited Members | |
Public Types inherited from EmbAJAXBase | |
enum | Property { Visibility , Enabledness , Value , FirstElementSpecificProperty , HTMLAllowed } |
Static Public Member Functions inherited from EmbAJAXBase | |
static void | setDriver (EmbAJAXOutputDriverBase *driver) |
Static Protected Attributes inherited from EmbAJAXBase | |
static EmbAJAXOutputDriverBase * | _driver |
static char | itoa_buf [8] |
constexpr static const char | null_string [1] |
Abstract base class for modifiable elements.
Abstract Base class for objects that can be changed, either from the server, or from both the client and the server. To create a derived class, you will need to provide appropriate implementations of print(), value(), and valueProperty(). Further, you will most likely want to add a function like setValue() for control from the server. If the element is to receive updates from the client side, you will a) have to include an appropriate onChange-call in print(), and b) provide a non-empty implementation of updateFromDriverArg().
Best look at a simple example such as EmbAJAXMutableSpan or EmbAJAXSlider for details.
EmbAJAXElement::EmbAJAXElement | ( | const char * | id | ) |
id | The id for the element. Note that the string is not copied. Do not use a temporary string in this place. Also, do keep it short. |
|
protected |
Filthy trick to keep (template) implementation out of the header. See EmbAJAXTextInput::print()
|
overridevirtual |
serialize pending changes for the client. Virtual so you could customize it, completely, but instead you probably want to override EmbAJAXElement::valueProperty(), only, instead.
since | revision number last sent to the server. Send only changes that occured since this revision. |
first | if false, and this object writes any update, it should write a ',', first. |
Reimplemented from EmbAJAXBase.
Reimplemented in EmbAJAXHideableContainer< NUM >.
|
inlinefinaloverridevirtual |
Cast this object to EmbAJAXElement if it is a controllable element.
Reimplemented from EmbAJAXBase.
|
inlinevirtual |
override this in your derived class to allow updates to be propagated from client to server (if wanted). The implementation need not call setChanged().
Reimplemented in EmbAJAXScriptedSpan, EmbAJAXOptionSelectBase, EmbAJAXCheckButton, EmbAJAXMomentaryButton, EmbAJAXPushButton, EmbAJAXColorPicker, EmbAJAXSlider, EmbAJAXTextInput< SIZE >, and EmbAJAXJoystick.
|
inlinevirtual |
const char representation of the current server side value. Must be implemented in derived class. This base class handles visibility and enabledness, only. Do call the base implementation for any "which" that is not handled in your derived class.
Reimplemented in EmbAJAXScriptedSpan, EmbAJAXJoystick, EmbAJAXOptionSelectBase, EmbAJAXCheckButton, EmbAJAXPushButton, EmbAJAXColorPicker, EmbAJAXSlider, EmbAJAXTextInput< SIZE >, and EmbAJAXMutableSpan.
|
inlinevirtual |
Returns true, if the value may contain HTML, and needs HTML escaping when passed to the client. Base implementation simply returns false.
Reimplemented in EmbAJAXPushButton, and EmbAJAXMutableSpan.
|
inlinevirtual |
The JS property that will have to be set on the client. Must be implemented in derived class. This base class handles visibility and enabledness, only. Do call the base implementation for any "which" that is not handled in your derived class.
Reimplemented in EmbAJAXScriptedSpan, EmbAJAXJoystick, EmbAJAXOptionSelectBase, EmbAJAXCheckButton, EmbAJAXPushButton, EmbAJAXColorPicker, EmbAJAXSlider, EmbAJAXTextInput< SIZE >, and EmbAJAXMutableSpan.