from psdi.server import MXServer; from psdi.mbo import MboConstants; from java.text import SimpleDateFormat; from java.util import Date import sys; ## Defined function to create a table based upon a child MboSet ## parameter intent: ## source MBO set to loop through ## p_fields [] array that contains the following ## 0 [] array of fields for which data should be pulled, in order, into each cell ## 1 header title (used if table has headers) ## 2 header style (if needing to override default as defined here in function) ## 3 simple date format for date formatting ## 4 desired cell width ## 5 cell style (if needing to override default as defined here in function) ## 6 cell style override (if False, then APPEND) ## 7 PRE-pend string ## 8 POST-pend string ## [[[], header_title, header_style, SDF, cell_width, cell_style]] ## std_header flag to use loop to generate standard header (if true) ## ovr_header flag to use overridden header (passed as a parameter) ## header_override code for overridden header ## table_tags additional tags for the TABLE control ## table_style style for the TABLE control ## empty_table_msg what to display if no content def create_table(source, p_fields, std_header, ovr_header, header_override, table_tags, table_style, empty_table_msg): ## define defaults dflt_cell_style = " padding-left: 5px; padding-right: 5px; background-color: #DDDDDD;"; dflt_head_style = " padding-left: 5px; padding-right: 5px; text-align: center; background-color: #DDDDDD; font-weight: bold;"; dflt_date_SDF = "MM/dd/yyyy"; HTML = ""; ## begin to build s = source.moveFirst(); while (s != None): HTML = HTML + ''; ## start a row for f in p_fields: ## this is the primary loop since fields by column are arrayed... value = ""; for g in f[0]: try: ## check to see if we have a real field or just need a blank cell... found = s.isNull(g); try: ## check to see if we are dealing w/a date x = s.getDate(g); ## if this succeeds, we're dealing w/a date try: ## see if we have an SDF passed SDF = f[3]; SDF = dflt_date_SDF if SDF == "" else SDF; except: SDF = dflt_date_SDF; value = value + " " + SimpleDateFormat(SDF).format(x); except: value = value + " " + s.getString(g) if value != "" else value + s.getString(g); except: value = " "; try: ## PRE-pend value = str(f[7]) + value; except: value = value; try: ## POST-pend value = value + str(f[8]); except: value = value; try: ## see if we have a cell width defined cell_width = str(f[4]); cell_width = "" if cell_width == "" else " width: " + cell_width + "; "; except: cell_width = ""; try: ## see if we have a cell style defined cell_style = str(f[5]); except: cell_style = dflt_cell_style; try: ## see if cell style should override or append cell_style_override = f[6]; except: cell_style_override = False; cell_style = cell_style if cell_style_override else dflt_cell_style + cell_style; HTML = HTML + '' + value + ''; HTML = HTML + ''; ## end a row s = source.moveNext(); if (source.moveFirst()): ## if we actually have rows in our table, then we need to finalize the HTML... ## build our header if (std_header): header = ""; for f in p_fields: try: header_style = str(f[2]) header_style = dflt_head_style if header_style == "" else header_style; except: header_style = dflt_head_style; try: header = header + '' + f[1] + ''; except: header = header + ' '; header = header + ""; elif (ovr_header): header = header_override; else: header = ""; HTML = '' + header + HTML + '
'; ## finalize the table else: HTML = empty_table_msg; return HTML; def create_multi_table(source, p_fields, p_columns, p_SDF, font_size, font_face, cell_shading, cell_style, table_tags, table_style, empty_table_msg): ## begin to build HTML = ''; ## start a row s = source.moveFirst(); i = 0; while (s != None): if (i%p_columns == 0 and i > 0): HTML = HTML + ""; value = ""; for f in p_fields: ## this is the primary loop since fields by column are arrayed... try: ## check to see if we are dealing w/a date x = s.getDate(f); ## if this succeeds, we're dealing w/a date value = value + " " + SimpleDateFormat(p_SDF).format(x); except: value = value + " " + s.getString(f) if value != "" else value + s.getString(f); HTML = HTML + '' + value + ''; i = i + 1; s = source.moveNext(); if (source.moveFirst()): ## if we actually have rows in our table, then we need to finalize the HTML... HTML = '' + HTML + '
'; ## finalize the table else: HTML = empty_table_msg; return HTML; ## Defined function to create an unnumbered list based upon a child MboSet def create_list(source, p_fields, empty_table_msg): ## begin to build HTML = ""; s = source.moveFirst(); while (s != None): for f in p_fields: ## this is the primary loop since fields by column are arrayed... value = "" for g in f: value = value + " " + s.getString(g) if value != "" else value + s.getString(g); if (value != ""): HTML = HTML + '
  • ' + value + '
  • '; break; s = source.moveNext(); if (source.moveFirst()): HTML = '