diff --git a/modules/core/controller.py b/modules/core/controller.py index c940cdd..aef2a7e 100644 --- a/modules/core/controller.py +++ b/modules/core/controller.py @@ -74,6 +74,14 @@ class ControllerBase(object): class KettleController(ControllerBase, ActorController, SensorController): + @staticmethod + def chart(kettle): + result = [] + result.append({"name": "Temp", "data_type": "sensor", "data_id": kettle.sensor}) + result.append({"name": "Target Temp", "data_type": "kettle", "data_id": kettle.id}) + + return result + def __init__(self, *args, **kwds): ControllerBase.__init__(self, *args, **kwds) self.kettle_id = kwds.get("kettle_id") @@ -107,6 +115,13 @@ class KettleController(ControllerBase, ActorController, SensorController): class FermenterController(ControllerBase, ActorController, SensorController): + @staticmethod + def chart(fermenter): + result = [] + result.append({"name": "Temp", "data_type": "sensor", "data_id": fermenter.sensor}) + result.append({"name": "Target Temp", "data_type": "fermenter", "data_id": fermenter.id}) + return result + def __init__(self, *args, **kwds): ControllerBase.__init__(self, *args, **kwds) self.fermenter_id = kwds.get("fermenter_id") diff --git a/modules/logs/endpoints.py b/modules/logs/endpoints.py index a68d9b7..5f8b29e 100644 --- a/modules/logs/endpoints.py +++ b/modules/logs/endpoints.py @@ -65,6 +65,8 @@ class LogView(FlaskView): pass return array + def convert_chart_data_to_json(self, chart_data): + return {"name": chart_data["name"], "data": self.read_log_as_json(chart_data["data_type"], chart_data["data_id"])} @route('//', methods=["POST"]) def get_logs_as_json(self, t, id): @@ -76,13 +78,12 @@ class LogView(FlaskView): if t == "k": kettle = cbpi.cache.get("kettle").get(id) - result.append({"name": "Temp", "data": self.read_log_as_json("sensor", kettle.sensor)}) - result.append({"name": "Target Temp", "data": self.read_log_as_json("kettle", kettle.id)}) + result = map(self.convert_chart_data_to_json, cbpi.get_controller(kettle.logic).get("class").chart(kettle)) if t == "f": fermenter = cbpi.cache.get("fermenter").get(id) - result.append({"name": "Temp", "data": self.read_log_as_json("sensor", fermenter.sensor)}) - result.append({"name": "Target Temp", "data": self.read_log_as_json("fermenter", fermenter.id)}) + result = map(self.convert_chart_data_to_json, cbpi.get_fermentation_controller(fermenter.logic).get("class").chart(fermenter)) + return json.dumps(result) @route('/download/')