Skip to content

Commit a9965b5

Browse files
committed
views: Add PollResultsView class.
Takes poll_question and options as an input and displays voters for each option.
1 parent cb40a6a commit a9965b5

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

zulipterminal/ui_tools/views.py

+32
Original file line numberDiff line numberDiff line change
@@ -2172,3 +2172,35 @@ def keypress(self, size: urwid_Size, key: str) -> str:
21722172
self.controller.exit_popup()
21732173
return key
21742174
return super().keypress(size, key)
2175+
2176+
2177+
class PollResultsView(PopUpView):
2178+
def __init__(
2179+
self,
2180+
controller: Any,
2181+
poll_question: str,
2182+
poll_options: Dict[str, Dict[str, Any]],
2183+
) -> None:
2184+
poll_results_content: List[Tuple[str, List[Tuple[str, str]]]] = [("", [])]
2185+
2186+
for option_key, option_data in poll_options.items():
2187+
option_text = option_data["option"]
2188+
if len(option_text) >= 13:
2189+
option_text = option_text[:10] + "…"
2190+
voter_names = option_data["votes"]
2191+
2192+
voters_display = (
2193+
"\n".join(map(str, voter_names)) if voter_names else "No votes yet"
2194+
)
2195+
2196+
poll_results_content[0][1].append((option_text, voters_display))
2197+
2198+
popup_width, column_widths = self.calculate_table_widths(
2199+
poll_results_content, len(poll_question)
2200+
)
2201+
2202+
widgets = self.make_table_with_categories(poll_results_content, column_widths)
2203+
2204+
super().__init__(
2205+
controller, widgets, "SHOW_POLL_VOTES", popup_width, poll_question
2206+
)

0 commit comments

Comments
 (0)