mirror of
https://github.com/flobz/psa_car_controller.git
synced 2026-08-26 10:17:18 +00:00
apply default filter
This commit is contained in:
+17
-6
@@ -18,7 +18,6 @@ from mylogger import logger
|
||||
from my_psacc import MyPSACC
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
|
||||
app = None
|
||||
dash_app = None
|
||||
dispatcher = None
|
||||
@@ -28,9 +27,15 @@ myp: MyPSACC = None
|
||||
chc: ChargeControls = None
|
||||
|
||||
|
||||
def start_app(title, base_path, debug: bool, host, port, reloader=False, # pylint: disable=too-many-arguments
|
||||
unminified=False):
|
||||
def start_app(*args, **kwargs):
|
||||
run(config_flask(*args, **kwargs))
|
||||
|
||||
|
||||
def config_flask(title, base_path, debug: bool, host, port, reloader=False, # pylint: disable=too-many-arguments
|
||||
unminified=False):
|
||||
global app, dash_app, dispatcher
|
||||
reload_view = app is not None
|
||||
app = Flask(__name__)
|
||||
try:
|
||||
lang = locale.getlocale()[0].split("_")[0]
|
||||
locale.setlocale(locale.LC_TIME, ".".join(locale.getlocale())) # make sure LC_TIME is set
|
||||
@@ -40,7 +45,6 @@ def start_app(title, base_path, debug: bool, host, port, reloader=False, # pyl
|
||||
logger.warning("Can't get language")
|
||||
if unminified:
|
||||
locale_url = ["assets/plotly-with-meta.js"]
|
||||
app = Flask(__name__)
|
||||
app.wsgi_app = ProxyFix(app.wsgi_app)
|
||||
app.config["DEBUG"] = debug
|
||||
if base_path == "/":
|
||||
@@ -53,8 +57,15 @@ def start_app(title, base_path, debug: bool, host, port, reloader=False, # pyl
|
||||
server=app, requests_pathname_prefix=requests_pathname_prefix)
|
||||
dash_app.enable_dev_tools(reloader)
|
||||
# keep this line
|
||||
import web.views # pylint: disable=unused-import,import-outside-toplevel
|
||||
return run_simple(host, port, application, use_reloader=reloader, use_debugger=debug)
|
||||
import web.views # pylint: disable=import-outside-toplevel
|
||||
if reload_view:
|
||||
import importlib # pylint: disable=import-outside-toplevel
|
||||
importlib.reload(web.views)
|
||||
return {"hostname": host, "port": port, "application": application, "use_reloader": reloader, "use_debugger": debug}
|
||||
|
||||
|
||||
def run(config):
|
||||
return run_simple(**config)
|
||||
|
||||
|
||||
def save_config(my_peugeot: MyPSACC, name):
|
||||
|
||||
@@ -70,6 +70,7 @@ function filterDataset (data, range) {
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
function filterShortTrip (data) {
|
||||
const longTrips = {
|
||||
trips: data.trips.filter(line => line.distance > 10),
|
||||
@@ -172,10 +173,10 @@ function updateCardsValue (data) {
|
||||
|
||||
function sortDataset (ctx, data, tables) {
|
||||
const tableId = ctx.prop_id.split('.')[0]
|
||||
if (ctx.value.length > 0) {
|
||||
const table = tables.filter(table => table.table_id === tableId)[0]
|
||||
if (ctx.value.length > 0 && data[table.src].length > 0) {
|
||||
const asc = ctx.value[0].direction === 'asc'
|
||||
let columnId = ctx.value[0].column_id
|
||||
const table = tables.filter(table => table.table_id === tableId)[0]
|
||||
let sorted
|
||||
if (columnId.endsWith('_str')) {
|
||||
columnId = columnId.slice(0, -4)
|
||||
@@ -196,7 +197,17 @@ function sortDataset (ctx, data, tables) {
|
||||
}
|
||||
}
|
||||
|
||||
function filterAndSort (data, range, figures, p, log) { // eslint-disable-line no-unused-vars
|
||||
function sort_multiple_table(sort_params, data, tables){
|
||||
for ([prop_id, value] of Object.entries(sort_params)) {
|
||||
let ctx = {}
|
||||
ctx.prop_id = prop_id+".sort_by";
|
||||
ctx.value = value
|
||||
console.log(ctx)
|
||||
sortDataset(ctx, data, tables);
|
||||
}
|
||||
}
|
||||
|
||||
function filterAndSort (data, range, figures, p, log, sort) { // eslint-disable-line no-unused-vars
|
||||
if (log > 10) {
|
||||
logger.disableLogger()
|
||||
}
|
||||
@@ -205,6 +216,7 @@ function filterAndSort (data, range, figures, p, log) { // eslint-disable-line n
|
||||
console.log('figures:', figures)
|
||||
console.log('data:', data)
|
||||
console.log('ctx', ctx)
|
||||
console.log("sort", sort)
|
||||
if (ctx.length > 0 && ctx[0].prop_id.endsWith('sort_by')) {
|
||||
dataFiltered = filterDataset(data, range)
|
||||
sortDataset(ctx[0], dataFiltered, p.table_src)
|
||||
@@ -214,6 +226,7 @@ function filterAndSort (data, range, figures, p, log) { // eslint-disable-line n
|
||||
} else {
|
||||
addLocaleDate(data, p.date_columns)
|
||||
dataFiltered = filterDataset(data, range)
|
||||
sort_multiple_table(sort, dataFiltered, p.table_src)
|
||||
outFigures.push(...updateTables(dataFiltered, p.table_src))
|
||||
console.log(dataFiltered.trips.length)
|
||||
const longTrips = filterShortTrip(dataFiltered)
|
||||
|
||||
@@ -34,7 +34,7 @@ def figures_to_dict(figures):
|
||||
return el_list
|
||||
|
||||
|
||||
class Figure_Filter:
|
||||
class FigureFilter:
|
||||
|
||||
def __init__(self):
|
||||
self.graphs = []
|
||||
@@ -74,20 +74,31 @@ class Figure_Filter:
|
||||
outputs.extend([Output(graph.graph_id, "figure") for graph in self.maps])
|
||||
return outputs
|
||||
|
||||
def __get_graph_x_label(self, graphs):
|
||||
@staticmethod
|
||||
def __get_graph_x_label(graphs):
|
||||
return [graph.x for graph in graphs]
|
||||
|
||||
def __get_graph_y_label(self, graphs):
|
||||
@staticmethod
|
||||
def __get_graph_y_label(graphs):
|
||||
return [graph.y for graph in graphs]
|
||||
|
||||
def __get_table_input_sort_by(self):
|
||||
inputs = [Input(table.table_id, 'sort_by') for table in self.tables]
|
||||
return inputs
|
||||
|
||||
def gen_unused_variable(self):
|
||||
def gen_sort_variable(self):
|
||||
res = ", ".join([chr(i) for i in range(ord('a'), ord('a') + len(self.tables))])
|
||||
return res
|
||||
|
||||
def __gen_sort_dict(self):
|
||||
res = "{"
|
||||
i = ord("a")
|
||||
for table in self.tables:
|
||||
res+= f'"{table.table_id}": {chr(i)},'
|
||||
i += 1
|
||||
res = res[:-1] + "}"
|
||||
return res
|
||||
|
||||
def get_params(self):
|
||||
params = json.dumps({
|
||||
"date_columns": self.__get_table_date_column_id(),
|
||||
@@ -106,17 +117,18 @@ class Figure_Filter:
|
||||
log_level = 10
|
||||
else:
|
||||
log_level = 20
|
||||
fct_def = f"""function(data,range, figures, {self.gen_unused_variable()}) {{
|
||||
const params={self.get_params()};
|
||||
const logLevel={log_level};
|
||||
return filterAndSort(data, range, figures, params, logLevel);
|
||||
fct_def = f"""function(data,range, figures, {self.gen_sort_variable()}) {{
|
||||
console.log("=============")
|
||||
const params={self.get_params()}
|
||||
const logLevel={log_level}
|
||||
return filterAndSort(data, range, figures, params, logLevel, {self.__gen_sort_dict()})
|
||||
}}"""
|
||||
dash_app.clientside_callback(fct_def,
|
||||
*self.__get_output(),
|
||||
Input('clientside-data-store', 'data'),
|
||||
Input('date-slider', 'value'),
|
||||
Input('clientside-figure-store', 'data'),
|
||||
*self.__get_table_input_sort_by())
|
||||
*self.__get_output(),
|
||||
Input('clientside-data-store', 'data'),
|
||||
Input('date-slider', 'value'),
|
||||
Input('clientside-figure-store', 'data'),
|
||||
*self.__get_table_input_sort_by())
|
||||
return True
|
||||
return False
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ from web.db import Database
|
||||
from web.utils import diff_dashtable, dash_date_to_datetime
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
from web.figure_filter import Figure_Filter
|
||||
from web.figurefilter import FigureFilter
|
||||
from web.utils import create_card
|
||||
|
||||
RESPONSE = "-response"
|
||||
@@ -285,7 +285,7 @@ def serve_layout():
|
||||
global cached_layout
|
||||
if cached_layout is None:
|
||||
logger.debug("Create new layout")
|
||||
fig_filter = Figure_Filter()
|
||||
fig_filter = FigureFilter()
|
||||
try:
|
||||
range_slider = dcc.RangeSlider(
|
||||
id='date-slider',
|
||||
|
||||
Reference in New Issue
Block a user