aqhome-cgi: choose graph params according to modality.

This commit is contained in:
Martin Preuss
2026-05-29 17:19:19 +02:00
parent 62c86285f5
commit 5bb50d4187

View File

@@ -54,7 +54,7 @@ struct MY_GRAPH_PARAMS {
static MY_GRAPH_PARAMS _graphParams[]={ static MY_GRAPH_PARAMS _graphParamsAny[]={
{"4h", "last 4 hours", "Lm5", 4*60*60, 2*60}, {"4h", "last 4 hours", "Lm5", 4*60*60, 2*60},
{"1d", "last 24 hours", "Lm30", 24*60*60, 5*60}, {"1d", "last 24 hours", "Lm30", 24*60*60, 5*60},
{"1w", "last 7 days", "Lm240", 7*24*60*60, 15*60}, {"1w", "last 7 days", "Lm240", 7*24*60*60, 15*60},
@@ -66,6 +66,18 @@ static MY_GRAPH_PARAMS _graphParams[]={
static MY_GRAPH_PARAMS _graphParamsBool[]={
{"4h", "last 4 hours", "Sa5", 4*60*60, 2*60},
{"1d", "last 24 hours", "Sa30", 24*60*60, 5*60},
{"1w", "last 7 days", "Sa240", 7*24*60*60, 15*60},
{"1m", "last 30 days", "Sa480", 30*24*60*60, 60*60},
{"6m", "last 6 months", "Sa720", 182*24*60*60, 60*60},
{"12m","last 12 months", "Sa1440", 365*24*60*60, 60*60},
{NULL, NULL, NULL, 0, 0}
};
/* ------------------------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------------------------
* forward declarations * forward declarations
* ------------------------------------------------------------------------------------------------ * ------------------------------------------------------------------------------------------------
@@ -84,7 +96,7 @@ static void _createGraph(AQH_DATACLIENT *dc,
const char *sImgFile, int imgWidth, int imgHeight, uint64_t numDataPoints); const char *sImgFile, int imgWidth, int imgHeight, uint64_t numDataPoints);
static AQDG_GRAPH *_mkGraphObjectWithTitle(const char *graphTitle, const MY_GRAPH_PARAMS *graphParams, int precision); static AQDG_GRAPH *_mkGraphObjectWithTitle(const char *graphTitle, const MY_GRAPH_PARAMS *graphParams, int precision);
static void _mkPathForValueAndPeriod(AQH_MODULE *m, const AQH_VALUE *v, const MY_GRAPH_PARAMS *graphParams, GWEN_BUFFER *dbuf); static void _mkPathForValueAndPeriod(AQH_MODULE *m, const AQH_VALUE *v, const MY_GRAPH_PARAMS *graphParams, GWEN_BUFFER *dbuf);
static const MY_GRAPH_PARAMS *_getParamsByName(const char *s); static const MY_GRAPH_PARAMS *_getParamsByName(const char *s, int modality);
@@ -138,9 +150,6 @@ void _runGraphValueWithArgs(AQH_MODULE *m,
DBG_DEBUG(NULL, "GraphValue with args"); DBG_DEBUG(NULL, "GraphValue with args");
dbQuery=AQCGI_Request_GetDbQuery(rq); dbQuery=AQCGI_Request_GetDbQuery(rq);
sPeriod=GWEN_DB_GetCharValue(dbQuery, "period", 0, NULL); sPeriod=GWEN_DB_GetCharValue(dbQuery, "period", 0, NULL);
graphParams=_getParamsByName(sPeriod);
if (graphParams==NULL)
graphParams=&_graphParams[0];
DBG_DEBUG(NULL, "Device=%s, value=%s, period=%s", DBG_DEBUG(NULL, "Device=%s, value=%s, period=%s",
sDeviceName?sDeviceName:"<empty>", sValueName?sValueName:"<empty>", sDeviceName?sDeviceName:"<empty>", sValueName?sValueName:"<empty>",
sPeriod?sPeriod:"<empty>"); sPeriod?sPeriod:"<empty>");
@@ -149,6 +158,7 @@ void _runGraphValueWithArgs(AQH_MODULE *m,
if (value) { if (value) {
GWEN_BUFFER *fbuf; GWEN_BUFFER *fbuf;
graphParams=_getParamsByName(sPeriod, AQH_Value_GetModality(value));
fbuf=GWEN_Buffer_new(0, 256, 0, 1); fbuf=GWEN_Buffer_new(0, 256, 0, 1);
_mkPathForValueAndPeriod(m, value, graphParams, fbuf); _mkPathForValueAndPeriod(m, value, graphParams, fbuf);
if (!AQH_ModService_FileIsCurrent(GWEN_Buffer_GetStart(fbuf), graphParams->acceptedAgeInSeconds)) { if (!AQH_ModService_FileIsCurrent(GWEN_Buffer_GetStart(fbuf), graphParams->acceptedAgeInSeconds)) {
@@ -261,18 +271,26 @@ void _mkPathForValueAndPeriod(AQH_MODULE *m, const AQH_VALUE *v, const MY_GRAPH_
const MY_GRAPH_PARAMS *_getParamsByName(const char *s) const MY_GRAPH_PARAMS *_getParamsByName(const char *s, int modality)
{ {
const MY_GRAPH_PARAMS *startP;
const MY_GRAPH_PARAMS *p; const MY_GRAPH_PARAMS *p;
p=_graphParams; switch(modality) {
case AQH_ValueModality_Door:
case AQH_ValueModality_Motion:
case AQH_ValueModality_OnOff: startP=_graphParamsBool; break;
default: startP=_graphParamsAny; break;
}
p=startP;
while(p->name) { while(p->name) {
if (strcasecmp(p->name, s)==0) if (strcasecmp(p->name, s)==0)
return p; return p;
p++; p++;
} }
return NULL; return startP;
} }