def __init__(self, ts, is_expanded=True): """Construct a RelativeDateComponent. Required: ts ts the time to display Optional: bool is_expanded Expand the Relative Date Component """ super(RelativeDateComponent, self).__init__() self.append_class(self.RELATIVE_DATE_COMPONENT_CLASS) relative_date = Span() if is_expanded: relative_date.set_text( date.format_to_long_relative_datetime(ts)) else: relative_date.set_text(date.format_to_short_relative_datetime(ts)) self.append_child(relative_date)
def __init__(self, game): """ Construct a section with BoxscoreMedia. Required: Game game the game to create the boxscore from """ super(BoxscoreMedia, self).__init__() self.append_class(self.BOXSCORE_MEDIA_CLASS) # to allow the outer object to fit the screen width and still # wrap the inner floats floatable = FloatContainer() game_overview = Div() game_overview.append_class(self.GAME_OVERVIEW_CLASS) final = Span() final.set_text(Copy.final) game_overview.append_child(final) game_overview.append_child(SportComponent(game.sport)) floatable.append_child(game_overview) # FIXME: get_opponents breaks the contract that the view doesnt get # access to non-property methods in model.api.Game. # Generate Opponent groups. if game.is_rivalry: floatable.append_child(OpponentsResultGroup( game.get_opponents(game.winner_ids), Copy.won)) floatable.append_child(OpponentsResultGroup( game.get_opponents(game.loser_ids), Copy.lost)) else: floatable.append_child(OpponentsResultGroup( game.get_opponents(game.camaraderie_ids), Copy.played)) self.append_child(floatable)
def set_content(self, item): """ Set content for CommentLI. """ comment = item # item must be a comment thumbnail = AppThumbnail( comment.commenter_picture_url, comment.commenter_name) self.set_column(thumbnail) div = Div() name = A({"href": "#"}, comment.commenter_name) div.append_child(name) msg = Span() msg.set_text(comment.message) div.append_child(msg) created_ts = RelativeDateComponent(comment.created_ts) div.append_child(created_ts) self.set_column(div)
def set_content(self, item): """ Set content for Rankings LI. """ # TODO make this some default scoreboard icon div = Div() # FIXME: model should send None instead of "" since "" is a valid # src, but model doesn't yet distinguish/translate empty db values. src = item.picture_url if item.picture_url else None div.append_child(AppThumbnail(src, item.name)) self.set_column(div) opponent = A({"href": "#"}, item.name) self.set_column(opponent) current_result_streak = Span() streak_text = item.current_result_streak if streak_text > 0: streak_text = "{}{}".format( Copy.win_short, streak_text) elif streak_text < 0: streak_text = "{}{}".format( Copy.loss_short, -streak_text) else: streak_text = "--" current_result_streak.set_text(streak_text) self.set_column(current_result_streak) percentage_span = Span() win_percentage = item.win_percentage win_percentage_text = " .{:.0f}".format(win_percentage * 1000) if win_percentage == 1.0: win_percentage_text = "1.000" elif win_percentage == 0.0: win_percentage_text = " .000" percentage_span.set_text(win_percentage_text) self.set_column(percentage_span) loss_count = Span() loss_count.set_text(item.loss_count) self.set_column(loss_count) win_count = Span() win_count.set_text(item.win_count) self.set_column(win_count)