feat(web): React-фронтенд вместо Flet + fix restore rmtree на bind-mount
web-react/: SPA Vite+React+TS, nginx раздаёт статику и проксирует /api на api:8000 по локалке. docker-compose: web(Flet)->web-react на :80. transfer_crud.backup_restore: чистим содержимое data/radar вместо rmtree точки монтирования (EBUSY).
This commit is contained in:
19
web-react/src/components/RadarBlock.tsx
Normal file
19
web-react/src/components/RadarBlock.tsx
Normal file
@@ -0,0 +1,19 @@
|
||||
import { radarImageUrl } from "../api/client";
|
||||
import { Button } from "./ui";
|
||||
import { IconDownload } from "./icons";
|
||||
|
||||
// Блок с паутинной диаграммой: картинка + кнопка скачивания.
|
||||
// SVG тянется напрямую с того же origin через nginx-прокси (/api/.../radar/image).
|
||||
export function RadarBlock({ responseId }: { responseId: string }) {
|
||||
const url = radarImageUrl(responseId);
|
||||
return (
|
||||
<div className="center-col" style={{ width: "100%" }}>
|
||||
<img className="radar-img" src={url} alt="Паутинная диаграмма результата" />
|
||||
<a href={url} download="diagram.svg">
|
||||
<Button variant="info" icon={<IconDownload />}>
|
||||
Сохранить диаграмму
|
||||
</Button>
|
||||
</a>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user