diff --git a/influxgraph.py b/influxgraph.py index f7104fc..b070783 100644 --- a/influxgraph.py +++ b/influxgraph.py @@ -190,7 +190,7 @@ class InfluxGraph: """ Polls the last known values for all the available variables, and returns only those whose polled values are more recent than the most recent displayed one. Every plain minute, all the variables are returned with a point having their last known value at the current timestamp to synchronize all the curves on the GUI. - + Returns : {"type":"graph-update", "time":(int), "graph":{(str):[[(int),(float)]]}} | None : a dictionnary with its "graph-update" type (so it can be processed by the client), and a "graph" dictionnary with the variable names as key, and an array of points, which are an array containing the timestamp @@ -201,21 +201,15 @@ class InfluxGraph: now, = self.get_abs_time([0]) result = self.influx_data_getter.poll_last_values(list(self.variables.keys()), self.lastvalues, now) - for variable in self.lastvalues.keys(): - if variable in result.keys(): - - # removes points older than the last known point (queries are in seconds and might return points already displayed) - while len(result[variable]) > 0: - if result[variable][0][0] <= self.lastvalues[variable][0]: - result[variable].pop(0) - else: - break - - if len(result[variable]) > 0 and result[variable][-1][0] > self.lastvalues[variable][0]: - self.lastvalues[variable] = (result[variable][-1][0], result[variable][-1][1]) - else: - del result[variable] - + for variable, values in list(result.items()): + tlast = self.lastvalues.get(variable, (0,))[0] + # removes points older than the last known point (queries are in seconds and might return points already displayed) + while values and values[0][0] <= tlast: + values.pop(0) + if values and values[-1][0] > tlast: + self.lastvalues[variable] = values[-1] + else: + del result[variable] if int(now / 60) != int(self.end_query / 60): # Update unchanged values every plain minute for var, (_, lastx) in self.lastvalues.items(): @@ -224,4 +218,4 @@ class InfluxGraph: self.end_query = now if len(result) > 0: return dict(type='graph-update', time=now, graph=result) - return None \ No newline at end of file + return None