From a78abf720158c9184552693fe6239a6b8445f381 Mon Sep 17 00:00:00 2001 From: Nicolas Delaby <nicolas@nexedi.com> Date: Fri, 4 Apr 2008 09:06:53 +0000 Subject: [PATCH] Add render_odf Method on widget for OLE inclusion Add scatter type graph git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20302 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/OOoChart.py | 126 ++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 54 deletions(-) diff --git a/product/ERP5Form/OOoChart.py b/product/ERP5Form/OOoChart.py index b069619353..fee4320c77 100644 --- a/product/ERP5Form/OOoChart.py +++ b/product/ERP5Form/OOoChart.py @@ -119,6 +119,7 @@ class OOoChartWidget(Widget.Widget): items=[('bar', 'chart:bar'), ('circle', 'chart:circle'), ('line', 'chart:line'), + ('scatter', 'chart:scatter'), ], size=0) property_names.append('chart_type') @@ -192,24 +193,24 @@ class OOoChartWidget(Widget.Widget): property_names.append('grid_size') user_data_title = fields.StringField('user_data_title', - title="User Column ID For X-axis", + title="Overide Labelled Column ID", description=( - "Column ID choose by user to define the X-axes."), + "Column Id choose by user to define the label."), required=0) property_names.append('user_data_title') user_column_id_list = fields.ListTextAreaField('user_column_id_list', - title="User Column ID List", + title="Overide Column Ids", description=( - "A list of columns ID choose by user to draw the graph."), + "A list of column Ids choose by user to draw the graph."), default=[], required=0) property_names.append('user_column_id_list') chart_stacked = fields.CheckBoxField('chart_stacked', - title='Stacked Bars', - description=('stacked bars or not'), + title='Stacked Data', + description=('stacked data or not'), default=0, required=0) property_names.append('chart_stacked') @@ -279,7 +280,7 @@ class OOoChartWidget(Widget.Widget): size=1) property_names.append('lines_used') - + #series-source=columns or rows series_source = fields.ListField('series_source', title='Series Source', @@ -305,7 +306,7 @@ class OOoChartWidget(Widget.Widget): #data-label-number="none" value percentage data_label_number = fields.ListField('data_label_number', - title='Data-Label-Number', + title='Data Label Number', description=(''), default='none', items=[('none', 'none'), @@ -330,6 +331,47 @@ class OOoChartWidget(Widget.Widget): required=0) property_names.append('data_label_symbol') + + def getArgumentDict(self, field, REQUEST): + """ Build argument Dict """ + def stringBoolean(value): + return str(bool(value)).lower() + + extra_argument_dict = dict( + chart_form_id = field.get_value('form_id'), + chart_field_id = field.get_value('field_id'), + chart_title = field.get_value('title'), + chart_type = field.get_value('chart_type'), + colour_column_dict = dict(field.get_value('colour_column_list')), + user_column_id_dict = dict(field.get_value('user_column_id_list')), + user_data_title= field.get_value('user_data_title'), + chart_position = field.get_value('chart_position'), + chart_legend = stringBoolean(field.get_value('chart_legend')), + chart_title_or_no = stringBoolean(field.get_value('chart_title_or_no')), + grid_graph = stringBoolean(field.get_value('grid_graph')), + grid_size=field.get_value('grid_size'), + chart_three_dimensional = stringBoolean(field.get_value('chart_three_dimensional')), + deep = stringBoolean(field.get_value('deep')), + chart_stacked = stringBoolean(field.get_value('chart_stacked')), + sector_pie_offset = field.get_value('sector_pie_offset'), + interpolation = field.get_value('interpolation'), + symbol_type = field.get_value('symbol_type'), + lines_used = field.get_value('lines_used'), + connect_bars = stringBoolean(field.get_value('connect_bars')), + series_source = field.get_value('series_source'), + regression_type = field.get_value('regression_type'), + data_label_number = field.get_value('data_label_number'), + data_label_text = stringBoolean(field.get_value('data_label_text')), + data_label_symbol = stringBoolean(field.get_value('data_label_symbol')), + position_legend=field.get_value('position_legend'), + ) + + for k, v in extra_argument_dict.items(): + if REQUEST.get(k) is None: + REQUEST.form[k] = v + return extra_argument_dict + + def render_view(self, field, value, key=None, REQUEST=None, render_format='html'): """ Render a Chart in read-only. @@ -337,6 +379,20 @@ class OOoChartWidget(Widget.Widget): if REQUEST is None: REQUEST=get_request() return self.render(field, key, value, REQUEST, render_format=render_format) + + def render_odf(self, field, key, value, REQUEST, render_format='ooo'): + """ + Render a Chart for ODT Style. + """ + form = field.aq_parent + here = getattr(form, 'aq_parent', REQUEST) + extra_context = self.getArgumentDict(field, here.REQUEST) + content = ''' + <office:include style="inline-graphic" path="%s/ERP5Site_buildChart" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed"/> + ''' % here.getPath() + return content + + def render(self, field, key, value, REQUEST, render_format='html'): """ @@ -360,18 +416,14 @@ class OOoChartWidget(Widget.Widget): here = getattr(form, 'aq_parent', REQUEST) # Update the render format based on REQUEST parameters render_format = getattr(REQUEST, 'render_format', render_format) - UrlIconOOo='%s/misc_/ERP5OOo/OOo.png' % here.ERP5Site_getAbsoluteUrl() UrlIconPdf='%s/misc_/ERP5Form/PDF.png' % here.ERP5Site_getAbsoluteUrl() - if render_format == 'html': field_absolute_url = '%s/%s/%s' % (here.absolute_url(), form.getId(), field.getId()) css_class = field.get_value('css_class') - format = field.get_value('image_format') - if format == '': - format='png' + format = field.get_value('image_format') or 'png' display = field.get_value('image_display') if format in STANDARD_IMAGE_FORMAT_LIST: main_content = '''<div class="OOoChartContent"> @@ -383,62 +435,30 @@ class OOoChartWidget(Widget.Widget): title, alternate_name) return main_content - - if format == 'raw': + elif format == 'raw': main_content = '''<div class="OOoChartContent"> <a href="%s?render_format=&display=%s"><img src="%s" alt="OOo"/></a></div> ''' % (field_absolute_url, display, UrlIconOOo) return main_content - if format == 'pdf': + elif format == 'pdf': main_content = '''<div class="OOoChartContent"> <a href="%s?render_format=pdf&display=%s"><img src="%s" alt="PDF" /></a> </div>''' % (field_absolute_url, display, UrlIconPdf) return main_content + else: + raise NotImplementedError, 'Format: %s not handled' % format - def stringBoolean(value): - return str(bool(value)).lower() - - #Build the parameters - extra_argument_dict = dict( - chart_form_id = field.get_value('form_id'), - chart_field_id = field.get_value('field_id'), - chart_title = field.get_value('title'), - chart_type = field.get_value('chart_type'), - colour_column_dict = dict(field.get_value('colour_column_list')), - user_column_id_dict = dict(field.get_value('user_column_id_list')), - user_data_title= field.get_value('user_data_title'), - chart_position = field.get_value('chart_position'), - chart_legend = stringBoolean(field.get_value('chart_legend')), - chart_title_or_no = stringBoolean(field.get_value('chart_title_or_no')), - grid_graph = stringBoolean(field.get_value('grid_graph')), - grid_size=field.get_value('grid_size'), - chart_three_dimensional = stringBoolean(field.get_value('chart_three_dimensional')), - deep = stringBoolean(field.get_value('deep')), - chart_stacked = stringBoolean(field.get_value('chart_stacked')), - sector_pie_offset = field.get_value('sector_pie_offset'), - interpolation = field.get_value('interpolation'), - symbol_type = field.get_value('symbol_type'), - lines_used = field.get_value('lines_used'), - connect_bars = stringBoolean(field.get_value('connect_bars')), - series_source = field.get_value('series_source'), - regression_type = field.get_value('regression_type'), - data_label_number = field.get_value('data_label_number'), - data_label_text = stringBoolean(field.get_value('data_label_text')), - data_label_symbol = stringBoolean(field.get_value('data_label_symbol')), - position_legend=field.get_value('position_legend'), - ) - - for k, v in extra_argument_dict.items(): - if REQUEST.get(k) is None: - REQUEST.form[k] = v + extra_context = self.getArgumentDict(field, REQUEST) method_id = field.get_value('ooo_template') + # Find the page template ooo_template = getattr(here, method_id) + # Render the chart return ooo_template(format=render_format) @@ -456,7 +476,5 @@ OOoChartValidatorInstance = OOoChartValidator() class OOoChart(ZMIField): meta_type = "OOoChart" - widget = OOoChartWidgetInstance validator = OOoChartValidatorInstance - -- 2.30.9