openFlashChart_varieties.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. # This program is free software; you can redistribute it and/or modify
  2. # it under the terms of the GNU General Public License as published by
  3. # the Free Software Foundation; version 2 of the License.
  4. #
  5. # This program is distributed in the hope that it will be useful,
  6. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  7. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  8. # GNU General Public License for more details.
  9. #
  10. # Author: Emanuel Fonseca
  11. # Email: emdfonseca<at>gmail<dot>com
  12. # Date: 25 August 2008
  13. #
  14. # Author: Eugene Kin Chee Yip
  15. # Date: 7 Nov 2008
  16. class varieties(dict):
  17. def __init__(self, type = None, alpha = None, colour = None, text = None, fontsize = None, values = None):
  18. self.set_type(type)
  19. self.set_alpha(alpha)
  20. self.set_colour(colour)
  21. self.set_text(text)
  22. self.set_fontsize(fontsize)
  23. self.set_values(values)
  24. def set_type(self, type):
  25. if type:
  26. self['type'] = type
  27. def set_alpha(self, alpha):
  28. if alpha:
  29. self['alpha'] = alpha
  30. def set_colour(self, colour):
  31. if colour:
  32. self['colour'] = colour
  33. def set_gradient_fill(self, gradient_fill):
  34. self['gradient-fill'] = gradient_fill
  35. def set_halo_size(self, size):
  36. self['halo-size'] = size
  37. def set_width(self, width):
  38. self['width'] = width
  39. def set_dot_size(self, size):
  40. self['dot-size'] = size
  41. def set_text(self, text):
  42. if text:
  43. self['text'] = text
  44. def set_fontsize(self, fontsize):
  45. if fontsize:
  46. self['font-size'] = fontsize
  47. def set_values(self, values):
  48. if values:
  49. self['values'] = values
  50. def append_keys(self, colour = None, text = None, fontsize = None):
  51. try:
  52. self['keys'].append(bar_stack_key(colour, text, fontsize))
  53. except:
  54. self['keys'] = [bar_stack_key(colour, text, fontsize)]
  55. def append_values(self, values):
  56. try:
  57. self['values'].append(values)
  58. except:
  59. self['values'] = [values]
  60. def append_stack(self, values):
  61. self.append_values(values)
  62. def set_line_style(self, on, off):
  63. self['line-style'] = line_style(on, off)
  64. def set_tooltip(self, text):
  65. self['tip'] = text
  66. def set_no_labels(self, no_labels):
  67. self['no-labels'] = no_labels
  68. def set_loop(self):
  69. self['loop'] = True
  70. def set_on_click(self, javascript_call):
  71. self['on-click'] = javascript_call
  72. ##########################################
  73. # key class for bar stack
  74. class bar_stack_key(dict):
  75. def __init__(self, colour = None, text = None, fontsize = None):
  76. self.set_colour(colour)
  77. self.set_text(text)
  78. self.set_fontsize(fontsize)
  79. def set_colour(self, colour):
  80. if colour:
  81. self['colour'] = colour
  82. def set_text(self, text):
  83. if text:
  84. self['text'] = text
  85. def set_fontsize(self, fontsize):
  86. if fontsize:
  87. self['font-size'] = fontsize
  88. ##########################################
  89. # value class for custom data points
  90. class value(dict):
  91. def __init__(self, val = None, colour = None, tooltip = None):
  92. self.set_val(val)
  93. self.set_colour(colour)
  94. self.set_tooltip(tooltip)
  95. def set_val(self, val):
  96. if val:
  97. self['value'] = val
  98. def set_colour(self, colour):
  99. if colour:
  100. self['colour'] = colour
  101. def set_tooltip(self, tooltip):
  102. if tooltip:
  103. self['tip'] = tooltip
  104. class dot_value(value):
  105. pass
  106. class bar_value(value):
  107. def __init__(self, (top, bottom), colour = None, tooltip = None):
  108. value.__init__(self, colour = colour, tooltip = tooltip)
  109. self.set_top_value(top)
  110. self.set_bottom_value(bottom)
  111. def set_top_value(self, top):
  112. self['top'] = top
  113. def set_bottom_value(self, bottom):
  114. self['bottom'] = bottom
  115. class bar_3d_value(bar_value):
  116. def __init__(self, top, colour = None, tooltip = None):
  117. value.__init__(self, colour = colour, tooltip = tooltip)
  118. self.set_top_value(top)
  119. def set_top_value(self, top):
  120. self['top'] = top
  121. class bar_glass_value(bar_3d_value):
  122. pass
  123. class bar_sketch_value(bar_3d_value):
  124. pass
  125. class hbar_value(value):
  126. def __init__(self, (left, right), colour = None, tooltip = None):
  127. value.__init__(self, colour = colour, tooltip = tooltip)
  128. self.set_left_value(left)
  129. self.set_right_value(right)
  130. def set_left_value(self, left):
  131. self['left'] = left
  132. def set_right_value(self, right):
  133. self['right'] = right
  134. class bar_stack_value(value):
  135. def __init__(self, val, colour = None, tooltip = None):
  136. value.__init__(self, colour = colour, tooltip = tooltip)
  137. self.set_value(val)
  138. def set_value(self, val):
  139. if val:
  140. self['val'] = val
  141. class pie_value(value):
  142. def __init__(self, val, label = None, colour = None, tooltip = None):
  143. value.__init__(self, val, colour, tooltip)
  144. self.set_label(label)
  145. def set_label(self, (label, colour, fontsize)):
  146. if label:
  147. self['label'] = label
  148. if colour:
  149. self['label-colour'] = colour
  150. if fontsize:
  151. self['font-size'] = fontsize
  152. class scatter_value(value):
  153. def __init__(self, (x, y), colour = None, tooltip = None):
  154. value.__init__(self, colour = colour, tooltip = tooltip)
  155. self.set_x_value(x)
  156. self.set_y_value(y)
  157. def set_x_value(self, x):
  158. self['x'] = x
  159. def set_y_value(self, y):
  160. self['y'] = y
  161. ##########################################
  162. # line style class for charts with lines
  163. class line_style(dict):
  164. def __init__(self, on = None, off = None, style = 'dash'):
  165. self.set_style(style)
  166. self.set_on(on)
  167. self.set_off(off)
  168. def set_style(self, style):
  169. self['style'] = style
  170. def set_on(self, on):
  171. if on:
  172. self['on'] = on
  173. def set_off(self, off):
  174. if off:
  175. self['off'] = off
  176. ##########################################
  177. # label classes
  178. class x_axis_labels(dict):
  179. def __init__(self, labels = None, steps = None, colour = None, size = None, rotate = None):
  180. self.set_labels(labels)
  181. self.set_steps(steps)
  182. self.set_colour(colour)
  183. self.set_size(size)
  184. self.set_rotate(rotate)
  185. def set_labels(self, labels):
  186. if labels:
  187. self['labels'] = labels
  188. def set_steps(self, steps):
  189. if steps:
  190. self['steps'] = steps
  191. def set_colour(self, colour):
  192. if colour:
  193. self['colour'] = colour
  194. def set_size(self, size):
  195. if size:
  196. self['size'] = size
  197. def set_rotate(self, rotate):
  198. if rotate:
  199. self['rotate'] = rotate
  200. class x_axis_label(dict):
  201. def __init__(self, text = None, colour = None, size = None, rotate = None):
  202. self.set_text(text)
  203. self.set_colour(colour)
  204. self.set_size(size)
  205. self.set_rotate(rotate)
  206. def set_text(self, text):
  207. if text:
  208. self['text'] = text
  209. def set_colour(self, colour):
  210. if colour:
  211. self['colour'] = colour
  212. def set_size(self, size):
  213. if size:
  214. self['size'] = size
  215. def set_rotate(self, rotate):
  216. if rotate:
  217. self['rotate'] = rotate
  218. ##########################################
  219. # Chart classes
  220. # Line Charts
  221. class Line(varieties):
  222. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  223. varieties.__init__(self, 'line', alpha, colour, text, fontsize, values)
  224. class Line_Dot(varieties):
  225. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  226. varieties.__init__(self, 'line_dot', alpha, colour, text, fontsize, values)
  227. class Line_Hollow(varieties):
  228. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  229. varieties.__init__(self, 'line_hollow', alpha, colour, text, fontsize, values)
  230. # Bar Charts
  231. class Bar(varieties):
  232. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  233. varieties.__init__(self, 'bar', alpha, colour, text, fontsize, values)
  234. class Bar_Filled(varieties):
  235. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, outline = None):
  236. varieties.__init__(self, 'bar_filled', alpha, colour, text, fontsize, values)
  237. if outline:
  238. self['outline-colour'] = outline
  239. class Bar_Glass(varieties):
  240. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  241. varieties.__init__(self, 'bar_glass', alpha, colour, text, fontsize, values)
  242. class Bar_3d(varieties):
  243. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  244. varieties.__init__(self, 'bar_3d', alpha, colour, text, fontsize, values)
  245. class Bar_Sketch(varieties):
  246. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, outline = None):
  247. varieties.__init__(self, 'bar_sketch', alpha, colour, text, fontsize, values)
  248. if outline:
  249. self['outline-colour'] = outline
  250. class HBar(varieties):
  251. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None):
  252. varieties.__init__(self, 'hbar', alpha, colour, text, fontsize, values)
  253. class Bar_Stack(varieties):
  254. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, colours = None):
  255. varieties.__init__(self, 'bar_stack', alpha, colour, text, fontsize, values)
  256. if colours:
  257. self['colours'] = colours
  258. # Area Charts
  259. class Area_Line(varieties):
  260. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, fill = None, fill_alpha = None):
  261. varieties.__init__(self, 'area_line', alpha, colour, text, fontsize, values)
  262. if fill_alpha:
  263. self['fill-alpha'] = fill_alpha
  264. if fill:
  265. self['fill'] = fill
  266. class Area_Hollow(varieties):
  267. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, fill = None, fill_alpha = None):
  268. varieties.__init__(self, 'area_hollow', alpha, colour, text, fontsize, values)
  269. if fill_alpha:
  270. self['fill-alpha'] = fill_alpha
  271. if fill:
  272. self['fill'] = fill
  273. # Pie Chart
  274. class Pie(varieties):
  275. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, start_angle = None, animate = None, colours = None, label_colour = None):
  276. varieties.__init__(self, 'pie', alpha, colour, text, fontsize, values)
  277. if start_angle:
  278. self['start-angle'] = start_angle
  279. if animate:
  280. self['animate'] = animate
  281. if colours:
  282. self['colours'] = colours
  283. if label_colour:
  284. self['label-colour'] = label_colour
  285. # Scatter Charts
  286. class Scatter(varieties):
  287. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, colours = None):
  288. varieties.__init__(self, 'scatter', alpha, colour, text, fontsize, values)
  289. class Scatter_Line(varieties):
  290. def __init__(self, alpha = None, colour = None, text = None, fontsize = None, values = None, colours = None):
  291. varieties.__init__(self, 'scatter_line', alpha, colour, text, fontsize, values)