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(); void loop();
bool write(float energy); bool write(float energy);
struct Data { struct pvData {
uint8_t tm_year; uint8_t tm_year;
uint8_t tm_mon; uint8_t tm_mon;
uint8_t tm_mday; uint8_t tm_mday;
@ -22,6 +22,8 @@ public:
private: private:
void onDatabase(AsyncWebServerRequest* request); 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; AsyncWebServer* _server;
}; };

View File

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

View File

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

View File

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

View File

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

Binary file not shown.