removed lambda function

This commit is contained in:
Ralf Bauer 2023-06-13 22:49:07 +02:00
parent ec788d6a30
commit 925c434e61
6 changed files with 71 additions and 65 deletions

View File

@ -12,7 +12,7 @@ public:
void loop();
bool write(float energy);
struct Data {
struct pvData {
uint8_t tm_year;
uint8_t tm_mon;
uint8_t tm_mday;
@ -22,6 +22,8 @@ public:
private:
void onDatabase(AsyncWebServerRequest* request);
static size_t readchunk(uint8_t* buffer, size_t maxLen, size_t index);
static size_t readchunk1(uint8_t* buffer, size_t maxLen, size_t index);
AsyncWebServer* _server;
};

View File

@ -48,7 +48,7 @@ bool WebApiDatabaseClass::write(float energy)
return (false);
// MessageOutput.println("Energy difference > 0");
struct Data d;
struct pvData d;
d.tm_hour = old_hour;
old_hour = timeinfo.tm_hour;
d.tm_year = timeinfo.tm_year - 100; // year counting from 2000
@ -70,27 +70,22 @@ bool WebApiDatabaseClass::write(float energy)
MessageOutput.println("Failed to append to database.");
return (false);
}
f.write((const uint8_t*)&d, sizeof(Data));
f.write((const uint8_t*)&d, sizeof(pvData));
f.close();
// MessageOutput.println("Write data point.");
return (true);
}
void WebApiDatabaseClass::onDatabase(AsyncWebServerRequest* request)
// read chunk from database
size_t WebApiDatabaseClass::readchunk(uint8_t* buffer, size_t maxLen, size_t index)
{
if (!WebApi.checkCredentialsReadonly(request)) {
return;
}
AsyncWebServerResponse* response = request->beginChunkedResponse("application/json",
[](uint8_t* buffer, size_t maxLen, size_t index) -> size_t {
static bool first = true;
static bool last = false;
static File f;
uint8_t* pr = buffer;
uint8_t* pre = pr + maxLen - 30;
uint8_t* pre = pr + maxLen - 50;
size_t r;
struct Data d;
struct pvData d;
if (first) {
f = LittleFS.open(DATABASE_FILENAME, "r", false);
@ -100,7 +95,7 @@ void WebApiDatabaseClass::onDatabase(AsyncWebServerRequest* request)
*pr++ = '[';
}
while (true) {
r = f.read((uint8_t*)&d, sizeof(Data)); // read from database
r = f.read((uint8_t*)&d, sizeof(pvData)); // read from database
if (r <= 0) {
if (last) {
f.close();
@ -125,8 +120,23 @@ void WebApiDatabaseClass::onDatabase(AsyncWebServerRequest* request)
if (pr >= pre)
return (pr - buffer); // buffer full, return number of chars
}
});
}
size_t WebApiDatabaseClass::readchunk1(uint8_t* buffer, size_t maxLen, size_t index)
{
size_t x = readchunk(buffer, maxLen, index);
MessageOutput.println("----------");
MessageOutput.println(maxLen);
MessageOutput.println(x);
return(x);
}
void WebApiDatabaseClass::onDatabase(AsyncWebServerRequest* request)
{
if (!WebApi.checkCredentialsReadonly(request)) {
return;
}
AsyncWebServerResponse* response = request->beginChunkedResponse("application/json", readchunk);
request->send(response);
}

View File

@ -1,12 +1,10 @@
<template>
<div class="card" :class="{}">
<div v-if="dataBase.valid_data">
<div class="card-header">
{{ $t('chart.LastDay') }}
</div>
<GoogleChart />
</div>
</div>
</template>
<script lang="ts">

View File

@ -1,13 +1,9 @@
<template>
<div class="card" :class="{}">
<div v-if="dataBase.valid_data">
<div class="card-header">
</div>
<div>
<GoogleChart />
</div>
</div>
</div>
</template>
<script lang="ts">

View File

@ -16,7 +16,7 @@
</button>
</div>
</div>
<BarChart v-bind:dataBase="dataBase" dataLoading="dataLoading" />
<BarChart v-bind:dataBase="dataBase" />
<CalendarChart v-bind:dataBase="dataBase" />
<div class="tab-content" id="v-pills-tabContent" :class="{

Binary file not shown.