fix legend values when value is undefined

+ improve mechanism to find value
This commit is contained in:
l_samenv
2024-09-25 14:13:07 +02:00
parent 6f318f26b7
commit 664e53d58c
2 changed files with 15 additions and 7 deletions

View File

@ -1940,10 +1940,15 @@ function Graph(gindex, container, x_label, y_label, tag, scaleType = "linear"){
if (x === null) return;
for(let i in chart.data.datasets){
let y = null;
for(let j = 0; j < chart.getDatasetMeta(i).data.length; j++){
let dp = chart.getDatasetMeta(i).data[j];
if (dp.x >= x) break; //_model does not exist anymore, properties are defined directly on elements
y = chart.data.datasets[i].data[dp.$context.index].y; // $context not mentionned in ChartJS doc, seen with console.log
let metadata = chart.getDatasetMeta(i).data;
let dataset = chart.data.datasets[i];
if (metadata.length != dataset.data.length) {
console.log('length mismatch in dataset.data and metadata')
}
for(let j = 0; j < metadata.length; j++){
let dp = metadata[j];
if (dp.x >= x) break;
y = dataset.data[j].y;
}
valueElm = legendvalues[chart.data.datasets[i].key];
if (labelMinWidth == 0) {
@ -1952,7 +1957,9 @@ function Graph(gindex, container, x_label, y_label, tag, scaleType = "linear"){
labelMinWidth = valueElm.clientWidth;
valueElm.style.minWidth = labelMinWidth + 'px';
}
if (y !== null) {
if (y == null) {
valueElm.innerHTML = '';
} else {
valueElm.innerHTML = strFormat(y, labelDigits);
}
}

View File

@ -57,6 +57,7 @@ def to_json_sse(msg):
app = flask.Flask(__name__)
update_rider = circularlog.Rider("upd")
pollinterval = 0.1
@app.route('/update')
def get_update(path=None):
@ -82,7 +83,7 @@ def get_update(path=None):
yield to_json_sse(msg)
if messages:
lastmsg = time.time()
gevent.sleep(1)
gevent.sleep(pollinterval)
else:
if time.time() > lastmsg + 30:
if not client.info():
@ -91,7 +92,7 @@ def get_update(path=None):
yield to_json_sse(dict(type='heartbeat'))
lastmsg = time.time()
else:
gevent.sleep(0.5)
gevent.sleep(pollinterval)
except (GeneratorExit, tcp_lineserver.Disconnected) as e:
logging.info("except clause %r", repr(e))
logging.info('CLOSED %s', client.id)