Add Dispatch_V0.1.1

This commit is contained in:
2026-04-29 08:18:54 +04:00
commit a7ede6ded4
404 changed files with 39167 additions and 0 deletions

View 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)