diff --git a/services/api-server/src/api_server/html5.py b/services/api-server/src/api_server/html5.py index d157155..b8f37c2 100644 --- a/services/api-server/src/api_server/html5.py +++ b/services/api-server/src/api_server/html5.py @@ -1,75 +1,9 @@ from __future__ import annotations from html import escape -from typing import Iterable from urllib.parse import quote -def render_html5_index(projects: Iterable[object]) -> str: - project_list = list(projects) - return _page( - "SFERA HTML5", - f""" -
-
-
-

SFERA HTML5

-

Server-first рабочее место 1С

-

Основной HTML собирает API-сервер. Браузер получает готовую страницу без React/Next runtime.

-
-
- {len(project_list)} - проектов -
-
-
-
-

Проекты

- -
- {render_html5_project_create_form()} -
- - - - - {render_html5_project_rows(project_list)} -
ПроектСтатусSnapshot
-
-
-
- """, - ) - - -def render_html5_project_create_form() -> str: - return """ -
- - - -
- """ - - -def render_html5_project_rows(projects: Iterable[object]) -> str: - project_rows = "\n".join(_project_row(project) for project in projects) - if not project_rows: - return 'Проекты пока не настроены' - return project_rows - - def _page(title: str, body: str) -> str: return f""" @@ -85,34 +19,6 @@ def _page(title: str, body: str) -> str: """ -def _project_row(project: object) -> str: - project_id = str(getattr(project, "project_id", "")) - name = str(getattr(project, "name", project_id)) - status = str(getattr(project, "status", "unknown")) - has_snapshot = bool(getattr(project, "has_snapshot", False)) - return f""" - - {escape(name)}{escape(project_id)} - {escape(status)} - {'yes' if has_snapshot else 'no'} - - IDE - Setup -
- - -
- - """ - - def _project_link(project: object, active_project_id: str) -> str: project_id = str(getattr(project, "project_id", "")) name = str(getattr(project, "name", project_id)) diff --git a/services/api-server/src/api_server/html5_projects.py b/services/api-server/src/api_server/html5_projects.py new file mode 100644 index 0000000..1648e89 --- /dev/null +++ b/services/api-server/src/api_server/html5_projects.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +from html import escape +from typing import Iterable +from urllib.parse import quote + +from api_server.html5 import _page + + +def render_html5_index(projects: Iterable[object]) -> str: + project_list = list(projects) + return _page( + "SFERA HTML5", + f""" +
+
+
+

SFERA HTML5

+

Server-first рабочее место 1С

+

Основной HTML собирает API-сервер. Браузер получает готовую страницу без React/Next runtime.

+
+
+ {len(project_list)} + проектов +
+
+
+
+

Проекты

+ +
+ {render_html5_project_create_form()} +
+ + + + + {render_html5_project_rows(project_list)} +
ПроектСтатусSnapshot
+
+
+
+ """, + ) + + +def render_html5_project_create_form() -> str: + return """ +
+ + + +
+ """ + + +def render_html5_project_rows(projects: Iterable[object]) -> str: + project_rows = "\n".join(_project_row(project) for project in projects) + if not project_rows: + return 'Проекты пока не настроены' + return project_rows + + +def _project_row(project: object) -> str: + project_id = str(getattr(project, "project_id", "")) + name = str(getattr(project, "name", project_id)) + status = str(getattr(project, "status", "unknown")) + has_snapshot = bool(getattr(project, "has_snapshot", False)) + return f""" + + {escape(name)}{escape(project_id)} + {escape(status)} + {'yes' if has_snapshot else 'no'} + + IDE + Setup +
+ + +
+ + """ diff --git a/services/api-server/src/api_server/main.py b/services/api-server/src/api_server/main.py index 0bd6284..81f1234 100644 --- a/services/api-server/src/api_server/main.py +++ b/services/api-server/src/api_server/main.py @@ -37,10 +37,7 @@ from fastapi.staticfiles import StaticFiles from neo4j import AsyncGraphDatabase from pydantic import BaseModel, Field -from api_server.html5 import ( - render_html5_index, - render_html5_project_rows, -) +from api_server.html5_projects import render_html5_index, render_html5_project_rows from api_server.html5_inspector import ( render_html5_flowchart, render_html5_object_context,