Source code for pyforms_web.controls.control_visvis

import datetime
from pyforms_web.controls.control_base import ControlBase
import simplejson

[docs]class ControlVisVis(ControlBase): def __init__(self, *args, **kwargs): self._legend = [] self.selected_data = None self.selected_serie = None if 'default' not in kwargs.keys(): kwargs['default']=[] super().__init__(*args, **kwargs) self.data_selected_event = kwargs.get('data_selected_event', self.data_selected_event) def init_form(self): return "new ControlVisVis('{0}', {1})".format( self._name, simplejson.dumps(self.serialize()) )
[docs] def remote_data_selected_event(self): self.data_selected_event(self.selected_serie, self.selected_data)
[docs] def data_selected_event(self, series_index, data): pass
@property def legend(self):return self._legend @legend.setter def legend(self, value): if self._legend!=value: self.mark_to_update_client() self._legend = value @property def value(self): rows = [] for row in self._value: new_row = [] for value in row: if value is None: break if isinstance(value[0], datetime.datetime): value[0] = str(value[0]) if isinstance(value[0], datetime.date): value[0] = str(value[0]) if isinstance(value[0], str): value[0] = str(value[0]) if isinstance(value[1], str): value[1] = str(value[1]) new_row.append(value) rows.append(new_row) return rows @value.setter def value(self, value): ControlBase.value.fset(self, value) def serialize(self): data = ControlBase.serialize(self) data.update({ 'legend': self.legend, 'value': self._value }) return data def deserialize(self, properties): self.selected_serie = properties.get('selected_series', None) self.selected_data = properties.get('selected_data', None) ControlBase.deserialize(self, properties) self.legend = properties[u'legend'] self.value = properties[u'value']