more work on mdevices module.
This commit is contained in:
@@ -37,9 +37,10 @@
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static void _writeValueToDetailedTable(const char *sDeviceName, const AQH_VALUE *value, GWEN_BUFFER *dbuf);
|
||||
static void _writeValueListToTable(const char *sDeviceName, const AQH_VALUE_LIST *valueList, GWEN_BUFFER *dbuf);
|
||||
static void _writeValueToTable(const char *sDeviceName, const AQH_VALUE *value, GWEN_BUFFER *dbuf);
|
||||
static void _addGraphLink(const char *sDeviceName, const char *sValueName, const char *sPeriod, GWEN_BUFFER *dbuf);
|
||||
static void _addGraphLink(const char *sDeviceName, const char *sValueName, const char *sPeriod, GWEN_BUFFER *dbuf, int withLink);
|
||||
|
||||
|
||||
|
||||
@@ -58,24 +59,61 @@ void AQH_ModDevices_RunValuesAsGraph(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSI
|
||||
if (!(sDeviceName && *sDeviceName))
|
||||
AQH_ModDevices_RunIndex(m, rq, session, dc, dbuf);
|
||||
else {
|
||||
AQH_VALUE_LIST *valueList;
|
||||
const char *sValueName;
|
||||
|
||||
valueList=AQH_DataClient_GetValues(dc, sDeviceName, 0);
|
||||
if (valueList && AQH_Value_List_GetCount(valueList)) {
|
||||
sValueName=GWEN_DB_GetCharValue(dbQuery, "value", 0, NULL);
|
||||
if (sValueName && *sValueName) {
|
||||
AQH_VALUE *value;
|
||||
|
||||
GBAA(dbuf,"<h1>Values for Device %s</h1>\n", sDeviceName);
|
||||
_writeValueListToTable(sDeviceName, valueList, dbuf);
|
||||
GBAS(dbuf, "\n");
|
||||
GBAA(dbuf,"<h1>Value %s/%s</h1>\n", sDeviceName, sValueName);
|
||||
value=AQH_ModDevices_GetValueForDevice(dc, sDeviceName, sValueName);
|
||||
if (value) {
|
||||
_writeValueToDetailedTable(sDeviceName, value, dbuf);
|
||||
AQH_Value_free(value);
|
||||
AQCGI_Request_AddResponseHeaderData(rq, "Refresh: 120");
|
||||
}
|
||||
}
|
||||
else {
|
||||
GBAS(dbuf,"<p>No values.</p>\n");
|
||||
AQH_VALUE_LIST *valueList;
|
||||
|
||||
valueList=AQH_DataClient_GetValues(dc, sDeviceName, 0);
|
||||
if (valueList && AQH_Value_List_GetCount(valueList)) {
|
||||
|
||||
GBAA(dbuf,"<h1>Values for Device %s</h1>\n", sDeviceName);
|
||||
_writeValueListToTable(sDeviceName, valueList, dbuf);
|
||||
GBAS(dbuf, "\n");
|
||||
}
|
||||
else {
|
||||
GBAS(dbuf,"<p>No values.</p>\n");
|
||||
}
|
||||
AQH_Value_List_free(valueList);
|
||||
AQCGI_Request_AddResponseHeaderData(rq, "Refresh: 305");
|
||||
}
|
||||
AQH_Value_List_free(valueList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void _writeValueToDetailedTable(const char *sDeviceName, const AQH_VALUE *value, GWEN_BUFFER *dbuf)
|
||||
{
|
||||
const char *sValueName;
|
||||
|
||||
GBAS(dbuf, "<table>\n");
|
||||
sValueName=AQH_Value_GetName(value);
|
||||
|
||||
GBAS(dbuf, "<tr><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "4h", dbuf, 0);
|
||||
GBAS(dbuf, "</td><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "1d", dbuf, 0);
|
||||
GBAS(dbuf, "</td></tr><tr><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "1w", dbuf, 0);
|
||||
GBAS(dbuf, "</td><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "12m", dbuf, 0);
|
||||
GBAS(dbuf, "</td></tr>\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void _writeValueListToTable(const char *sDeviceName, const AQH_VALUE_LIST *valueList, GWEN_BUFFER *dbuf)
|
||||
{
|
||||
const AQH_VALUE *value;
|
||||
@@ -85,7 +123,7 @@ void _writeValueListToTable(const char *sDeviceName, const AQH_VALUE_LIST *value
|
||||
|
||||
value=AQH_Value_List_First(valueList);
|
||||
while(value) {
|
||||
if (AQH_Value_GetValueType(value)==AQH_ValueType_Sensor)
|
||||
if (AQH_Value_GetValueType(value)!=AQH_ValueType_Actor)
|
||||
_writeValueToTable(sDeviceName, value, dbuf);
|
||||
value=AQH_Value_List_Next(value);
|
||||
}
|
||||
@@ -102,16 +140,24 @@ void _writeValueToTable(const char *sDeviceName, const AQH_VALUE *value, GWEN_BU
|
||||
sValueName=AQH_Value_GetName(value);
|
||||
|
||||
GBAS(dbuf, "<tr><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "1d", dbuf);
|
||||
_addGraphLink(sDeviceName, sValueName, "1d", dbuf, 1);
|
||||
GBAS(dbuf, "</td><td>");
|
||||
_addGraphLink(sDeviceName, sValueName, "1w", dbuf);
|
||||
_addGraphLink(sDeviceName, sValueName, "1w", dbuf, 1);
|
||||
GBAS(dbuf, "</td></tr>\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void _addGraphLink(const char *sDeviceName, const char *sValueName, const char *sPeriod, GWEN_BUFFER *dbuf)
|
||||
void _addGraphLink(const char *sDeviceName, const char *sValueName, const char *sPeriod, GWEN_BUFFER *dbuf, int withLink)
|
||||
{
|
||||
if (withLink) {
|
||||
GBAS(dbuf, "<a href=\"vgraph.html?device=");
|
||||
GWEN_Text_EscapeToBufferTolerant(sDeviceName, dbuf);
|
||||
GBAS(dbuf, "&value=");
|
||||
GWEN_Text_EscapeToBufferTolerant(sValueName, dbuf);
|
||||
GBAS(dbuf, "\">");
|
||||
}
|
||||
|
||||
GBAS(dbuf, "<img src=\"graph.html?device=");
|
||||
GWEN_Text_EscapeToBufferTolerant(sDeviceName, dbuf);
|
||||
GBAS(dbuf, "&value=");
|
||||
@@ -119,6 +165,10 @@ void _addGraphLink(const char *sDeviceName, const char *sValueName, const char *
|
||||
GBAA(dbuf, "&period=%s\"", sPeriod);
|
||||
GBAA(dbuf, " alt=\"%s\" width=\"%d\" height=\"%d\"", sValueName, AQH_MODDEVICES_GRAPH_WIDTH, AQH_MODDEVICES_GRAPH_HEIGHT);
|
||||
GBAS(dbuf, "/>");
|
||||
|
||||
if (withLink) {
|
||||
GBAS(dbuf, "</a>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user