def __init__(self, topMargin, inputlen, spacing=3): ''' Constructor :params topMargin: The space at the top before the trade table. Includes the inspire quote and space notes. :params inputlen: Don't enter a value here. Its the length of the dframe after processing. :params spacing: The space between trade summaries. :params frq: The FinReqCol object ''' srf = SumReqFields() sumSize = srf.maxrow() + 5 self.summarySize = sumSize self.topMargin = topMargin self.inputlen = inputlen self.spacing = spacing self.DSFAnchor = None
def layoutExcelData(self, df, ldf, imageNames): ''' 1) Determine the locations in the Excel doc to place trade summaries, trade tables and images. 2) Create the empty rows and place the trade tables in the df according to the locations. :params df: We requre the df as a whole because we are adding rows to it. :params ldf: A list of dataframes, each a trade, each one is placed into our new skeletal layout for excel :return (Imagelocation, df): ImageLocation contains [ [list of image location], # up to 3 per trade [list of image names], # up to 3 per trade Start time, trade dur, ] ''' imageLocation = list() srf = SumReqFields() sumSize = srf.maxrow() + 5 summarySize = sumSize spacing = 3 # Image column location c1col = 13 c2col = 1 c3col = 9 frq = FinReqCol() newdf = DataFrameUtil.createDf(df, self.topMargin) df = newdf.append(df, ignore_index=True) deleteme = [] for i, tdf in enumerate(ldf): theKey = tdf[frq.tix].unique()[-1] if len(theKey) == 0: deleteme.append(i) continue imageName = imageNames[theKey] xtraimage = 0 # Add space for second/third image if len(imageName) > 1: xtraimage = 21 ilocs = [] # Need 1 entry even if there are no images ilocs.append((c1col, len(tdf) + len(df) + spacing)) for i in range(0, len(imageName)): if i == 1: ilocs.append((c2col, len(tdf) + len(df) + spacing + 20)) elif i == 2: ilocs.append((c3col, len(tdf) + len(df) + spacing + 20)) # Holds image locations, image name, trade start time, trade duration as delta imageLocation.append([ ilocs, imageName, tdf.Start.unique()[-1], tdf.Duration.unique()[-1] ]) # Append the mini trade table then add rows to fit the tradeSummary form df = df.append(tdf, ignore_index=True) df = DataFrameUtil.addRows(df, summarySize + xtraimage) for d in deleteme: ldf.pop(d) return imageLocation, df