"""User Interface for the report tables """ from plugin_dbui import (FieldsModifier, FormModifier, GridModifier, StoreModifier, get_store_id, map_tabpanel) class ReportUI(object): @staticmethod def configure(db, T): """Configure the user interface for the history table and its foreign tables, Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ ReportUI.axes(db, T) ReportUI.graphs(db, T) ReportUI.lists(db, T) ReportUI.metrics(db, T) ReportUI.renderers(db, T) ReportUI.sections(db, T) @staticmethod def axes(db, T): """UI for the axes table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Store # StoreModifier("axes").orderby(db.axes.tr_axis, db.axes.tr_granularity) @staticmethod def graphs(db, T): """UI for the graphs table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("graphs") mdf.configure_field("definition", height=100) mdf.configure_field("stack_axis", flex=1) mdf.configure_field("stack_granularity", flex=1) mdf.merge_fields("stack_axis", "stack_granularity", fieldLabel=T("Stack")) mdf.configure_field("stack_axis", itemId="stack_axis", displayField="AxesTr_axis", valueField="AxesAxis", refStore=get_store_id("axes"), emptyText=T("Select axis..."), userReset=True, xtype="xcomboboxmaster") mdf.configure_field("stack_granularity", masterItemId="stack_axis", masterValueField="AxesAxis", displayField="AxesTr_granularity", valueField="AxesGranularity", refStore=get_store_id("axes"), emptyText=T("Select granularity..."), xtype="xcomboboxslave") # .................................................................... # # Grid # mdf = GridModifier("graphs") mdf.configure_column("graph", width=90) mdf.configure_column("definition", width=250) mdf.hide_columns("stack_axis", "stack_granularity") mdf.append_filter(("graph", "contains", T("contains"))) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("graphs").orderby(db.graphs.graph) @staticmethod def lists(db, T): """UI for the lists table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("lists") mdf.configure_field("axis_label_converters", height=260) mdf.configure_field("definition", height=233) mdf.configure_field("sections", height=260) for level in ("level_1", "level_2", "level_3", "level_4"): mdf.configure_field("axis_%s" % level, itemId="axis_%s" % level, displayField="AxesTr_axis", valueField="AxesAxis", refStore=get_store_id("axes"), emptyText=T("Select axis..."), userReset=True, xtype="xcomboboxmaster") mdf.configure_field("granularity_%s" % level, masterItemId="axis_%s" % level, masterValueField="AxesAxis", displayField="AxesTr_granularity", valueField="AxesGranularity", refStore=get_store_id("axes"), emptyText=T("Select granularity..."), xtype="xcomboboxslave") mdf.configure_field("direction_%s" % level, flex=0.5) mdf.merge_fields("axis_%s" % level, "granularity_%s" % level, "direction_%s" % level, fieldLabel=T(level.replace("_", " ").title())) # .................................................................... # # Form # mdf = FormModifier("lists") mdf.merge_fields("list", "definition", title=T("General")) mdf.merge_fields("sections", title=T("Sections")) mdf.merge_fields("axis_level_1", "axis_level_2", "axis_level_3", "axis_level_4", title=T("Sort by")) mdf.merge_fields("axis_label_converters", title=T("Substitute")) mdf.merge_fields("header_flag", "footer_flag", title=T("Header / Footer")) mdf.set_mapper(map_tabpanel) mdf.configure(buttonAlign="right", labelWidth=100, labelAlign="right", width=450, defaults={"maxHeight": 310}) # .................................................................... # # Grid # mdf = GridModifier("lists") mdf.configure_column("list", width=60) mdf.hide_columns("axis_level_1", "axis_level_2", "axis_level_3", "axis_level_4", "granularity_level_1", "granularity_level_2", "granularity_level_3", "granularity_level_4", "direction_level_1", "direction_level_2", "direction_level_3", "direction_level_4", "axis_label_converters", "header_flag", "footer_flag") mdf.append_filter(("list", "contains", T("contains"))) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("lists").orderby(db.lists.list) @staticmethod def metrics(db, T): """UI for the metrics table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("metrics") mdf.configure_field("axis_label_converters", height=260) mdf.configure_field("definition", height=233) for el in ("vertical", "horizontal"): mdf.configure_field("axis_%s" % el, itemId="axis_%s" % el, displayField="AxesTr_axis", valueField="AxesAxis", refStore=get_store_id("axes"), emptyText=T("Select axis..."), userReset=True, xtype="xcomboboxmaster") mdf.configure_field("granularity_%s" % el, masterItemId="axis_%s" % el, masterValueField="AxesAxis", displayField="AxesTr_granularity", valueField="AxesGranularity", refStore=get_store_id("axes"), emptyText=T("Select granularity..."), xtype="xcomboboxslave") mdf.configure_field("direction_%s" % el, flex=0.5) mdf.merge_fields("axis_%s" % el, "granularity_%s" % el, "direction_%s" % el, fieldLabel=T(el.title()), afterLabelTextTpl=' * ') # .................................................................... # # Form # mdf = FormModifier("metrics") mdf.merge_fields("metric", "definition", title=T("General")) mdf.merge_fields("axis_vertical", "axis_horizontal", "conditions", title=T("Count by")) mdf.merge_fields("axis_label_converters", title=T("Substitute")) mdf.merge_fields("header_flag", "footer_flag", title=T("Header / Footer")) mdf.set_mapper(map_tabpanel) mdf.configure(buttonAlign="right", labelWidth=100, labelAlign="right", width=450, defaults={"maxHeight": 310}) # .................................................................... # # Grid # mdf = GridModifier("metrics") mdf.configure_column("metric", width=90) mdf.configure_column("definition", width=250) mdf.hide_columns("axis_vertical", "axis_horizontal", "granularity_vertical", "granularity_horizontal", "direction_vertical", "direction_horizontal", "axis_label_converters", "conditions", "header_flag", "footer_flag") mdf.append_filter(("metric", "contains", T("contains"))) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("metrics").orderby(db.metrics.metric) @staticmethod def renderers(db, T): """UI for the renderers table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("renderers") mdf.configure_field("template", enableAlignments=False, enableColors=False, enableFont=False, enableFontSize=False, enableLinks=False, enableLists=False, height=100, xtype="htmleditor") # .................................................................... # # Form # mdf = FormModifier("renderers") mdf.configure(fieldDefaults={"labelAlign": "left", "labelWidth": 110}, width=400) # .................................................................... # # Grid # mdf = GridModifier("renderers") mdf.configure_column("renderer", width=40) mdf.hide_columns("template", "postprocessing") # .................................................................... # # Store # StoreModifier("renderers").orderby(db.renderers.renderer) @staticmethod def sections(db, T): """UI for the sections table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("sections") mdf.configure_field("sort_field", flex=2) mdf.configure_field("direction", flex=1) mdf.merge_fields("sort_field", "direction", fieldLabel=T("Sort field")) # .................................................................... # # Form # mdf = FormModifier("sections") mdf.configure(fieldDefaults={"labelAlign": "left", "labelWidth": 110}) # .................................................................... # # Grid # mdf = GridModifier("sections") mdf.hide_columns("conditions", "sort_field", "direction") # .................................................................... # # Store # StoreModifier("sections").orderby(db.sections.section)