Add server-rendered 1C form editor
This commit is contained in:
@@ -42,6 +42,10 @@ from api_server.html5_forms import (
|
||||
html5_metadata_payload as _html5_metadata_payload,
|
||||
html5_metadata_request_payload as _html5_metadata_request_payload,
|
||||
)
|
||||
from api_server.form_editor_service import (
|
||||
form_module_for_form as _form_module_for_form,
|
||||
select_form_semantics as _select_form_semantics,
|
||||
)
|
||||
from api_server.html5_projects import render_html5_index, render_html5_project_rows
|
||||
from api_server.html5_responses import (
|
||||
Html5StaticFiles,
|
||||
@@ -76,6 +80,7 @@ from api_server.html5_editor import (
|
||||
render_html5_symbol_detail,
|
||||
render_html5_symbols,
|
||||
)
|
||||
from api_server.html5_form_editor import render_html5_form_editor
|
||||
from api_server.html5_operations import (
|
||||
filter_html5_operation_jobs,
|
||||
latest_html5_import_job,
|
||||
@@ -1730,6 +1735,32 @@ async def html5_project_editor(project_id: str, q: str = "") -> Response:
|
||||
return _html5_response(html)
|
||||
|
||||
|
||||
@app.get("/html5/projects/{project_id}/forms/editor")
|
||||
async def html5_project_form_editor(project_id: str, form: str | None = None) -> Response:
|
||||
try:
|
||||
snapshot = _project_snapshot_or_404(project_id)
|
||||
forms = [_form_semantics_response(item) for item in form_semantics(snapshot)]
|
||||
selected = _select_form_semantics(forms, form)
|
||||
form_module = _form_module_for_form(snapshot, selected.form if selected is not None else None)
|
||||
html = render_html5_form_editor(
|
||||
project_id=project_id,
|
||||
projects=_project_summaries(),
|
||||
snapshot=snapshot,
|
||||
forms=forms,
|
||||
selected_form_id=form,
|
||||
form_module=form_module,
|
||||
)
|
||||
except HTTPException as error:
|
||||
html = render_html5_form_editor(
|
||||
project_id=project_id,
|
||||
projects=_project_summaries(),
|
||||
snapshot=None,
|
||||
forms=[],
|
||||
error=str(error.detail),
|
||||
)
|
||||
return _html5_response(html)
|
||||
|
||||
|
||||
@app.get("/html5/projects/{project_id}/events")
|
||||
async def html5_project_events(project_id: str, once: bool = False) -> StreamingResponse:
|
||||
async def stream_status():
|
||||
|
||||
Reference in New Issue
Block a user