test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
html.Page Class Reference
Inheritance diagram for html.Page:
html.TrackingIterPage

Public Member Functions

def __init__
 
def addPlotSet
 
def addTable
 
def isEmpty
 
def write
 

Private Member Functions

def _appendColumnHeader
 
def _appendLegend
 
def _formatLegend
 
def _formatPlotSets
 
def _formatTables
 
def _mapSectionName
 
def _orderSets
 

Private Attributes

 _columnHeaders
 
 _columnHeadersIndex
 
 _content
 
 _legends
 
 _plotSets
 
 _sectionLegendIndex
 
 _tables
 

Detailed Description

Definition at line 260 of file html.py.

Constructor & Destructor Documentation

def html.Page.__init__ (   self,
  title,
  sampleName 
)

Definition at line 261 of file html.py.

262  def __init__(self, title, sampleName):
263  self._content = [
264  '<html>',
265  ' <head>',
266  ' <title>%s</title>' % title,
267  ' </head>',
268  ' <body>',
269  ' '+sampleName,
270  ' <br/>',
271  ' <br/>',
272  ]
274  self._plotSets = {}
275  self._tables = {}
_content
Definition: html.py:262
_plotSets
Definition: html.py:273
def __init__
Definition: html.py:261
_tables
Definition: html.py:274

Member Function Documentation

def html.Page._appendColumnHeader (   self,
  header 
)
private

Definition at line 378 of file html.py.

References html.Table._columnHeaders, html.Page._columnHeaders, and html.Page._columnHeadersIndex.

Referenced by html.Page._formatTables().

379  def _appendColumnHeader(self, header):
380  leg = ""
381  if header in self._columnHeadersIndex:
382  leg = self._columnHeadersIndex[header]
383  else:
384  leg = str(chr(ord('A')+len(self._columnHeaders)))
385  self._columnHeaders.append("%s: %s" % (leg, header))
386  self._columnHeadersIndex[header] = leg
387  return leg
_columnHeaders
Definition: html.py:298
_columnHeadersIndex
Definition: html.py:299
def _appendColumnHeader
Definition: html.py:378
def html.Page._appendLegend (   self,
  section 
)
private

Definition at line 316 of file html.py.

References html.Page._legends, html.Page._sectionLegendIndex, and html._sectionNameLegend().

Referenced by html.Page._formatPlotSets(), and html.Page._formatTables().

317  def _appendLegend(self, section):
318  leg = ""
319  legends = _sectionNameLegend()
320  if section in legends:
321  if section in self._sectionLegendIndex:
322  leg = self._sectionLegendIndex[section]
323  else:
324  legnum = len(self._legends)+1
325  leg = "<sup>%d</sup>" % legnum
326  leg2 = "<sup>%d)</sup>" % legnum
327  self._legends.append("%s %s" % (leg2, legends[section]))
328  self._sectionLegendIndex[section] = leg
329  return leg
_legends
Definition: html.py:296
def _sectionNameLegend
Definition: html.py:183
def _appendLegend
Definition: html.py:316
_sectionLegendIndex
Definition: html.py:297
def html.Page._formatLegend (   self)
private

Definition at line 442 of file html.py.

References html.Page._legends.

443  def _formatLegend(self):
444  if len(self._legends) > 0:
445  self._content.extend([
446  ' <br/>'
447  ' Details:</br>',
448  ])
449  for leg in self._legends:
450  self._content.append(' %s<br/>' % leg)
451 
_legends
Definition: html.py:296
def _formatLegend
Definition: html.py:442
def html.Page._formatPlotSets (   self)
private

Definition at line 330 of file html.py.

References html.Page._appendLegend(), html.Page._mapSectionName(), html.Page._orderSets(), and html.Page._plotSets.

331  def _formatPlotSets(self):
332  self._content.extend([
333  ' <table>'
334  ' <tr>',
335  ])
336 
337  fileTable = []
338 
339  sections = self._orderSets(self._plotSets.keys())
340  for isec, section in enumerate(sections):
341  leg = self._appendLegend(section)
342 
343  self._content.extend([
344  ' <td>%s%s</td>' % (self._mapSectionName(section), leg),
345  ])
346  files = [(os.path.basename(f), f) for f in self._plotSets[section]]
347  for row in fileTable:
348  found = False
349  for i, (bsf, f) in enumerate(files):
350  if bsf == row[0]:
351  row.append(f)
352  found = True
353  del files[i]
354  break
355  if not found:
356  row.append(None)
357  for bsf, f in files:
358  fileTable.append( [bsf] + [None]*isec + [f] )
359 
360  self._content.extend([
361  ' </tr>',
362  ])
363 
364  for row in fileTable:
365  self._content.append(' <tr>')
366  bs = row[0]
367  for elem in row[1:]:
368  if elem is not None:
369  self._content.append(' <td><a href="%s">%s</a></td>' % (elem, bs))
370  else:
371  self._content.append(' <td></td>')
372  self._content.append(' </tr>')
373 
374 
375  self._content.extend([
376  ' </table>',
377  ])
def _formatPlotSets
Definition: html.py:330
def _orderSets
Definition: html.py:455
_plotSets
Definition: html.py:273
def _appendLegend
Definition: html.py:316
def _mapSectionName
Definition: html.py:452
def html.Page._formatTables (   self)
private

Definition at line 388 of file html.py.

References html.Page._appendColumnHeader(), html.Page._appendLegend(), html.Table._columnHeaders, html.Page._columnHeaders, html.Page._columnHeadersIndex, html.Page._mapSectionName(), html.Page._orderSets(), html.Page._tables, and bookConverter.max.

