Add Dispatch_V0.1.1
This commit is contained in:
69
Dispatch_V0.1.1/ui/pages/report_viewer.py
Normal file
69
Dispatch_V0.1.1/ui/pages/report_viewer.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# hub/ticket/ui/pages/report_viewer.py
|
||||
|
||||
"""Просмотрщик документа Ticket."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from gui.components import Button, Dialog, Label, TextInput
|
||||
from gui.containers import VContainer
|
||||
|
||||
from domain import TicketDocumentSnapshot
|
||||
|
||||
|
||||
class ReportViewer(Dialog):
|
||||
"""Простой viewer сохранённого документа Ticket."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
document: TicketDocumentSnapshot,
|
||||
parent=None,
|
||||
):
|
||||
self._document = document
|
||||
self._close_button: Button | None = None
|
||||
super().__init__(
|
||||
title=document.title,
|
||||
width=720,
|
||||
height=760,
|
||||
modal=True,
|
||||
parent=parent,
|
||||
)
|
||||
self._setup_ui()
|
||||
self._connect_signals()
|
||||
|
||||
def _setup_ui(self) -> None:
|
||||
# Root-контейнер viewer-окна: заголовок, метаданные, текст документа и кнопка закрытия.
|
||||
main_container = VContainer(margin=20,
|
||||
spacing=12)
|
||||
self.add_widget(main_container)
|
||||
|
||||
title_label = Label(
|
||||
self._document.title,
|
||||
alignment="left",
|
||||
style="TICKET_LIST_HEADER",
|
||||
)
|
||||
metadata_label = Label(
|
||||
(
|
||||
f"Задача #{self._document.payload.get('task_id', self._document.task_id)}\n"
|
||||
f"{self._document.created_at.strftime('%d.%m.%Y %H:%M')}\n"
|
||||
f"{self._document.location or 'Локация не указана'}"
|
||||
),
|
||||
alignment="left",
|
||||
style="TICKET_LIST_SUBTITLE",
|
||||
)
|
||||
viewer = TextInput(
|
||||
text=self._document.content or self._document.summary,
|
||||
style="TICKET_PREVIEW_AREA",
|
||||
multiline=True,
|
||||
)
|
||||
viewer.set_read_only(True)
|
||||
self._close_button = Button("Закрыть", style="FILTER_BUTTON", content_fit=True)
|
||||
|
||||
main_container.add_widget(title_label)
|
||||
main_container.add_widget(metadata_label)
|
||||
main_container.add_widget(viewer)
|
||||
main_container.add_widget(self._close_button)
|
||||
|
||||
def _connect_signals(self) -> None:
|
||||
if self._close_button is not None:
|
||||
self._close_button.clicked.connect(self.accept)
|
||||
Reference in New Issue
Block a user