From 00bb8ac06a45fd0cb960a7161a1f9cb713429a02 Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 6 Jul 2018 01:14:41 +0200 Subject: Drawing starting position boxes --- jfr_playoff/template.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'jfr_playoff/template.py') diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 70c179b..3473530 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -51,6 +51,7 @@ class PlayoffTemplateStrings(object):
%s + %s
''' @@ -77,6 +78,19 @@ class PlayoffTemplateStrings(object): ''' + STARTING_POSITION_BOX = ''' +
+ + + + + + + +
 
%d
+
+ ''' + MATCH_BOX = '''
%s -- cgit v1.2.3 From 8a29e0818606032bdecdf794e644dbb55d5f09b5 Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 6 Jul 2018 01:15:34 +0200 Subject: Generating connector info between matches and starting positions --- jfr_playoff/generator.py | 27 +++++++++++++++++++++------ jfr_playoff/template.py | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) (limited to 'jfr_playoff/template.py') diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index a42130a..9b7f31e 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -106,16 +106,31 @@ class PlayoffGenerator(object): def get_match_box(self, match, position): if match is not None: + winner_link = [ + str(m) for m in match.winner_matches + ] if match.winner_matches is not None else [] + loser_link = [ + str(m) for m in match.loser_matches + ] if match.loser_matches is not None else [] + place_loser_link = [] + place_winner_link = [] + if 'starting_position_indicators' in self.page \ + and self.page['starting_position_indicators']: + for team in match.teams: + if len(team.place) > 0: + place_link = ['place-' + str(pl) for pl in team.place] + if len(team.place) > 1: + place_loser_link += place_link + else: + place_winner_link += place_link return self.p_temp.get( 'MATCH_BOX', position[0], position[1], match.id, - ' '.join([ - str(m) for m in match.winner_matches - ]) if match.winner_matches is not None else '', - ' '.join([ - str(m) for m in match.loser_matches - ]) if match.loser_matches is not None else '', + ' '.join(winner_link), + ' '.join(loser_link), + ' '.join(place_winner_link), + ' '.join(place_loser_link), self.get_match_table(match)) return '' diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 3473530..7b91b3b 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -92,7 +92,7 @@ class PlayoffTemplateStrings(object): ''' MATCH_BOX = ''' -
+
%s
''' -- cgit v1.2.3 From f883784164de0a72ce61e8b225435de337ead2ed Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 6 Jul 2018 03:22:38 +0200 Subject: Rendering position box independent from starting/finishing role --- jfr_playoff/generator.py | 3 ++- jfr_playoff/template.py | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'jfr_playoff/template.py') diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index 6a184fb..b72c34d 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -145,7 +145,8 @@ class PlayoffGenerator(object): 'STARTING_POSITION_BOX', 0, int(float(order) / float(len(positions)) * dimensions[1]), - place, place) + place, + self.p_temp.get('POSITION_BOX', place)) order += 1 return boxes diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 7b91b3b..881e1b5 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -80,15 +80,16 @@ class PlayoffTemplateStrings(object): STARTING_POSITION_BOX = '''
+ %s +
+ ''' + + POSITION_BOX = ''' - - -
 
%d
-
''' MATCH_BOX = ''' -- cgit v1.2.3 From 31fb6dfb977fca26cf4eeb539b9f4d83f42b6a40 Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 6 Jul 2018 03:26:26 +0200 Subject: Rendering finishing boxes with connector data --- jfr_playoff/generator.py | 38 ++++++++++++++++++++++++++++++++++---- jfr_playoff/template.py | 7 +++++++ 2 files changed, 41 insertions(+), 4 deletions(-) (limited to 'jfr_playoff/template.py') diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index b5c5e83..ef83a73 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -150,6 +150,22 @@ class PlayoffGenerator(object): order += 1 return boxes + def get_finishing_position_box(self, positions, position_info, dimensions, margin): + if 'finishing_position_indicators' not in self.page \ + or not self.page['finishing_position_indicators']: + return '' + boxes = '' + order = 0 + for place in sorted(positions): + boxes += self.p_temp.get( + 'FINISHING_POSITION_BOX', + self.page['margin'] / 2 + int(float(order) / float(len(positions)) * dimensions[1]), + place, + ' '.join([str(p) for p in position_info[place]['winner']]), + ' '.join([str(p) for p in position_info[place]['loser']]), + self.p_temp.get('POSITION_BOX', place)) + order += 1 + return boxes def get_match_grid(self, dimensions, grid, matches): canvas_size = [ @@ -170,6 +186,8 @@ class PlayoffGenerator(object): grid_boxes = '' col_no = 0 starting_positions = set() + finishing_positions = {} + finishing_places = set() for phase in grid: grid_x = col_no * self.page['width'] + (col_no + 1) * self.page['margin'] \ if self.page['starting_position_indicators'] \ @@ -190,10 +208,19 @@ class PlayoffGenerator(object): if match is not None: for team in matches[match].teams: starting_positions.update(team.place) + for place in matches[match].loser_place + matches[match].winner_place: + if place not in finishing_positions: + finishing_positions[place] = { + 'winner': [], + 'loser': [] + } + finishing_places.add(place) + for place in matches[match].winner_place: + finishing_positions[place]['winner'].append(match) + for place in matches[match].loser_place: + finishing_positions[place]['loser'].append(match) row_no += 1 col_no += 1 - starting_positions_boxes = self.get_starting_position_box( - starting_positions, canvas_size) return self.p_temp.get( 'MATCH_GRID', canvas_size[0], canvas_size[1], @@ -201,8 +228,11 @@ class PlayoffGenerator(object): ' '.join(['data-%s="%s"' % ( setting.replace('_', '-'), str(value) ) for setting, value in self.canvas.iteritems()]), - starting_positions_boxes, - grid_boxes + self.get_starting_position_box(starting_positions, canvas_size), + grid_boxes, + self.get_finishing_position_box( + finishing_places, finishing_positions, canvas_size, self.page['margin'] + ) ) def get_leaderboard_row_class(self, position): diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 881e1b5..267c5f7 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -52,6 +52,7 @@ class PlayoffTemplateStrings(object): %s %s + %s
''' @@ -84,6 +85,12 @@ class PlayoffTemplateStrings(object): ''' + FINISHING_POSITION_BOX = ''' +
+ %s +
+ ''' + POSITION_BOX = ''' -- cgit v1.2.3 From 6119175f65c6bc12771a968cd72e6c8179848f78 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 2 Oct 2018 12:43:11 +0200 Subject: Templates and strings for new team label rendering method --- jfr_playoff/generator.py | 6 ++++++ jfr_playoff/i18n.py | 4 +++- jfr_playoff/template.py | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'jfr_playoff/template.py') diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index f2a2c55..fab6d0e 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -51,6 +51,12 @@ class PlayoffGenerator(object): 'PAGE_BODY_FOOTER', datetime.now().strftime('%Y-%m-%d o %H:%M:%S')))) + def __get_team_label(self, team_name, template='MATCH_TEAM_LABEL'): + if not self.page.get('predict_teams', None): + # override template if team predictions are not enabled + template = 'MATCH_TEAM_LABEL' + return self.p_temp.get(template, team_name) + def get_match_table(self, match): rows = '' for team in match.teams: diff --git a/jfr_playoff/i18n.py b/jfr_playoff/i18n.py index c4134a9..63576db 100644 --- a/jfr_playoff/i18n.py +++ b/jfr_playoff/i18n.py @@ -11,7 +11,9 @@ PLAYOFF_I18N_DEFAULTS = { 'STANDINGS_TEAM': 'drużyna', 'STANDINGS_CAPTIONS': 'legenda', 'FOOTER_GENERATED': 'strona wygenerowana', - 'SWISS_DEFAULT_LABEL': 'Turniej o %d. miejsce' + 'SWISS_DEFAULT_LABEL': 'Turniej o %d. miejsce', + 'DETERMINED_TEAMS': 'Drużyny z pewnym miejscem w tej fazie:', + 'POSSIBLE_TEAMS': 'Drużyny z trwających meczów poprzedniej fazy:' } class PlayoffI18N(object): diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 70c179b..5845498 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -24,6 +24,14 @@ class PlayoffTemplateStrings(object):  %.1f  ''' + MATCH_TEAM_LABEL = '%s' + + MATCH_PREDICTED_TEAM_LABEL = '%s' + + MATCH_TEAM_LIST_HEADER = '{{DETERMINED_TEAMS}}' + + MATCH_POSSIBLE_TEAM_LIST_HEADER = '{{POSSIBLE_TEAMS}}' + MATCH_TEAM_LINK = ''' %s ''' -- cgit v1.2.3