diff --git a/src/constanta special/contantasp.html b/src/constanta special/contantasp.html
index a76f7a5..c669d3a 100644
--- a/src/constanta special/contantasp.html
+++ b/src/constanta special/contantasp.html
@@ -82,8 +82,10 @@
id="%time%" name="%time%" class="form-control time" onkeypress="return onlyNumberKey(event,this)" onchange="chback(this)" value="%timeval%">
-
@@ -138,7 +140,7 @@
};
- function setConstanta(e){
+ function setMissingVal(e){
e = e || window.event;
var targ1 = e.target || e.srcElement || e;
if (targ1.nodeType == 3) targ1 = targ1.parentNode; // defeat Safari bug
@@ -147,12 +149,27 @@
const speed = targ.getElementsByClassName("speed")[0].value;
const dist = targ.getElementsByClassName("dist")[0].value;
const time = targ.getElementsByClassName("time")[0].value;
- if (!(dist<1000)){
- alert ("Trip "+trip+"-> [Dist] cannot exceed 1000 Km");
+ if (speed==="" && time==="" && dist==="") {
+ alert ("Trip "+trip+"-> Cannot Empty Cells");
return;
}
- if (speed===""){
- alert ("Trip "+trip+"-> [Speed] is required");
+ var tempval=0;
+ if (dist && speed==="" && time) {
+ tempval=(dist/(time/60)).toFixed(3);
+ console.log ("empty speed:" + tempval);
+ targ.getElementsByClassName("speed")[0].value=tempval;
+ } else if (dist && speed && time===""){
+ tempval=Math.round((dist/speed)*60);
+ console.log ("empty time:" + tempval);
+ targ.getElementsByClassName("time")[0].value=tempval;
+ } else if (dist==="" && speed && time){
+ tempval=(speed*time/60).toFixed(2);
+ console.log ("empty dist:" + tempval);
+ targ.getElementsByClassName("dist")[0].value=tempval;
+ }
+
+ if (!(dist<1000)){
+ alert ("Trip "+trip+"-> [Dist] cannot exceed 1000 Km");
return;
}
if (!(speed<100)){
@@ -164,13 +181,8 @@
return;
}
const stime = targ.getElementsByClassName("stime")[0].value;
- if (stime===""){
- alert ("Trip "+trip+"-> [Start Time] is required");
- return;
- }
-
- // var full_data='{"trip":"'+trip+'", "speed":"'+speed+'", "dist":"'+dist+'", "time":"'+time+'", "stime":"'+stime+'"}';
+ var full_data='{"trip":"'+trip+'", "speed":"'+speed+'", "dist":"'+dist+'", "time":"'+time+'", "stime":"'+stime+'"}';
console.log(full_data);
// sendjson(full_data);
};
diff --git a/src/constanta.h b/src/constanta.h
index 717d6f8..844dc5a 100644
--- a/src/constanta.h
+++ b/src/constanta.h
@@ -79,8 +79,10 @@ const char HTML_CONSTROW[] PROGMEM = R"rawliteral(
id="%time%" name="%time%" class="form-control time" onkeypress="return onlyNumberKey(event,this)" onchange="chback(this)" value="%timeval%">
-
)rawliteral";
@@ -131,6 +133,55 @@ const char HTML_CONSTEND[] PROGMEM = R"rawliteral(
};
+
+ function setMissingVal(e){
+ e = e || window.event;
+ var targ1 = e.target || e.srcElement || e;
+ if (targ1.nodeType == 3) targ1 = targ1.parentNode; // defeat Safari bug
+ const targ = targ1.closest(".row");
+ const trip = targ.getElementsByClassName("trip")[0].textContent[0];
+ const speed = targ.getElementsByClassName("speed")[0].value;
+ const dist = targ.getElementsByClassName("dist")[0].value;
+ const time = targ.getElementsByClassName("time")[0].value;
+ if (speed==="" && time==="" && dist==="") {
+ alert ("Trip "+trip+"-> Cannot Empty Cells");
+ return;
+ }
+ var tempval=0;
+ if (dist && speed==="" && time) {
+ tempval=(dist/(time/60)).toFixed(3);
+ console.log ("empty speed:" + tempval);
+ targ.getElementsByClassName("speed")[0].value=tempval;
+ } else if (dist && speed && time===""){
+ tempval=Math.round((dist/speed)*60);
+ console.log ("empty time:" + tempval);
+ targ.getElementsByClassName("time")[0].value=tempval;
+ } else if (dist==="" && speed && time){
+ tempval=(speed*time/60).toFixed(2);
+ console.log ("empty dist:" + tempval);
+ targ.getElementsByClassName("dist")[0].value=tempval;
+ }
+
+ if (!(dist<1000)){
+ alert ("Trip "+trip+"-> [Dist] cannot exceed 1000 Km");
+ return;
+ }
+ if (!(speed<100)){
+ alert ("Trip "+trip+"-> [Speed] cannot exceed 100 Km/h");
+ return;
+ }
+ if (!(time<1000)){
+ alert ("Trip "+trip+"-> [Time] cannot exceed 1000 minutes");
+ return;
+ }
+ const stime = targ.getElementsByClassName("stime")[0].value;
+
+ var full_data='{"trip":"'+trip+'", "speed":"'+speed+'", "dist":"'+dist+'", "time":"'+time+'", "stime":"'+stime+'"}';
+ console.log(full_data);
+ // sendjson(full_data);
+ };
+
+
function setConstanta(e){
e = e || window.event;
var targ1 = e.target || e.srcElement || e;
diff --git a/src/main.cpp b/src/main.cpp
index 0d86e49..9dc522e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -899,19 +899,25 @@ void onWsEventSetTime(AsyncWebSocket * server, AsyncWebSocketClient * client, Aw
if(type == WS_EVT_CONNECT){
globalClientSetTime++;
gHasSetTimeClient=true;
+#ifdef DEBUG
Serial.println("wssettime Websocket client connection received");
Serial.print("SetTime Client=");Serial.println(globalClientSetTime);
Serial.print("IPAdd client:");Serial.println(client->remoteIP());
+#endif
client->text(strSetTimeJson);
} else if(type == WS_EVT_DISCONNECT){
globalClientSetTime--;
if (globalClientSetTime<=0) gHasSetTimeClient=false;
+#ifdef DEBUG
Serial.println("wssettime Client disconnected");
Serial.print("SetTime Client=");Serial.println(globalClientSetTime);
Serial.print("IPAdd client:"); Serial.println(client->remoteIP());
+#endif
} else if(type == WS_EVT_DATA){
+#ifdef DEBUG
Serial.print("wssettime IPAdd client:"); Serial.println(client->remoteIP());
Serial.printf("[%u] get Text: %s\n", len, data);
+#endif
String message = String((char*)( data));
Serial.println(message);
@@ -1060,10 +1066,12 @@ void memretrieveTrip(int pointer, int startaddress)
if (Trip[pointer].startHour >= 24) Trip[pointer].startHour = 23;
if (Trip[pointer].startMin >= 60) Trip[pointer].startMin = 59;
if (Trip[pointer].startSec >= 60) Trip[pointer].startSec = 59;
+#ifdef DEBUG
Serial.print(Trip[pointer].speed);Serial.print(";");
Serial.print(Trip[pointer].startHour);Serial.print(":");
Serial.print(Trip[pointer].startMin);Serial.print(":");
Serial.print(Trip[pointer].startSec);Serial.println("");
+#endif
}
void constantatodigit()
@@ -1081,8 +1089,10 @@ void setSpiffSpeedInConstanta(float mConstanta, uint8_t setSpiffcurTrip){
char filename[7] = "/tripZ";
setSpiffcurTrip+=65;
filename[5]=setSpiffcurTrip;
+#ifdef DEBUG
Serial.println(filename);
Serial.println(mConstanta);
+#endif
String result = readFile(SPIFFS, filename);
result.reserve(128);
DynamicJsonDocument doc(128);
@@ -1119,8 +1129,10 @@ void setSpiffStime(unsigned long mvaluesettime, uint8_t setSpiffcurTrip){
char filename[7] = "/tripZ";
setSpiffcurTrip+=65;
filename[5]=setSpiffcurTrip;
+#ifdef DEBUG
Serial.println(filename);
Serial.println(mvaluesettime);
+#endif
String result = readFile(SPIFFS, filename);
result.reserve(128);
DynamicJsonDocument doc(128);
@@ -1130,7 +1142,9 @@ void setSpiffStime(unsigned long mvaluesettime, uint8_t setSpiffcurTrip){
sHour = mvaluesettime/65536;
sMin = (mvaluesettime/256)-sHour*256;
sprintf(msTime, "%02u:%02u", sHour, sMin);
+#ifdef DEBUG
Serial.print("dist:");Serial.print(doc["dist"].as());Serial.println(";");
+#endif
if (doc["trip"].as()=="null") doc["trip"]=String(char(setSpiffcurTrip));
if (doc["dist"].as()=="null") doc["dist"]="";
if (doc["speed"].as()=="null") doc["speed"]="";
@@ -1139,7 +1153,9 @@ void setSpiffStime(unsigned long mvaluesettime, uint8_t setSpiffcurTrip){
result="";
serializeJson(doc,result);
writeFile(SPIFFS, filename, result.c_str());
+#ifdef DEBUG
Serial.print("Write sTime:");Serial.println(result);
+#endif
}
void setMemStime(unsigned long mvaluesettime, uint8_t setmemssTimecurTrip){
int pointeradd = ((TRIPADDRESS+setmemssTimecurTrip)*32+4);
@@ -1147,9 +1163,12 @@ void setMemStime(unsigned long mvaluesettime, uint8_t setmemssTimecurTrip){
Trip[setmemssTimecurTrip].startHour = (mvaluesettime/65536); //starttracthour;
Trip[setmemssTimecurTrip].startMin = (mvaluesettime/256)-Trip[setmemssTimecurTrip].startHour*256; // starttractmin;
Trip[setmemssTimecurTrip].startSec = mvaluesettime-((Trip[setmemssTimecurTrip].startHour*256 + Trip[curTrip].startMin)*256);//starttractsec;
+#ifdef DEBUG
+ Serial.print("memstime: ");
Serial.print(Trip[setmemssTimecurTrip].startHour);Serial.print(";");
Serial.print(Trip[setmemssTimecurTrip].startMin);Serial.print(";");
Serial.println(Trip[setmemssTimecurTrip].startSec);
+#endif
}
unsigned long getMemStime(uint8_t getmemsTimecurTrip){
int pointeradd = ((TRIPADDRESS+getmemsTimecurTrip)*32+4);
@@ -1397,7 +1416,9 @@ String runningtimeforESP32test1(byte x1,byte y1)
runningTIME[8]='\0';
// Serial.print("t.hour:");Serial.println(t.hour);
// Serial.print("runningtimeforesp:");Serial.println(runningTIME);
+#ifdef DEBUG
Serial.print("runningtimeforesp:");Serial.println(runningTIME);
+#endif
return String(runningTIME);
}
void settimeMenu()
@@ -1445,7 +1466,9 @@ void calibrationMenu()
//lcd.blink();
//blinkON=true;
PREVMENU = MENU;
+#ifdef DEBUG
Serial.print(Calibrationstr);Serial.println("end");
+#endif
}
void constantaMenu()
@@ -2187,7 +2210,9 @@ void calculationRally() //calculation only ESP32
sprintf(gcur_distance1_str, "%04.01f", distance1);
}
// Serial.print(distance2);Serial.print(";");Serial.println(count2);
-Serial.print(gcurTime);Serial.print(";");Serial.println(t.hour);
+#ifdef DEBUG
+ Serial.print(gcurTime);Serial.print(";");Serial.println(t.hour);
+#endif
if (distance2<0) {
sprintf(gcur_distance2_str, "%02.02f", distance2);
@@ -2283,7 +2308,9 @@ Serial.print(gcurTime);Serial.print(";");Serial.println(t.hour);
if (hours2<10) sprintf(gcur_time2_str, " %s%01d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
else sprintf(gcur_time2_str, "%s%02d:%02d:%02d", (negatifsign?"-":" "), hours2, mins2, secs2);
}
+#ifdef DEBUG
Serial.print(gcurTime);Serial.print(t.min);Serial.println(t.sec);
+#endif
// Serial.println("ENDCRal");
} ///// calculation only for esp32
@@ -2477,7 +2504,9 @@ void convertJsonTripToTripStruct(uint8_t iTrip, const char* strJson){ //this als
char mspeed[7];
dtostrf(Trip[iTrip].speed, 6, 4, mspeed);
+#ifdef DEBUG
Serial.print(String(char(iTrip)));Serial.print(mspeed);Serial.print(" VS ");Serial.println(doc["speed"].as());
+#endif
// if (Trip[iTrip].speed!=doc["speed"])
Serial.println("hohoho");
// if (strJson=="")
@@ -2505,7 +2534,9 @@ void fillTripArray(){ //run by setup()
tempTrip[5]=i+65;
// Serial.println(tempTrip);
tempReadFile = readFile(SPIFFS, tempTrip);
+#ifdef DEBUG
Serial.print(tempTrip); Serial.print(";");Serial.println(tempReadFile);
+#endif
convertJsonTripToTripStruct(i, tempReadFile.c_str());
}
}
@@ -2607,7 +2638,9 @@ void handleloadConst(AsyncWebServerRequest *request, JsonVariant &json) {
request->send(200, "text/plain", tripload); // handle data and respond
// request->send(tripload);
// isloadingConst=false;
+#ifdef DEBUG
Serial.print("constLoadTime=");Serial.println(millis()-howLongInMillis);
+#endif
}
char* unConstChar(const char* s) {
@@ -2642,7 +2675,9 @@ void getTripFromSPIFF(uint8_t charcurTrip, char *pDist, char *pSpeed, char *pTi
tempsTime.reserve(10);
tempTrip=readFile(SPIFFS, filename);
+#ifdef DEBUG
Serial.print(tempTrip.length()); Serial.print(";");Serial.println(tempTrip);
+#endif
deserializeJson(doc, tempTrip);
float speedinconstanta = getMemSpeedInConstanta(charcurTrip-65);
@@ -2692,12 +2727,14 @@ void handleConstantaHTML(AsyncWebServerRequest *request) {
// Serial.print((uint32_t) xsTime);Serial.print(";");Serial.print((uint32_t) *xsTime);Serial.print(";");Serial.println((uint32_t) &xsTime);
// getTripFromSPIFF(i, xDist, &xSpeed, &xTime, &xsTime);
getTripFromSPIFF(i, xDist, xSpeed, xTime, xsTime);
+#ifdef DEBUG
// Serial.print((uint32_t) xsTime);Serial.print(";");Serial.print((uint32_t) *xsTime);Serial.print(";");Serial.println((uint32_t) &xsTime);
Serial.print(String(char(i)));Serial.print(";");
Serial.print(xDist);Serial.print(";");
Serial.print(xSpeed);Serial.print(";");
Serial.print(xTime);Serial.print(";");
Serial.print(xsTime);Serial.println(";");
+#endif
PAGEROW.replace("%distval%", xDist);
PAGEROW.replace("%speedval%", xSpeed);
PAGEROW.replace("%timeval%", xTime);
@@ -2710,9 +2747,11 @@ void handleConstantaHTML(AsyncWebServerRequest *request) {
request->send(200, "text/html", PAGE);
// request->send(SPIFFS, "/constanta.html", String(), false, procConst); // read from spiif straight away
// isloadingConst=false;
+#ifdef DEBUG
Serial.println(millis());
Serial.print("PAGE Size:");Serial.println(pageZise);
Serial.print("Actual Size:");Serial.println(PAGE.length());
+#endif
}
@@ -2720,7 +2759,7 @@ void handlesetConst(AsyncWebServerRequest *request, JsonVariant &json){
isloadingConst=true;
// JsonObject& jsonObj = json.as();
if (not json.is()) {
- Serial.println("Not JSONG object");
+ Serial.println("Not JSON object");
request->send(400, "text/plain", "Not an object");
return;
}
@@ -2754,16 +2793,19 @@ void handlesetConst(AsyncWebServerRequest *request, JsonVariant &json){
canSave = false;
}
constvaluesettime = getValueSetTime(stime);
+#ifdef DEBUG
Serial.println(dist);
+#endif
if (constvaluesettime==-1){
canSave = false;
}
if (!(speed<100)) canSave = false;
if (!(dist<1000)) canSave = false;
if (!(time<1000)) canSave = false;
-
+#ifdef DEBUG
Serial.print(constconstanta,3); Serial.print(";"); Serial.println(constCurTrip);
Serial.print(constvaluesettime); Serial.print(";"); Serial.println(speed);
+#endif
AsyncResponseStream *response = request->beginResponseStream("application/json");
if (canSave){
// String filename = String("/trip"+trip);
@@ -2840,7 +2882,9 @@ Trip[9].startSec = 58;
//Serial.println(Trip[0].distance);
//Serial.println(Trip[0].subTime);
// uint32_t freqhz=400000;
+#ifdef DEBUG
Serial.println("begin wire");
+#endif
Wire.begin(I2C_SDA, I2C_SCL, FREQHZ); //for lolin32lite sda=15; scl=13 //Dont move up or down
//**************************LCD Setup********************************
@@ -2858,8 +2902,6 @@ Trip[9].startSec = 58;
// lcd2.print("hello rally20");
-
- Serial.println("Start calib");
//***************************END LCD Setup********************************
strCalibJson.reserve(512);
strRallyJson.reserve(512);
@@ -2986,7 +3028,7 @@ Serial.println("calibration and constanta");
#endif
// wifiManager.setAPCallback(configModeCallback);
// wifiManager.autoConnect(soft_ap_ssid);
- Serial.println("before filltriparray");
+
fillTripArray();
//WiFi.mode(WIFI_STA);
@@ -3274,7 +3316,7 @@ Serial.println("calibration and constanta");
});
AsyncCallbackJsonWebHandler* loadconst = new AsyncCallbackJsonWebHandler("/rest/loadconst", [](AsyncWebServerRequest *request, JsonVariant &json) {
- Serial.print("loadconst");Serial.println(millis());
+ // Serial.print("loadconst");Serial.println(millis());
while(!semaphoreS){
delay(1);
}