389  def _formatTables(self):
390  def _allNone(row):
391  for item in row:
392  if item is not None:
393  return False
394  return True
395 
396  sections = self._orderSets(self._tables.keys())
397  for isec, section in enumerate(sections):
398  leg = self._appendLegend(section)
399 
400  table = self._tables[section]
401  self._content.extend([
402  ' <br/>',
403  ' %s%s' % (self._mapSectionName(section), leg),
404  ' <table border="1">'
405  ])
406 
407  # table is stored in column-row, need to transpose
408  data = table.tableAsRowColumn()
409 
410  self._content.extend([
411  ' <tr>'
412  ' <td></td>'
413  ])
414  heads = table.columnHeaders()
415  if max(map(lambda h: len(h), heads)) > 20:
416  heads = [self._appendColumnHeader(h) for h in heads]
417  for head in heads:
418  self._content.append(' <td>%s</td>' % head)
419  self._content.append(' </tr>')
420 
421  for irow, row in enumerate(data):
422  # Skip row if all values are non-existent
423  if _allNone(row):
424  continue
425 
426  self._content.extend([
427  ' <tr>'
428  ' <td>%s</td>' % table.rowHeaders()[irow]
429  ])
430  # align the number columns to right
431  for icol, item in enumerate(row):
432  formatted = str(item) if item is not None else ""
433  self._content.append(' <td align="right">%s</td>' % formatted)
434  self._content.append(' </tr>')
435 
436  self._content.append(' </table>')
437 
438  for shortenedColumnHeader in self._columnHeaders:
439  self._content.append(' %s<br/>' % shortenedColumnHeader)
440  self._columnHeaders = []
441  self._columnHeadersIndex = {}
def _formatTables
Definition: html.py:388
_columnHeaders
Definition: html.py:298
def _orderSets
Definition: html.py:455
def _appendLegend
Definition: html.py:316
_columnHeadersIndex
Definition: html.py:299
def _mapSectionName
Definition: html.py:452
_tables
Definition: html.py:274
def _appendColumnHeader
Definition: html.py:378
def html.Page._mapSectionName (   self,
  section 
)
private

Definition at line 452 of file html.py.

Referenced by html.Page._formatPlotSets(), and html.Page._formatTables().

453  def _mapSectionName(self, section):
454  return _sectionNameMapOrder.get(section, section)
def _mapSectionName
Definition: html.py:452
def html.Page._orderSets (   self,
  keys 
)
private

Definition at line 455 of file html.py.

Referenced by html.Page._formatPlotSets(), and html.Page._formatTables().

456  def _orderSets(self, keys):
457  ret = []
458  for section in _sectionNameMapOrder.keys():
459  if section in keys:
460  ret.append(section)
461  keys.remove(section)
462  ret.extend(keys)
463  return ret
def _orderSets
Definition: html.py:455
def html.Page.addPlotSet (   self,
  section,
  plotSet 
)

Definition at line 276 of file html.py.

References html.Page._plotSets.

277  def addPlotSet(self, section, plotSet):
278  if section in self._plotSets:
279  self._plotSets[section].extend(plotSet)
280  else:
281  self._plotSets[section] = plotSet
def addPlotSet
Definition: html.py:276
_plotSets
Definition: html.py:273
def html.Page.addTable (   self,
  section,
  table 
)

Definition at line 282 of file html.py.

References html.Page._tables.

283  def addTable(self, section, table):
284  self._tables[section] = table
_tables
Definition: html.py:274
def addTable
Definition: html.py:282
def html.Page.isEmpty (   self)

Definition at line 285 of file html.py.

References html.Page._tables.

Referenced by plotting.Plot.clone().

286  def isEmpty(self):
287  for plotSet in self._plotSets.itervalues():
288  if len(plotSet) > 0:
289  return False
290 
291  if len(self._tables) > 0:
292  return False
293 
294  return True
_tables
Definition: html.py:274
def isEmpty
Definition: html.py:285
def html.Page.write (   self,
  fileName 
)

Definition at line 295 of file html.py.

296  def write(self, fileName):
297  self._legends = []
299  self._columnHeaders = []
300  self._columnHeadersIndex = {}
301  self._formatPlotSets()
302  self._formatTables()
303  self._formatLegend()
304 
305  self._content.extend([
306  ' </body>',
307  '</html>',
308  ])
309 
310  #print "Writing HTML report page", fileName
311  f = open(fileName, "w")
312  for line in self._content:
313  f.write(line)
314  f.write("\n")
315  f.close()
def _formatPlotSets
Definition: html.py:330
_legends
Definition: html.py:296
_content
Definition: html.py:262
def _formatTables
Definition: html.py:388
def _formatLegend
Definition: html.py:442
_columnHeaders
Definition: html.py:298
def write
Definition: html.py:295
_columnHeadersIndex
Definition: html.py:299
_sectionLegendIndex
Definition: html.py:297

Member Data Documentation

html.Page._columnHeaders
private

Definition at line 298 of file html.py.

Referenced by html.Page._appendColumnHeader(), and html.Page._formatTables().

html.Page._columnHeadersIndex
private

Definition at line 299 of file html.py.

Referenced by html.Page._appendColumnHeader(), and html.Page._formatTables().

html.Page._content
private

Definition at line 262 of file html.py.

html.Page._legends
private

Definition at line 296 of file html.py.

Referenced by html.Page._appendLegend(), and html.Page._formatLegend().

html.Page._plotSets
private

Definition at line 273 of file html.py.

Referenced by html.Page._formatPlotSets(), and html.Page.addPlotSet().

html.Page._sectionLegendIndex
private

Definition at line 297 of file html.py.

Referenced by html.Page._appendLegend().

html.Page._tables
private

Definition at line 274 of file html.py.

Referenced by html.Page._formatTables(), html.Page.addTable(), and html.Page.isEmpty().