Add enable attribute

pull/66/head^2
Hieromon Ikasamo 6 years ago
parent 4abfb5251f
commit 0a3e9e4b63
  1. 5
      src/AutoConnectElementBasis.h
  2. 127
      src/AutoConnectElementBasisImpl.h

@ -46,11 +46,11 @@ typedef enum {
*/ */
class AutoConnectElementBasis { class AutoConnectElementBasis {
public: public:
explicit AutoConnectElementBasis(const char* name = "", const char* value = "") : name(String(name)), value(String(value)) { explicit AutoConnectElementBasis(const char* name = "", const char* value = "") : name(String(name)), value(String(value)), enable(true) {
_type = AC_Element; _type = AC_Element;
} }
virtual ~AutoConnectElementBasis() {} virtual ~AutoConnectElementBasis() {}
virtual const String toHTML(void) const { return value; } virtual const String toHTML(void) const { return enable ? value : String(""); }
ACElement_t typeOf(void) const { return _type; } ACElement_t typeOf(void) const { return _type; }
#ifndef AUTOCONNECT_USE_JSON #ifndef AUTOCONNECT_USE_JSON
template<typename T> template<typename T>
@ -59,6 +59,7 @@ class AutoConnectElementBasis {
String name; /**< Element name */ String name; /**< Element name */
String value; /**< Element value */ String value; /**< Element value */
bool enable; /**< Enabling the element */
protected: protected:
ACElement_t _type; /**< Element type identifier */ ACElement_t _type; /**< Element type identifier */

@ -25,7 +25,7 @@
* @return An HTML string. * @return An HTML string.
*/ */
const String AutoConnectButtonBasis::toHTML(void) const { const String AutoConnectButtonBasis::toHTML(void) const {
return String(F("<button type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"")) + action + String("\">") + value + String(F("</button>")); return enable ? String(F("<button type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"")) + action + String("\">") + value + String(F("</button>")) : String("");
} }
/** /**
@ -37,14 +37,16 @@ const String AutoConnectButtonBasis::toHTML(void) const {
* @return An HTML string. * @return An HTML string.
*/ */
const String AutoConnectCheckboxBasis::toHTML(void) const { const String AutoConnectCheckboxBasis::toHTML(void) const {
String html; String html = String("");
html = String(F("<input type=\"checkbox\" name=\"")) + name + String(F("\" value=\"")) + value + String("\""); if (enable) {
if (checked) html = String(F("<input type=\"checkbox\" name=\"")) + name + String(F("\" value=\"")) + value + String("\"");
html += String(F(" checked")); if (checked)
if (label.length()) html += String(F(" checked"));
html += String(F(" id=\"")) + name + String(F("\"><label for=\"")) + name + String("\">") + label + String(F("</label")); if (label.length())
html += String(F("><br>")); html += String(F(" id=\"")) + name + String(F("\"><label for=\"")) + name + String("\">") + label + String(F("</label"));
html += String(F("><br>"));
}
return html; return html;
} }
@ -58,9 +60,11 @@ const String AutoConnectCheckboxBasis::toHTML(void) const {
const String AutoConnectFileBasis::toHTML(void) const { const String AutoConnectFileBasis::toHTML(void) const {
String html = String(""); String html = String("");
if (label.length()) if (enable) {
html = String(F("<label for=\"")) + name + String(F("\">")) + label + String(F("</label>")); if (label.length())
html += String(F("<input type=\"file\" id=\"")) + name + String(F("\" name=\"")) + name + String(F("\"><br>")); html = String(F("<label for=\"")) + name + String(F("\">")) + label + String(F("</label>"));
html += String(F("<input type=\"file\" id=\"")) + name + String(F("\" name=\"")) + name + String(F("\"><br>"));
}
return html; return html;
} }
@ -101,17 +105,18 @@ bool AutoConnectFileBasis::attach(const ACFile_t store) {
const String AutoConnectInputBasis::toHTML(void) const { const String AutoConnectInputBasis::toHTML(void) const {
String html = String(""); String html = String("");
if (label.length()) if (enable) {
html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>")); if (label.length())
html += String(F("<input type=\"text\" id=\"")) + name + String(F("\" name=\"")) + name + String("\""); html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>"));
if (pattern.length()) html += String(F("<input type=\"text\" id=\"")) + name + String(F("\" name=\"")) + name + String("\"");
html += String(F(" pattern=\"")) + pattern + String("\""); if (pattern.length())
if (placeholder.length()) html += String(F(" pattern=\"")) + pattern + String("\"");
html += String(F(" placeholder=\"")) + placeholder + String("\""); if (placeholder.length())
if (value.length()) html += String(F(" placeholder=\"")) + placeholder + String("\"");
html += String(F(" value=\"")) + value + String("\""); if (value.length())
html += String(F("><br>")); html += String(F(" value=\"")) + value + String("\"");
html += String(F("><br>"));
}
return html; return html;
} }
@ -176,21 +181,23 @@ void AutoConnectRadioBasis::empty(const size_t reserve) {
const String AutoConnectRadioBasis::toHTML(void) const { const String AutoConnectRadioBasis::toHTML(void) const {
String html = String(""); String html = String("");
if (label.length()) { if (enable) {
html = label; if (label.length()) {
if (order == AC_Vertical) html = label;
html += String(F("<br>")); if (order == AC_Vertical)
} html += String(F("<br>"));
uint8_t n = 0; }
for (const String value : _values) { uint8_t n = 0;
n++; for (const String value : _values) {
String id = name + "_" + String(n); n++;
html += String(F("<input type=\"radio\" name=\"")) + name + String(F("\" id=\"")) + id + String(F("\" value=\"")) + value + String("\""); String id = name + "_" + String(n);
if (n == checked - 1) html += String(F("<input type=\"radio\" name=\"")) + name + String(F("\" id=\"")) + id + String(F("\" value=\"")) + value + String("\"");
html += String(F(" checked")); if (n == checked - 1)
html += String(F("><label for=\"")) + id + String("\">") + value + String(F("</label>")); html += String(F(" checked"));
if (order == AC_Vertical) html += String(F("><label for=\"")) + id + String("\">") + value + String(F("</label>"));
html += String(F("<br>")); if (order == AC_Vertical)
html += String(F("<br>"));
}
} }
return html; return html;
} }
@ -227,12 +234,14 @@ void AutoConnectSelectBasis::empty(const size_t reserve) {
const String AutoConnectSelectBasis::toHTML(void) const { const String AutoConnectSelectBasis::toHTML(void) const {
String html = String(""); String html = String("");
if (label.length()) if (enable) {
html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>")); if (label.length())
html += String(F("<select name=\"")) + name + String(F("\" id=\"")) + name + String("\">"); html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>"));
for (const String option : _options) html += String(F("<select name=\"")) + name + String(F("\" id=\"")) + name + String("\">");
html += String(F("<option value=\"")) + option + "\">" + option + String(F("</option>")); for (const String option : _options)
html += String(F("</select>")); html += String(F("<option value=\"")) + option + "\">" + option + String(F("</option>"));
html += String(F("</select>"));
}
return html; return html;
} }
@ -243,7 +252,7 @@ const String AutoConnectSelectBasis::toHTML(void) const {
* @return String an HTML string. * @return String an HTML string.
*/ */
const String AutoConnectSubmitBasis::toHTML(void) const { const String AutoConnectSubmitBasis::toHTML(void) const {
return String(F("<input type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"_sa('")) + uri + String("')\">"); return enable ? String(F("<input type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"_sa('")) + uri + String("')\">") : String("");
} }
/** /**
@ -252,22 +261,26 @@ const String AutoConnectSubmitBasis::toHTML(void) const {
* @return String an HTML string. * @return String an HTML string.
*/ */
const String AutoConnectTextBasis::toHTML(void) const { const String AutoConnectTextBasis::toHTML(void) const {
String html = String("<div"); String html = String("");
String value_f = value;
if (enable) {
html = String("<div");
String value_f = value;
if (style.length()) if (style.length())
html += String(F(" style=\"")) + style + String("\""); html += String(F(" style=\"")) + style + String("\"");
html += String(">"); html += String(">");
if (format.length()) { if (format.length()) {
int buflen = (value.length() + format.length() + 16 + 1) & (~0xf); int buflen = (value.length() + format.length() + 16 + 1) & (~0xf);
char* buffer; char* buffer;
if ((buffer = (char*)malloc(buflen))) { if ((buffer = (char*)malloc(buflen))) {
snprintf(buffer, buflen, format.c_str(), value.c_str()); snprintf(buffer, buflen, format.c_str(), value.c_str());
value_f = String(buffer); value_f = String(buffer);
free(buffer); free(buffer);
}
} }
html += value_f + String(F("</div>"));
} }
html += value_f + String(F("</div>"));
return html; return html;
} }

Loading…
Cancel
Save