diff --git a/src/CHANGES.md b/src/CHANGES.md
index 9bc01cd30..a1b23dbc0 100644
--- a/src/CHANGES.md
+++ b/src/CHANGES.md
@@ -2,6 +2,7 @@
## 0.8.121 - 2024-05-20
* fix ESP32 factory image generation
+* fix plot of history graph #1635
## 0.8.120 - 2024-05-18
* fix crash if invalid serial number was set -> inverter will be disabled automatically
diff --git a/src/defines.h b/src/defines.h
index 7a91ac1df..a83d4e891 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -13,7 +13,7 @@
//-------------------------------------
#define VERSION_MAJOR 0
#define VERSION_MINOR 8
-#define VERSION_PATCH 120
+#define VERSION_PATCH 121
//-------------------------------------
typedef struct {
uint8_t ch;
diff --git a/src/web/html/history.html b/src/web/html/history.html
index 08227b1fa..9e15daa85 100644
--- a/src/web/html/history.html
+++ b/src/web/html/history.html
@@ -43,13 +43,10 @@
Insert data into Yield per day history
function calcScale(obj) {
let s = {}
s.x_mul = 60
- s.ts_start = obj.lastValueTs - (obj.refresh * obj.value.length)
- s.ts_dur = obj.lastValueTs - s.ts_start
- s.ts_pad = (s.ts_dur < 1800) ? 0 : s.ts_start % 1800
- s.ts_dur += s.ts_pad
+ s.ts_dur = obj.refresh * obj.value.length
+ s.ts_start = obj.lastValueTs - s.ts_dur
while(s.x_mul * 10 <= s.ts_dur)
s.x_mul += (s.x_mul == 60) ? 240 : ((s.x_mul < 1800) ? 300 : 1800)
- s.x_step = Math.ceil(s.ts_dur / s.x_mul)
s.y_mul = 10
while(s.y_mul * 10 <= obj.max)
@@ -91,8 +88,8 @@ Insert data into Yield per day history
}
div = x2 / scale.ts_dur
for(let i = 0; i < scale.ts_dur; i++) {
- if(i % scale.x_mul == 0) {
- let d = new Date((scale.ts_start - scale.ts_pad + i) * 1000)
+ if((i + scale.ts_start) % scale.x_mul == 0) {
+ let d = new Date((scale.ts_start + i) * 1000)
g.push(mlNs("text", {x: (i*div)+17, y: height+20}, ("0"+d.getHours()).slice(-2) + ":" + ("0"+d.getMinutes()).slice(-2)))
}
}
@@ -107,7 +104,7 @@ Insert data into Yield per day history
}
div = x2 / scale.ts_dur
for(let i = 0; i <= scale.ts_dur; i++) {
- if(i % scale.x_mul == 0) {
+ if((i + scale.ts_start) % scale.x_mul == 0) {
g.push(mlNs("line", {x1: (i*div), x2: (i*div), y1: 0, y2: height, "stroke-width": 1, "stroke-dasharray": "1,3", stroke: "#aaa"}))
}
}
@@ -118,16 +115,15 @@ Insert data into Yield per day history
let pts = ""
let i = 0, first = -1, last = -1, lastVal = 0
let div = scale.y_max / height
- let xOff = x2 / scale.ts_dur * scale.ts_pad
if(div == 0)
div = 1
for (val of obj.value) {
if(val > 0) {
lastVal = val
- pts += " " + String(i + xOff) + "," + String(height - val / div)
+ pts += " " + String(i) + "," + String(height - val / div)
if(first < 0)
- first = i + xOff
- last = i + xOff
+ first = i
+ last = i
}
i += 2
}