summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2018-10-10 00:00:37 +0200
committeremkael <emkael@tlen.pl>2018-10-10 01:05:53 +0200
commit0ae3b4c385d293b1ac8553717c30e4f7222a743c (patch)
tree81e33efd32f5078d8bd14ff9269d777cd8ee933d
parentf235f596c5aa4525f0d64bfa1cfc96cf57a778d5 (diff)
Parameterization of team box label settings
-rw-r--r--CONFIG.md10
-rw-r--r--jfr_playoff/generator.py24
2 files changed, 21 insertions, 13 deletions
diff --git a/CONFIG.md b/CONFIG.md
index 471b190..f6d55c5 100644
--- a/CONFIG.md
+++ b/CONFIG.md
@@ -25,8 +25,14 @@ Konfiguracja składa się, po kolei, z:
+ `"refresh"` - parametr odświeżania strony drabinki: `0` = wyłączone, liczba naturalna = interwał odświeżania, w sekundach
+ `"width"` i `"height"` - wymiary (w pikselach) miejsca rezerwowanego dla każdego meczu w widoku drabinki (`"width"` bezpośrednio wpływa na rozmieszczanie kolumn, wewnątrz każdej z kolumn mecze rozmieszczane są równomiernie, w zależnie od ich liczby)
+ `"margin"` - odstęp między w/w miejscem (minimalny - jak widać, w przypadku mniejszej liczby meczów w fazie, odstępy się dopasują)
- + `"label_length_limit"` - maksymalna liczba znaków wyświetlanych jako skrócona nazwa drużyn(y) w schemacie (`0` lub brak wartości oznacza brak limitu)
- + `"predict_teams"` - flaga, jeśli włączona (`1`), w kolejnej fazie wypełniane są nazwy drużyn prowadzących/przegrywających w trwających meczach tak, jakby mecz miał się skończyć aktualnym wynikiem (etykiety takich drużyn mają nadaną osobną klasę CSS)
+ + słownik `"team_boxes"` przechowuje opcjonalne ustawienia wyświetlania nazw teamów:
+ * `"label_length_limit"` - maksymalna liczba znaków wyświetlanych jako skrócona nazwa drużyn(y) w schemacie (domyślnie `0` = brak limitu)
+ * `"predict_teams"` - flaga, jeśli włączona (`1`), w kolejnej fazie wypełniane są nazwy drużyn prowadzących/przegrywających w trwających meczach tak, jakby mecz miał się skończyć aktualnym wynikiem (etykiety takich drużyn mają nadaną osobną klasę CSS)
+ * `"label_separator"` - ciąg rozdzielający skrócone nazwy drużyn wyświetlane na schemacie (domyślnie ` / `)
+ * `"label_placeholder"` - ciąg wyświetlany w miejsce nieznanej drużyny (domyślnie `??`)
+ * `"label_ellipsis"` - ciąg wyświetlany na końcu skróconej etykiety teamów, gdy ustawienie `label_length_limit` ją skróciło (domyślnie `(...)`)
+ * `"name_separator"` - ciąg rozdzielający pełne nazwy teamów w etykiecie po najechaniu na skrócone nazwy w schemacie (domyślnie `<br />`)
+ * `"name_prefix"` - ciąg poprzedzający każdą pełną nazwę teamów w etykiecie po najechaniu (domyślnie wcięcie `&nbsp;&nbsp;`)
- sekcji `"canvas"`: ustawień rysowania linii
+ `"winner_h_offset"`, `"winner_v_offset"` - marginesy (poziomy i pionowy) rysowania linii zwycięzców (odpowiednio: pionowych i poziomych, względem środka obszaru)
+ `"loser_h_offset"`, `"loser_v_offset"` - analogiczne marginesy rysowania linii przegranych
diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py
index 2028060..48a2eac 100644
--- a/jfr_playoff/generator.py
+++ b/jfr_playoff/generator.py
@@ -12,6 +12,7 @@ class PlayoffGenerator(object):
self.page = settings.get('page')
PlayoffLogger.get('generator').info(
'page settings: %s', self.page)
+ self.team_box_settings = self.page.get('team_boxes', {})
self.canvas = {}
if settings.has_section('canvas'):
self.canvas = settings.get('canvas')
@@ -52,7 +53,7 @@ class PlayoffGenerator(object):
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):
+ if not self.team_box_settings.get('predict_teams', None):
# override template if team predictions are not enabled
template = 'MATCH_TEAM_LABEL'
return self.p_temp.get(template, team_name)
@@ -87,13 +88,14 @@ class PlayoffGenerator(object):
# the easy part: team score cell
score_html = self.p_temp.get('MATCH_SCORE', team.score)
# the hard part begins here.
- # TODO: should separators and ellipsis indicators be configurable?
team_label = [] # label is what's shown in the table cell
- label_separator = ' / '
+ label_separator = self.team_box_settings.get('label_separator', ' / ')
+ label_placeholder = self.team_box_settings.get('label_placeholder', '??')
+ label_ellipsis = self.team_box_settings.get('label_ellipsis', '(...)')
team_name = [] # name is what's shown in the tooltip
- name_separator = '<br />'
- name_prefix = '&nbsp;&nbsp;' # prefix (indent) for team names in the tooltip
- if (team.known_teams == 0) and not self.page.get('predict_teams', False):
+ name_separator = self.team_box_settings.get('name_separator', '<br />')
+ name_prefix = self.team_box_settings.get('name_prefix', '&nbsp;&nbsp;') # prefix (indent) for team names in the tooltip
+ if (team.known_teams == 0) and not self.team_box_settings.get('predict_teams', False):
# we've got no teams eligible for the match and the prediction option is disabled
team_label = ''
team_name = ''
@@ -105,12 +107,12 @@ class PlayoffGenerator(object):
predicted_labels = [self.data.get_shortname(name) if name else None for name in team.possible_name]
for l in range(0, len(labels)):
if labels[l] is None:
- if self.page.get('predict_teams', False) and (len(predicted_labels) > l):
+ if self.team_box_settings.get('predict_teams', False) and (len(predicted_labels) > l):
# fill team labels with either predictions...
labels[l] = predicted_labels[l]
else:
# ...or empty placeholders
- labels[l] = '??'
+ labels[l] = label_placeholder
# count how many teams are eligible (how many non-predicted teams are there)
known_teams = len(is_label_predicted) - sum(is_label_predicted)
# sort labels to move eligible teams in front of predicted teams
@@ -121,9 +123,9 @@ class PlayoffGenerator(object):
# we have at least one known/predicted team
for l in range(0, len(labels)):
# fill any remaining empty labels (i.e. these which had empty predictions available) with placeholders
- labels[l] = coalesce(labels[l], '??')
+ labels[l] = coalesce(labels[l], label_placeholder)
# shorten concatenated label to specified combined length
- labels = self.__shorten_labels(labels, self.page.get('label_length_limit', 0), label_separator, '(...)')
+ labels = self.__shorten_labels(labels, self.team_box_settings.get('label_length_limit', 0), label_separator, label_ellipsis)
for l in range(0, len(labels)):
# concatenate labels, assigning appropriate classes to predicted teams
team_label.append(self.__get_team_label(
@@ -134,7 +136,7 @@ class PlayoffGenerator(object):
if name:
# every non-empty name gets some indentation
team_name.append(name_prefix + name)
- if self.page.get('predict_teams', False):
+ if self.team_box_settings.get('predict_teams', False):
# remember where the list of eligible teams ends
known_teams = len(team_name)
for name in team.possible_name: