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__ (self, title, sampleName)
 
def addPlotSet (self, section, plotSet)
 
def addTable (self, section, table)
 
def isEmpty (self)
 
def write (self, fileName)
 

Private Member Functions

def _appendColumnHeader (self, header)
 
def _appendLegend (self, section)
 
def _formatLegend (self)
 
def _formatPlotSets (self)
 
def _formatTables (self)
 
def _mapSectionName (self, section)
 
def _orderSets (self, keys)
 

Private Attributes

 _columnHeaders
 
 _columnHeadersIndex
 
 _content
 
 _legends
 
 _plotSets
 
 _sectionLegendIndex
 
 _tables
 

Detailed Description

Definition at line 305 of file html.py.

Constructor & Destructor Documentation

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

Definition at line 306 of file html.py.

306  def __init__(self, title, sampleName):
307  self._content = [
308  '<html>',
309  ' <head>',
310  ' <title>%s</title>' % title,
311  ' </head>',
312  ' <body>',
313  ' '+sampleName,
314  ' <br/>',
315  ' <br/>',
316  ]
317 
318  self._plotSets = {}
319  self._tables = {}
320 
_content
Definition: html.py:307
def __init__(self, title, sampleName)
Definition: html.py:306
_plotSets
Definition: html.py:318
_tables
Definition: html.py:319

Member Function Documentation

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

Definition at line 429 of file html.py.

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

Referenced by html.Page._formatTables().

429  def _appendColumnHeader(self, header):
430  leg = ""
431  if header in self._columnHeadersIndex:
432  leg = self._columnHeadersIndex[header]
433  else:
434  leg = str(chr(ord('A')+len(self._columnHeaders)))
435  self._columnHeaders.append("%s: %s" % (leg, header))
436  self._columnHeadersIndex[header] = leg
437  return leg
438 
def _appendColumnHeader(self, header)
Definition: html.py:429
_columnHeaders
Definition: html.py:343
_columnHeadersIndex
Definition: html.py:344
#define str(s)
def html.Page._appendLegend (   self,
  section 
)
private

Definition at line 361 of file html.py.

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

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

361  def _appendLegend(self, section):
362  leg = ""
363  legends = _sectionNameLegend()
364  if section in legends:
365  if section in self._sectionLegendIndex:
366  leg = self._sectionLegendIndex[section]
367  else:
368  legnum = len(self._legends)+1
369  leg = "<sup>%d</sup>" % legnum
370  leg2 = "<sup>%d)</sup>" % legnum
371  self._legends.append("%s %s" % (leg2, legends[section]))
372  self._sectionLegendIndex[section] = leg
373  return leg
374 
_legends
Definition: html.py:341
def _appendLegend(self, section)
Definition: html.py:361
def _sectionNameLegend()
Definition: html.py:222
_sectionLegendIndex
Definition: html.py:342
def html.Page._formatLegend (   self)
private

Definition at line 493 of file html.py.

References html.Page._legends.

493  def _formatLegend(self):
494  if len(self._legends) > 0:
495  self._content.extend([
496  ' <br/>'
497  ' Details:</br>',
498  ])
499  for leg in self._legends:
500  self._content.append(' %s<br/>' % leg)
501 
502 
_legends
Definition: html.py:341
def _formatLegend(self)
Definition: html.py:493
def html.Page._formatPlotSets (   self)
private

Definition at line 375 of file html.py.

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

375  def _formatPlotSets(self):
376  self._content.extend([
377  ' <table>'
378  ' <tr>',
379  ])
380 
381  fileTable = []
382 
383  sections = self._orderSets(self._plotSets.keys())
384  for isec, section in enumerate(sections):
385  leg = self._appendLegend(section)
386 
387  self._content.extend([
388  ' <td>%s%s</td>' % (self._mapSectionName(section), leg),
389  ])
390  files = [(os.path.basename(f), f) for f in self._plotSets[section]]
391  for row in fileTable:
392  found = False
393  for i, (bsf, f) in enumerate(files):
394  if bsf == row[0]:
395  row.append(f)
396  found = True
397  del files[i]
398  break
399  if not found:
400  row.append(None)
401  for bsf, f in files:
402  fileTable.append( [bsf] + [None]*isec + [f] )
403 
404  self._content.extend([
405  ' </tr>',
406  ])
407 
408  for row in fileTable:
409  self._content.append(' <tr>')
410  bs = row[0]
411  for elem in row[1:]:
412  if elem is not None:
413  self._content.append(' <td><a href="%s">%s</a></td>' % (elem, bs))
414  else:
415  self._content.append(' <td></td>')
416  self._content.append(' </tr>')
417 
418 
419  self._content.extend([
420  ' </table>',
421  ])
422 
423  if len(fileTable):
424  first_row = fileTable[0]
425  self._content.extend([
426  ' <a href="%s">Browse Folder</a>' % (first_row[1][0:first_row[1].rfind('/')])
427  ])
428 
def _orderSets(self, keys)
Definition: html.py:506
def _mapSectionName(self, section)
Definition: html.py:503
def _appendLegend(self, section)
Definition: html.py:361
_plotSets
Definition: html.py:318
def _formatPlotSets(self)
Definition: html.py:375
def html.Page._formatTables (   self)
private

Definition at line 439 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, genParticles_cff.map, SiStripPI.max, and str.

