summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONFIG.md11
-rw-r--r--jfr_playoff/generator.py34
-rw-r--r--jfr_playoff/template.py19
3 files changed, 58 insertions, 6 deletions
diff --git a/CONFIG.md b/CONFIG.md
index 4595ace..d4fa87f 100644
--- a/CONFIG.md
+++ b/CONFIG.md
@@ -72,6 +72,17 @@ Miejsca w tabeli końcowej dla drużyn zdefiniowanych jako kończące rozgrywki
Program nie potrafi ich rozstrzygać samodzielnie remisów podczas pobierania wyników z bazy danych. Dla listy teamów pobranej ze strony wyników, zachowana jest kolejność na stronie (więc remisy rozstrzygnięte przez Teamy przed wygenerowaniem wyników).
+Ustawienia stylów klasyfikacji końcowej
+---------------------------------------
+
+Sekcja `"position_styles"` pozwala wyróżnić określone pozycje tabeli klasyfikacji końcowej, nadając im dowolnie zdefiniowaną klasę CSS.
+
+Jest to tablica obiektów o następujących składowych:
+ - `"class"` - nazwa klasy CSS ustawianej na odpowiednich elementach `<tr>` tabeli klasyfikacji
+ - `"positions"` - tablica liczb naturalnych określających pozycje tabeli, do których klasa CSS jest dodawana
+ - `"caption"` - opcjonalny opis wyświetlany w legendzie pod klasyfikacją końcową
+
+
Ustawienia drabinki
-------------------
diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py
index 97624a2..ee1a496 100644
--- a/jfr_playoff/generator.py
+++ b/jfr_playoff/generator.py
@@ -16,8 +16,18 @@ class PlayoffGenerator(object):
self.canvas = settings.get('canvas')
PlayoffLogger.get('generator').info(
'canvas settings: %s', self.canvas)
+ self.leaderboard_classes = {}
+ if settings.has_section('position_styles'):
+ self.leaderboard_classes = settings.get('position_styles')
+ PlayoffLogger.get('generator').info(
+ 'leaderboard classes settings: %s', self.leaderboard_classes)
def generate_content(self):
+ match_grid = self.get_match_grid(
+ self.data.get_dimensions(),
+ self.data.generate_phases(),
+ self.data.fill_match_info())
+ leaderboard_table = self.get_leaderboard_table()
return p_temp.PAGE % (
p_temp.PAGE_HEAD % (
p_temp.PAGE_HEAD_REFRESH % (
@@ -26,12 +36,10 @@ class PlayoffGenerator(object):
self.page['title']),
p_temp.PAGE_BODY % (
self.page['logoh'],
- self.get_match_grid(
- self.data.get_dimensions(),
- self.data.generate_phases(),
- self.data.fill_match_info()),
+ match_grid,
self.get_swiss_links(),
- self.get_leaderboard_table(),
+ leaderboard_table,
+ self.get_leaderboard_caption_table() if leaderboard_table else '',
p_temp.PAGE_BODY_FOOTER.decode('utf8') % (
datetime.now().strftime('%Y-%m-%d o %H:%M:%S'))))
@@ -131,6 +139,21 @@ class PlayoffGenerator(object):
grid_boxes
)
+ def get_leaderboard_row_class(self, position):
+ classes = []
+ for style in self.leaderboard_classes:
+ if position in style['positions']:
+ classes.append(style['class'])
+ return ' '.join(classes)
+
+ def get_leaderboard_caption_table(self):
+ rows = ''
+ for style in self.leaderboard_classes:
+ if 'caption' in style:
+ rows += p_temp.LEADERBOARD_CAPTION_TABLE_ROW % (
+ style['class'], style['caption'])
+ return p_temp.LEADERBOARD_CAPTION_TABLE % (rows) if rows else ''
+
def get_leaderboard_table(self):
leaderboard = self.data.fill_leaderboard()
if len([t for t in leaderboard if t is not None]) == 0:
@@ -139,6 +162,7 @@ class PlayoffGenerator(object):
rows = ''
for team in leaderboard:
rows += p_temp.LEADERBOARD_ROW % (
+ self.get_leaderboard_row_class(position),
position, self.get_flag(team), team or '')
position += 1
html = p_temp.LEADERBOARD.decode('utf8') % (rows)
diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py
index e9ba977..b99c7c7 100644
--- a/jfr_playoff/template.py
+++ b/jfr_playoff/template.py
@@ -96,7 +96,7 @@ LEADERBOARD = '''
'''
LEADERBOARD_ROW = '''
-<tr>
+<tr class="%s">
<td class="bdc1">%d</td>
<td class="bd">
&nbsp;%s&nbsp;&nbsp;%s&nbsp;
@@ -108,6 +108,22 @@ LEADERBOARD_ROW_FLAG = '''
<img class="fl" src="images/%s" />
'''
+LEADERBOARD_CAPTION_TABLE = '''
+<table class="caption_table" border="0" cellspacing="0">
+<tr><td class="e">&nbsp;</td></tr>
+<tr><td class="bdnl12" align="center"><b>&nbsp;LEGENDA&nbsp;</b></td></tr>
+%s
+</table>
+'''
+
+LEADERBOARD_CAPTION_TABLE_ROW = '''
+<tr class="%s">
+<td class="bd1">
+&nbsp;%s&nbsp;
+</td>
+</tr>
+'''
+
PAGE_HEAD = '''
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
@@ -134,6 +150,7 @@ PAGE_BODY = '''
</p>
%s
%s
+%s
'''
PAGE_BODY_FOOTER = '''