Removed all curves at given day

This commit is contained in:
l_samenv
2024-08-21 10:23:51 +02:00
parent 89dd427a22
commit 977ebb02d8
6 changed files with 19 additions and 60 deletions

View File

@ -57,6 +57,6 @@
margin-top: 10px; margin-top: 10px;
} }
.jump-button-all, .jump-button-time{ .jump-button{
width: 200px; width: 200px;
} }

View File

@ -1,7 +1,5 @@
class DatesPopup extends HTMLElement{ class DatesPopup extends HTMLElement{
static TIME = 0;
static ALL = 1;
static DAY = new Date(24*60*60*1000); static DAY = new Date(24*60*60*1000);
constructor(goToNowCallback, jumpCallback){ constructor(goToNowCallback, jumpCallback){
@ -23,16 +21,11 @@ class DatesPopup extends HTMLElement{
return [dateInputValue.getTime(), timeMs]; return [dateInputValue.getTime(), timeMs];
} }
doJumpAllCallback(){
let dateTimeInput = this.getDateTimeInput();
this.hide();
this.jumpCallback(dateTimeInput[0], dateTimeInput[1], DatesPopup.ALL);
}
doJumpTimeCallback(){ doJumpCallback(){
let dateTimeInput = this.getDateTimeInput(); let dateTimeInput = this.getDateTimeInput();
this.hide(); this.hide();
this.jumpCallback(dateTimeInput[0], dateTimeInput[1], DatesPopup.TIME); this.jumpCallback(dateTimeInput[0], dateTimeInput[1]);
} }
convertTimeStringToTimestamp(formattedTime){ convertTimeStringToTimestamp(formattedTime){
@ -68,8 +61,7 @@ class DatesPopup extends HTMLElement{
this.getElementsByTagName("img")[0].onclick = () => {this.hide();}; this.getElementsByTagName("img")[0].onclick = () => {this.hide();};
this.getElementsByClassName("go-to-now-button")[0].onclick = () => {this.doGoToNowCallback();}; this.getElementsByClassName("go-to-now-button")[0].onclick = () => {this.doGoToNowCallback();};
this.getElementsByClassName("input-date")[0].max = new Date().toISOString().split("T")[0]; // sets the max to today (set only at app start) this.getElementsByClassName("input-date")[0].max = new Date().toISOString().split("T")[0]; // sets the max to today (set only at app start)
this.getElementsByClassName("jump-button-time")[0].onclick = () => {this.doJumpTimeCallback();}; this.getElementsByClassName("jump-button")[0].onclick = () => {this.doJumpCallback();};
this.getElementsByClassName("jump-button-all")[0].onclick = () => {this.doJumpAllCallback();};
} }
render(){ render(){
@ -95,11 +87,7 @@ class DatesPopup extends HTMLElement{
</div> </div>
<div> <div>
<button class="jump-button-time">Curves at the given time</button> <button class="jump-button">Jump</button>
</div>
<div>
<button class="jump-button-all">All curves of the given day</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -350,7 +350,7 @@ function successHandler(s, message) {
begin = timeRange[0] - timeRange[1]; begin = timeRange[0] - timeRange[1];
select.value = begin; select.value = begin;
// Server-request for variable-list.*/ // Server-request for variable-list.*/
reqJSON(0, "http://" + hostPort + "/getvars?time=" + timeRange + "&all=False&id=" reqJSON(0, "http://" + hostPort + "/getvars?time=" + timeRange + "&id="
+ clientID, successHandler, errorHandler); + clientID, successHandler, errorHandler);
break; break;
// Response to a "getvars"-server-request. // Response to a "getvars"-server-request.

View File

@ -748,7 +748,7 @@ let graphs = (function (){
resolution = Math.ceil((timeDelta / container.getBoundingClientRect().width)) resolution = Math.ceil((timeDelta / container.getBoundingClientRect().width))
} }
function jumpToDate(dateTimestampMs, timeValueMs, mode){ function jumpToDate(dateTimestampMs, timeValueMs){
cursorLine(null); cursorLine(null);
@ -756,17 +756,11 @@ let graphs = (function (){
msLeftTimestampGetVars = dateTimestampMs; msLeftTimestampGetVars = dateTimestampMs;
msLeftTimestampGetGraph = dateTimestampMs; msLeftTimestampGetGraph = dateTimestampMs;
if(mode == DatesPopup.TIME){
msRightTimestampGetVars = dateTimestampMs + timeValueMs;
}
else if(mode == DatesPopup.ALL){ // we ignore time
msRightTimestampGetVars = dateTimestampMs + 24*60*60*1000 - 1000; // we exclude the very beginning of the next day
}
msRightTimestampGetVars = dateTimestampMs + timeValueMs;
msRightTimestampGetGraph = dateTimestampMs + 24*60*60*1000 - 1000; msRightTimestampGetGraph = dateTimestampMs + 24*60*60*1000 - 1000;
AJAX("http://" + hostPort + "/getvars?time=" + msLeftTimestampGetVars/1000 + "," + msRightTimestampGetVars/1000 + "&all=" +allQueryParameterRepresentation(mode) + "&id="+ clientID).getJSON().then(function(data){ AJAX("http://" + hostPort + "/getvars?time=" + msLeftTimestampGetVars/1000 + "," + msRightTimestampGetVars/1000 + "&id="+ clientID).getJSON().then(function(data){
blocks = data.blocks; blocks = data.blocks;
document.getElementById("device").innerHTML = data.device document.getElementById("device").innerHTML = data.device
maxTime = msRightTimestampGetGraph; maxTime = msRightTimestampGetGraph;
@ -785,15 +779,6 @@ let graphs = (function (){
} }
function allQueryParameterRepresentation(mode){
if(mode == DatesPopup.ALL){
return "True";
}
else {
return "False";
}
}
/** /**
* The function called when the viewing window is moved by the mouse. * The function called when the viewing window is moved by the mouse.
* *
@ -845,7 +830,7 @@ let graphs = (function (){
let msLeftTimestamp = msRightTimestamp - 30*60*1000; let msLeftTimestamp = msRightTimestamp - 30*60*1000;
cursorLine(null); cursorLine(null);
AJAX("http://" + hostPort + "/getvars?time=" + msLeftTimestamp/1000 + "," + msRightTimestamp/1000 + "&all=False&id="+ clientID).getJSON().then(function(data){ AJAX("http://" + hostPort + "/getvars?time=" + msLeftTimestamp/1000 + "," + msRightTimestamp/1000 + "&id="+ clientID).getJSON().then(function(data){
currentMaxTime = msRightTimestamp + 60000; currentMaxTime = msRightTimestamp + 60000;
currentMinTime = msLeftTimestamp; currentMinTime = msLeftTimestamp;

View File

@ -53,7 +53,7 @@ class InfluxDataGetter:
# ----- PUBLIC METHODS # ----- PUBLIC METHODS
def get_available_variables_at_time(self, times, all=False): def get_available_variables_at_time(self, times):
""" """
Gets the available variables (those that we can have a value for since the device has been installed on the instrument) at the given point in time. Gets the available variables (those that we can have a value for since the device has been installed on the instrument) at the given point in time.
We can get the last available variables at the given point in time or all the known variables for the day corresponding to the timestamp. We can get the last available variables at the given point in time or all the known variables for the day corresponding to the timestamp.
@ -67,7 +67,7 @@ class InfluxDataGetter:
a block of curves with their name, their label and their color to display, grouped by their tag (which can be the unit augmented with an index) and their unit. a block of curves with their name, their label and their color to display, grouped by their tag (which can be the unit augmented with an index) and their unit.
""" """
all_setup_info = self._get_all_setup_info_as_dict(times, all) all_setup_info = self._get_all_setup_info_as_dict(times)
available_variables = self._extract_variables(all_setup_info) available_variables = self._extract_variables(all_setup_info)
available_variables = self._remove_variables_without_value_float(available_variables, times) available_variables = self._remove_variables_without_value_float(available_variables, times)
available_variables = self._set_variables_with_target(available_variables, times) available_variables = self._set_variables_with_target(available_variables, times)
@ -75,7 +75,7 @@ class InfluxDataGetter:
return res return res
def get_available_variables_at_time2(self, times, all=False): def get_available_variables_at_time2(self, times):
""" """
Gets the available variables (those that we can have a value for since the device has been installed on the instrument) at the given point in time. Gets the available variables (those that we can have a value for since the device has been installed on the instrument) at the given point in time.
We can get the last available variables at the given point in time or all the known variables for the day corresponding to the timestamp. We can get the last available variables at the given point in time or all the known variables for the day corresponding to the timestamp.
@ -89,7 +89,7 @@ class InfluxDataGetter:
a block of curves with their name, their label and their color to display, grouped by their tag (which can be the unit augmented with an index) and their unit. a block of curves with their name, their label and their color to display, grouped by their tag (which can be the unit augmented with an index) and their unit.
""" """
all_setup_info = self._get_all_setup_info_as_dict(times, all) all_setup_info = self._get_all_setup_info_as_dict(times)
available_variables = self._extract_variables2(all_setup_info) available_variables = self._extract_variables2(all_setup_info)
available_variables = self._filter_params_with_config(available_variables) available_variables = self._filter_params_with_config(available_variables)
@ -214,14 +214,13 @@ class InfluxDataGetter:
# ----- PRIVATE METHODS # ----- PRIVATE METHODS
def _get_all_setup_info_as_dict(self, times, all=False): def _get_all_setup_info_as_dict(self, times):
""" """
Gets the value of the field setup_info in the measurements nicos/se_main, nicos/se_stick, nicos/se_addons as an array of Python dicts. Gets the value of the field setup_info in the measurements nicos/se_main, nicos/se_stick, nicos/se_addons as an array of Python dicts.
Takes the last setup_info dict (for each measurement) known at times[1], or all the dicts for this day + the previous known (also for each) Takes the last setup_info dict (for each measurement) known at times[1], or all the dicts for this day + the previous known (also for each)
Parameters Parameters
times ([int]) : the unix timestamps in seconds of the range. The first value can be unused. The last can represent the point in time. times ([int]) : the unix timestamps in seconds of the range. The first value can be unused. The last can represent the point in time.
all (bool) : indicates if we want all the variables for the given times[1] timestamp (all the day)
Returns : Returns :
[{(str):((str), {...})}]: an array of the parsed "setup_info dict" of each measurements. The key is the secop_module prefixed with "se_", and the value is a tuple with its first value [{(str):((str), {...})}]: an array of the parsed "setup_info dict" of each measurements. The key is the secop_module prefixed with "se_", and the value is a tuple with its first value
@ -234,10 +233,10 @@ class InfluxDataGetter:
to_add = [] to_add = []
query = f""" query = f"""
from(bucket: "{self._bucket}") from(bucket: "{self._bucket}")
|> range(start: {times[0] if all=="True" else 0}, stop: {times[1] + 1}) |> range(start: 0, stop: {times[1] + 1})
|> filter(fn: (r) => r._measurement == "{measurement}") |> filter(fn: (r) => r._measurement == "{measurement}")
|> filter(fn: (r) => r._field == "setup_info") |> filter(fn: (r) => r._field == "setup_info")
{"" if all=="True" else "|> last()"} |> last()
|> yield(name: "res") |> yield(name: "res")
""" """
tables = self._db.query(query) tables = self._db.query(query)
@ -245,19 +244,6 @@ class InfluxDataGetter:
for record in table.records: for record in table.records:
to_add.append(ast.literal_eval(record.get_value())) to_add.append(ast.literal_eval(record.get_value()))
if all == "True":
query = f"""
from(bucket: "{self._bucket}")
|> range(start: 0, stop: {times[0]+1})
|> filter(fn: (r) => r._measurement == "{measurement}")
|> filter(fn: (r) => r._field == "setup_info")
|> last()
|> yield(name: "res")
"""
tables = self._db.query(query)
for table in tables:
for record in table.records:
to_add.append(ast.literal_eval(record.get_value()))
res.extend(to_add) res.extend(to_add)
return res return res

View File

@ -119,7 +119,7 @@ class InfluxGraph:
time = [float(t) for t in time.split(',')] time = [float(t) for t in time.split(',')]
return dict(type='time', time= self.get_abs_time(time)) return dict(type='time', time= self.get_abs_time(time))
def w_getvars(self, time, all=False): def w_getvars(self, time):
""" """
Gets the curve names available at a given point in time. Gets the curve names available at a given point in time.
Called when the route /getvars is reached. Called when the route /getvars is reached.
@ -137,7 +137,7 @@ class InfluxGraph:
start_time = int(self.get_abs_time(time)[0]) start_time = int(self.get_abs_time(time)[0])
end_time = int(self.get_abs_time(time)[-1]) end_time = int(self.get_abs_time(time)[-1])
blocks = self.influx_data_getter.get_available_variables_at_time2([start_time, end_time], all) blocks = self.influx_data_getter.get_available_variables_at_time2([start_time, end_time])
device_name = self.influx_data_getter.get_device_name(end_time) device_name = self.influx_data_getter.get_device_name(end_time)
# updates the self.variables attribute to keep track of the available variables # updates the self.variables attribute to keep track of the available variables
self.variables = [variable["name"] for block in blocks for variable in block["curves"]] self.variables = [variable["name"] for block in blocks for variable in block["curves"]]