本文整理匯總了Python中buildbot.status.web.base.IBox.parms["align"]方法的典型用法代碼示例。如果您正苦於以下問題:Python IBox.parms["align"]方法的具體用法?Python IBox.parms["align"]怎麽用?Python IBox.parms["align"]使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類buildbot.status.web.base.IBox
的用法示例。
在下文中一共展示了IBox.parms["align"]方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: phase2
# 需要導入模塊: from buildbot.status.web.base import IBox [as 別名]
# 或者: from buildbot.status.web.base.IBox import parms["align"] [as 別名]
def phase2(self, request, sourceNames, timestamps, eventGrid, sourceEvents):
data = ""
if not timestamps:
return data
# first pass: figure out the height of the chunks, populate grid
grid = []
for i in range(1 + len(sourceNames)):
grid.append([])
# grid is a list of columns, one for the timestamps, and one per
# event source. Each column is exactly the same height. Each element
# of the list is a single <td> box.
lastDate = time.strftime("<b>%Y-%m-%d</b>", time.localtime(util.now()))
for r in range(0, len(timestamps)):
chunkstrip = eventGrid[r]
# chunkstrip is a horizontal strip of event blocks. Each block
# is a vertical list of events, all for the same source.
assert len(chunkstrip) == len(sourceNames)
maxRows = reduce(lambda x, y: max(x, y), map(lambda x: len(x), chunkstrip))
for i in range(maxRows):
if i != maxRows - 1:
grid[0].append(None)
else:
# timestamp goes at the bottom of the chunk
stuff = []
# add the date at the beginning (if it is not the same as
# today's date), and each time it changes
today = time.strftime("<b>%Y-%m-%d</b>", time.localtime(timestamps[r]))
if today != lastDate:
stuff.append(today)
lastDate = today
stuff.append(time.strftime("%H:%M:%S", time.localtime(timestamps[r])))
grid[0].append(Box(text=stuff, class_="Time", valign="bottom", align="center"))
# at this point the timestamp column has been populated with
# maxRows boxes, most None but the last one has the time string
for c in range(0, len(chunkstrip)):
block = chunkstrip[c]
assert block != None # should be [] instead
for i in range(maxRows - len(block)):
# fill top of chunk with blank space
grid[c + 1].append(None)
for i in range(len(block)):
# so the events are bottom-justified
b = IBox(block[i]).getBox(request)
b.parms["valign"] = "top"
b.parms["align"] = "center"
grid[c + 1].append(b)
# now all the other columns have maxRows new boxes too
# populate the last row, if empty
gridlen = len(grid[0])
for i in range(len(grid)):
strip = grid[i]
assert len(strip) == gridlen
if strip[-1] == None:
if sourceEvents[i - 1]:
filler = IBox(sourceEvents[i - 1]).getBox(request)
else:
# this can happen if you delete part of the build history
filler = Box(text=["?"], align="center")
strip[-1] = filler
strip[-1].parms["rowspan"] = 1
# second pass: bubble the events upwards to un-occupied locations
# Every square of the grid that has a None in it needs to have
# something else take its place.
noBubble = request.args.get("nobubble", ["0"])
noBubble = int(noBubble[0])
if not noBubble:
for col in range(len(grid)):
strip = grid[col]
if col == 1: # changes are handled differently
for i in range(2, len(strip) + 1):
# only merge empty boxes. Don't bubble commit boxes.
if strip[-i] == None:
next = strip[-i + 1]
assert next
if next:
# if not next.event:
if next.spacer:
# bubble the empty box up
strip[-i] = next
strip[-i].parms["rowspan"] += 1
strip[-i + 1] = None
else:
# we are above a commit box. Leave it
# be, and turn the current box into an
# empty one
strip[-i] = Box([], rowspan=1, comment="commit bubble")
strip[-i].spacer = True
else:
# we are above another empty box, which
# somehow wasn't already converted.
# Shouldn't happen
pass
else:
for i in range(2, len(strip) + 1):
# strip[-i] will go from next-to-last back to first
if strip[-i] == None:
# bubble previous item up
assert strip[-i + 1] != None
strip[-i] = strip[-i + 1]
#.........這裏部分代碼省略.........