def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format( action=TRANSLATIONS['add']['title'], controller=TRANSLATIONS['dashboard']['title']) error = [] new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_base.width.data and form_base.height.data and form_object.xaxis_duration.data and form_base.refresh_duration.data)): dashboard_type = 'Graph' error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: new_graph.math_ids = ";".join(form_object.math_ids.data) if form_object.pid_ids.data: new_graph.pid_ids = ";".join(form_object.pid_ids.data) if form_object.output_ids.data: new_graph.output_ids = ";".join(form_object.output_ids.data) if form_object.input_ids.data: new_graph.input_ids_measurements = ";".join(form_object.input_ids.data) if form_object.note_tag_ids.data: new_graph.note_tag_ids = ";".join(form_object.note_tag_ids.data) new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data # Gauge elif form_base.dashboard_type.data == 'gauge': dashboard_type = 'Gauge' error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '20,#33CCFF;40,#55BF3B;60,#DDDF0D;80,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.input_ids_measurements = form_object.input_ids.data new_graph.enable_timestamp = form_object.enable_timestamp.data # Indicator elif form_base.dashboard_type.data == 'indicator': dashboard_type = 'Indicator' error = measurement_error_check(form_object, error) new_graph.graph_type = 'indicator' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.input_ids_measurements = form_object.measurement_id.data # Measurement elif form_base.dashboard_type.data == 'measurement': dashboard_type = 'Measurement' error = measurement_error_check(form_object, error) new_graph.graph_type = 'measurement' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.input_ids_measurements = form_object.measurement_id.data # Output elif form_base.dashboard_type.data == 'output': dashboard_type = 'Output' error = output_error_check(form_object, error) new_graph.graph_type = 'output' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.enable_output_controls = form_object.enable_output_controls.data new_graph.decimal_places = form_object.decimal_places.data new_graph.output_ids = form_object.output_id.data # PID Control elif form_base.dashboard_type.data == 'pid_control': dashboard_type = 'PID Control' error = pid_error_check(form_object, error) new_graph.graph_type = 'pid_control' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.show_pid_info = form_object.show_pid_info.data new_graph.show_set_setpoint = form_object.show_set_setpoint.data new_graph.pid_ids = form_object.pid_id.data # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): dashboard_type = 'Camera' new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data else: flash_form_errors(form_base) return try: if not error: new_graph.save() flash(gettext( "{dev} with ID %(id)s successfully added".format(dev=dashboard_type), id=new_graph.id), "success") DisplayOrder.query.first().dashboard = add_display_order( display_order, new_graph.unique_id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) flash_success_errors(error, action, url_for('routes_page.page_dashboard'))
def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format(action=gettext("Add"), controller=gettext("Dashboard")) error = [] dashboard_type = '' new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_base.width.data and form_base.height.data and form_object.xaxis_duration.data and form_base.refresh_duration.data)): dashboard_type = 'Graph' error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: math_ids_joined = ";".join(form_object.math_ids.data) new_graph.math_ids = math_ids_joined if form_object.pid_ids.data: pid_ids_joined = ";".join(form_object.pid_ids.data) new_graph.pid_ids = pid_ids_joined if form_object.output_ids.data: output_ids_joined = ";".join(form_object.output_ids.data) new_graph.output_ids = output_ids_joined if form_object.input_ids.data: input_ids_joined = ";".join(form_object.input_ids.data) new_graph.input_ids_measurements = input_ids_joined new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data # Gauge elif form_base.dashboard_type.data == 'gauge': dashboard_type = 'Gauge' error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '20,#33CCFF;40,#55BF3B;60,#DDDF0D;80,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.input_ids_measurements = form_object.input_ids.data new_graph.enable_timestamp = form_object.enable_timestamp.data # Measurement elif form_base.dashboard_type.data == 'measurement': dashboard_type = 'Measurement' error = measurement_error_check(form_object, error) new_graph.graph_type = 'measurement' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.input_ids_measurements = form_object.measurement_id.data # Output elif form_base.dashboard_type.data == 'output': dashboard_type = 'Output' error = output_error_check(form_object, error) new_graph.graph_type = 'output' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.enable_output_controls = form_object.enable_output_controls.data new_graph.decimal_places = form_object.decimal_places.data new_graph.output_ids = form_object.output_id.data # PID Control elif form_base.dashboard_type.data == 'pid_control': dashboard_type = 'PID Control' error = pid_error_check(form_object, error) new_graph.graph_type = 'pid_control' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.show_pid_info = form_object.show_pid_info.data new_graph.show_set_setpoint = form_object.show_set_setpoint.data new_graph.pid_ids = form_object.pid_id.data # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): dashboard_type = 'Camera' new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data else: flash_form_errors(form_base) return try: if not error: new_graph.save() flash( gettext("{dev} with ID %(id)s successfully added".format( dev=dashboard_type), id=new_graph.id), "success") DisplayOrder.query.first().dashboard = add_display_order( display_order, new_graph.unique_id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) flash_success_errors(error, action, url_for('routes_page.page_dashboard'))
def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format(action=gettext("Add"), controller=gettext("Dashboard")) error = [] new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_object.width.data and form_object.height.data and form_object.xaxis_duration.data and form_object.refresh_duration.data)): error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: math_ids_joined = ";".join(form_object.math_ids.data) new_graph.math_ids = math_ids_joined if form_object.pid_ids.data: pid_ids_joined = ";".join(form_object.pid_ids.data) new_graph.pid_ids = pid_ids_joined if form_object.relay_ids.data: relay_ids_joined = ";".join(form_object.relay_ids.data) new_graph.relay_ids = relay_ids_joined if form_object.sensor_ids.data: sensor_ids_joined = ";".join(form_object.sensor_ids.data) new_graph.sensor_ids_measurements = sensor_ids_joined new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data try: if not error: new_graph.save() flash( gettext("Graph with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) # Gauge elif (form_base.dashboard_type.data == 'gauge' and form_object.sensor_ids.data): error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '0.2,#33CCFF;0.4,#55BF3B;0.6,#DDDF0D;0.8,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.sensor_ids_measurements = form_object.sensor_ids.data[0] new_graph.enable_timestamp = form_object.enable_timestamp.data try: if not error: new_graph.save() flash( gettext("Gauge with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data try: if not error: new_graph.save() flash( gettext("Camera with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) else: flash_form_errors(form_base) return flash_success_errors(error, action, url_for('routes_page.page_dashboard'))