439  def _formatTables(self):
440  def _allNone(row):
441  for item in row:
442  if item is not None:
443  return False
444  return True
445 
446  sections = self._orderSets(self._tables.keys())
447  for isec, section in enumerate(sections):
448  leg = self._appendLegend(section)
449 
450  table = self._tables[section]
451  self._content.extend([
452  ' <br/>',
453  ' %s%s' % (self._mapSectionName(section), leg),
454  ' <table border="1">'
455  ])
456 
457  # table is stored in column-row, need to transpose
458  data = table.tableAsRowColumn()
459 
460  self._content.extend([
461  ' <tr>'
462  ' <td></td>'
463  ])
464  heads = table.columnHeaders()
465  if max(map(lambda h: len(h), heads)) > 20:
466  heads = [self._appendColumnHeader(h) for h in heads]
467  for head in heads:
468  self._content.append(' <td>%s</td>' % head)
469  self._content.append(' </tr>')
470 
471  for irow, row in enumerate(data):
472  # Skip row if all values are non-existent
473  if _allNone(row):
474  continue
475 
476  self._content.extend([
477  ' <tr>'
478  ' <td>%s</td>' % table.rowHeaders()[irow]
479  ])
480  # align the number columns to right
481  for icol, item in enumerate(row):
482  formatted = str(item) if item is not None else ""
483  self._content.append(' <td align="right">%s</td>' % formatted)
484  self._content.append(' </tr>')
485 
486  self._content.append(' </table>')
487 
488  for shortenedColumnHeader in self._columnHeaders:
489  self._content.append(' %s<br/>' % shortenedColumnHeader)
490  self._columnHeaders = []
491  self._columnHeadersIndex = {}
492 
def _appendColumnHeader(self, header)
Definition: html.py:429
def _orderSets(self, keys)
Definition: html.py:506
def _mapSectionName(self, section)
Definition: html.py:503
def _appendLegend(self, section)
Definition: html.py:361
_columnHeaders
Definition: html.py:343
def _formatTables(self)
Definition: html.py:439
_columnHeadersIndex
Definition: html.py:344
_tables
Definition: html.py:319
#define str(s)
def html.Page._mapSectionName (   self,
  section 
)
private

Definition at line 503 of file html.py.

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

503  def _mapSectionName(self, section):
504  return _sectionNameMapOrder.get(section, section)
505 
def _mapSectionName(self, section)
Definition: html.py:503
def html.Page._orderSets (   self,
  keys 
)
private

Definition at line 506 of file html.py.

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

506  def _orderSets(self, keys):
507  keys_sorted = sorted(keys)
508  ret = []
509  for section in _sectionNameMapOrder.keys():
510  if section in keys_sorted:
511  ret.append(section)
512  keys_sorted.remove(section)
513  ret.extend(keys_sorted)
514  return ret
515 
def _orderSets(self, keys)
Definition: html.py:506
def html.Page.addPlotSet (   self,
  section,
  plotSet 
)

Definition at line 321 of file html.py.

References html.Page._plotSets.

321  def addPlotSet(self, section, plotSet):
322  if section in self._plotSets:
323  self._plotSets[section].extend(plotSet)
324  else:
325  self._plotSets[section] = plotSet
326 
def addPlotSet(self, section, plotSet)
Definition: html.py:321
_plotSets
Definition: html.py:318
def html.Page.addTable (   self,
  section,
  table 
)

Definition at line 327 of file html.py.

References html.Page._tables.

327  def addTable(self, section, table):
328  self._tables[section] = table
329 
_tables
Definition: html.py:319
def addTable(self, section, table)
Definition: html.py:327
def html.Page.isEmpty (   self)

Definition at line 330 of file html.py.

References html.Page._plotSets, and html.Page._tables.

Referenced by plotting.Plot.clone().

330  def isEmpty(self):
331  for plotSet in six.itervalues(self._plotSets):
332  if len(plotSet) > 0:
333  return False
334 
335  if len(self._tables) > 0:
336  return False
337 
338  return True
339 
def isEmpty(self)
Definition: html.py:330
_plotSets
Definition: html.py:318
_tables
Definition: html.py:319
def html.Page.write (   self,
  fileName 
)

Definition at line 340 of file html.py.

340  def write(self, fileName):
341  self._legends = []
343  self._columnHeaders = []
345  self._formatPlotSets()
346  self._formatTables()
347  self._formatLegend()
348 
349  self._content.extend([
350  ' </body>',
351  '</html>',
352  ])
353 
354  #print "Writing HTML report page", fileName
355  f = open(fileName, "w")
356  for line in self._content:
357  f.write(line)
358  f.write("\n")
359  f.close()
360 
def write(self, fileName)
Definition: html.py:340
_legends
Definition: html.py:341
_content
Definition: html.py:307
def _formatLegend(self)
Definition: html.py:493
_columnHeaders
Definition: html.py:343
def _formatTables(self)
Definition: html.py:439
_columnHeadersIndex
Definition: html.py:344
def _formatPlotSets(self)
Definition: html.py:375
_sectionLegendIndex
Definition: html.py:342

Member Data Documentation

html.Page._columnHeaders
private

Definition at line 343 of file html.py.

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

html.Page._columnHeadersIndex
private

Definition at line 344 of file html.py.

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

html.Page._content
private

Definition at line 307 of file html.py.

html.Page._legends
private

Definition at line 341 of file html.py.

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

html.Page._plotSets
private

Definition at line 318 of file html.py.

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

html.Page._sectionLegendIndex
private

Definition at line 342 of file html.py.

Referenced by html.Page._appendLegend().

html.Page._tables
private

Definition at line 319 of file html.py.

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