@specverse/runtime 4.1.0 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +356 -0
- package/dist/runtime/views/core/atomic-components-registry.d.ts +63 -0
- package/dist/runtime/views/core/atomic-components-registry.d.ts.map +1 -0
- package/dist/runtime/views/core/atomic-components-registry.js +822 -0
- package/dist/runtime/views/core/atomic-components-registry.js.map +1 -0
- package/dist/runtime/views/core/composite-pattern-types.d.ts +171 -0
- package/dist/runtime/views/core/composite-pattern-types.d.ts.map +1 -0
- package/dist/runtime/views/core/composite-pattern-types.js +11 -0
- package/dist/runtime/views/core/composite-pattern-types.js.map +1 -0
- package/dist/runtime/views/core/composite-patterns.d.ts +67 -0
- package/dist/runtime/views/core/composite-patterns.d.ts.map +1 -0
- package/dist/runtime/views/core/composite-patterns.js +485 -0
- package/dist/runtime/views/core/composite-patterns.js.map +1 -0
- package/dist/runtime/views/core/entity-display.d.ts +28 -0
- package/dist/runtime/views/core/entity-display.d.ts.map +1 -1
- package/dist/runtime/views/core/entity-display.js +75 -0
- package/dist/runtime/views/core/entity-display.js.map +1 -1
- package/dist/runtime/views/core/index.d.ts +4 -1
- package/dist/runtime/views/core/index.d.ts.map +1 -1
- package/dist/runtime/views/core/index.js +5 -1
- package/dist/runtime/views/core/index.js.map +1 -1
- package/dist/runtime/views/core/pattern-engine.d.ts +2 -2
- package/dist/runtime/views/core/pattern-engine.d.ts.map +1 -1
- package/dist/runtime/views/core/pattern-engine.js.map +1 -1
- package/dist/runtime/views/core/types.d.ts +2 -0
- package/dist/runtime/views/core/types.d.ts.map +1 -1
- package/dist/runtime/views/index.d.ts +5 -2
- package/dist/runtime/views/index.d.ts.map +1 -1
- package/dist/runtime/views/index.js +5 -2
- package/dist/runtime/views/index.js.map +1 -1
- package/dist/runtime/views/react/components/DevShell.d.ts.map +1 -1
- package/dist/runtime/views/react/components/DevShell.js +6 -2
- package/dist/runtime/views/react/components/DevShell.js.map +1 -1
- package/dist/runtime/views/react/components/EntitySelect.d.ts +14 -0
- package/dist/runtime/views/react/components/EntitySelect.d.ts.map +1 -0
- package/dist/runtime/views/react/components/EntitySelect.js +29 -0
- package/dist/runtime/views/react/components/EntitySelect.js.map +1 -0
- package/dist/runtime/views/react/components/EventStream.d.ts +11 -0
- package/dist/runtime/views/react/components/EventStream.d.ts.map +1 -0
- package/dist/runtime/views/react/components/EventStream.js +49 -0
- package/dist/runtime/views/react/components/EventStream.js.map +1 -0
- package/dist/runtime/views/react/components/FieldInput.d.ts +23 -0
- package/dist/runtime/views/react/components/FieldInput.d.ts.map +1 -0
- package/dist/runtime/views/react/components/FieldInput.js +28 -0
- package/dist/runtime/views/react/components/FieldInput.js.map +1 -0
- package/dist/runtime/views/react/components/FormView.d.ts +21 -0
- package/dist/runtime/views/react/components/FormView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/FormView.js +13 -0
- package/dist/runtime/views/react/components/FormView.js.map +1 -0
- package/dist/runtime/views/react/components/ModelManager.d.ts +6 -2
- package/dist/runtime/views/react/components/ModelManager.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ModelManager.js +166 -61
- package/dist/runtime/views/react/components/ModelManager.js.map +1 -1
- package/dist/runtime/views/react/components/ModelSelector.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ModelSelector.js +4 -1
- package/dist/runtime/views/react/components/ModelSelector.js.map +1 -1
- package/dist/runtime/views/react/components/OperationExecutor.d.ts +15 -0
- package/dist/runtime/views/react/components/OperationExecutor.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationExecutor.js +86 -0
- package/dist/runtime/views/react/components/OperationExecutor.js.map +1 -0
- package/dist/runtime/views/react/components/OperationResultView.d.ts +10 -0
- package/dist/runtime/views/react/components/OperationResultView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationResultView.js +92 -0
- package/dist/runtime/views/react/components/OperationResultView.js.map +1 -0
- package/dist/runtime/views/react/components/OperationView.d.ts +21 -0
- package/dist/runtime/views/react/components/OperationView.d.ts.map +1 -0
- package/dist/runtime/views/react/components/OperationView.js +7 -0
- package/dist/runtime/views/react/components/OperationView.js.map +1 -0
- package/dist/runtime/views/react/components/RelationshipField.js +4 -4
- package/dist/runtime/views/react/components/RelationshipField.js.map +1 -1
- package/dist/runtime/views/react/components/RuntimeView.d.ts.map +1 -1
- package/dist/runtime/views/react/components/RuntimeView.js +93 -33
- package/dist/runtime/views/react/components/RuntimeView.js.map +1 -1
- package/dist/runtime/views/react/components/ViewRouter.d.ts +7 -1
- package/dist/runtime/views/react/components/ViewRouter.d.ts.map +1 -1
- package/dist/runtime/views/react/components/ViewRouter.js +57 -18
- package/dist/runtime/views/react/components/ViewRouter.js.map +1 -1
- package/dist/runtime/views/react/hooks/useEventStream.d.ts +29 -0
- package/dist/runtime/views/react/hooks/useEventStream.d.ts.map +1 -0
- package/dist/runtime/views/react/hooks/useEventStream.js +114 -0
- package/dist/runtime/views/react/hooks/useEventStream.js.map +1 -0
- package/dist/runtime/views/react/hooks/useResizableSidebar.d.ts.map +1 -1
- package/dist/runtime/views/react/hooks/useResizableSidebar.js +2 -0
- package/dist/runtime/views/react/hooks/useResizableSidebar.js.map +1 -1
- package/dist/runtime/views/react/index.d.ts +10 -1
- package/dist/runtime/views/react/index.d.ts.map +1 -1
- package/dist/runtime/views/react/index.js +11 -1
- package/dist/runtime/views/react/index.js.map +1 -1
- package/dist/runtime/views/react/react-pattern-adapter.d.ts +235 -0
- package/dist/runtime/views/react/react-pattern-adapter.d.ts.map +1 -0
- package/dist/runtime/views/react/react-pattern-adapter.js +1450 -0
- package/dist/runtime/views/react/react-pattern-adapter.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* OperationResultView — Formatted display of operation execution results.
|
|
4
|
+
*
|
|
5
|
+
* Renders success/failure status, preconditions, steps, events, and return values.
|
|
6
|
+
*/
|
|
7
|
+
import { useState, useEffect } from 'react';
|
|
8
|
+
import { useRuntimeContext } from '../context.js';
|
|
9
|
+
import { getEntityDisplayName } from '../../core/entity-display.js';
|
|
10
|
+
export function OperationResultView({ result }) {
|
|
11
|
+
const ctx = useRuntimeContext();
|
|
12
|
+
const apiBase = ctx.apiBaseUrl || '/api';
|
|
13
|
+
const [entityNames, setEntityNames] = useState({});
|
|
14
|
+
// Resolve entity IDs in the return value to display names
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!result?.returnValue || typeof result.returnValue !== 'object')
|
|
17
|
+
return;
|
|
18
|
+
const idsToResolve = Object.keys(result.returnValue).filter(k => /^\d+-\d+$/.test(k) || /^[0-9a-f]{8}-/.test(k));
|
|
19
|
+
if (idsToResolve.length === 0)
|
|
20
|
+
return;
|
|
21
|
+
// First try context entities (already loaded)
|
|
22
|
+
const names = {};
|
|
23
|
+
for (const [_model, modelEntities] of Object.entries(ctx.entities)) {
|
|
24
|
+
for (const entity of modelEntities) {
|
|
25
|
+
const internalId = entity.id;
|
|
26
|
+
const dataId = entity.data?.id;
|
|
27
|
+
const displayName = getEntityDisplayName(entity, ctx.entities);
|
|
28
|
+
if (idsToResolve.includes(internalId))
|
|
29
|
+
names[internalId] = displayName;
|
|
30
|
+
if (dataId && idsToResolve.includes(dataId))
|
|
31
|
+
names[dataId] = displayName;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// If unresolved IDs remain, fetch from API
|
|
35
|
+
const unresolved = idsToResolve.filter(id => !names[id]);
|
|
36
|
+
if (unresolved.length > 0 && apiBase) {
|
|
37
|
+
fetch(`${apiBase}/runtime/info`)
|
|
38
|
+
.then(r => r.json())
|
|
39
|
+
.then(async (info) => {
|
|
40
|
+
for (const model of (info.models || [])) {
|
|
41
|
+
try {
|
|
42
|
+
const res = await fetch(`${apiBase}/controllers/${model}Controller/list`, {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
headers: { 'Content-Type': 'application/json' },
|
|
45
|
+
body: JSON.stringify({}),
|
|
46
|
+
});
|
|
47
|
+
const data = await res.json();
|
|
48
|
+
const entities = data.data?.entities || data.entities || [];
|
|
49
|
+
for (const entity of entities) {
|
|
50
|
+
const displayName = getEntityDisplayName(entity, {});
|
|
51
|
+
if (unresolved.includes(entity.id))
|
|
52
|
+
names[entity.id] = displayName;
|
|
53
|
+
if (entity.data?.id && unresolved.includes(entity.data.id))
|
|
54
|
+
names[entity.data.id] = displayName;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch { /* skip */ }
|
|
58
|
+
}
|
|
59
|
+
setEntityNames({ ...names });
|
|
60
|
+
})
|
|
61
|
+
.catch(() => setEntityNames(names));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
setEntityNames(names);
|
|
65
|
+
}
|
|
66
|
+
}, [result, ctx.entities, apiBase]);
|
|
67
|
+
if (!result)
|
|
68
|
+
return null;
|
|
69
|
+
return (_jsxs("div", { className: "mt-3 space-y-3", children: [_jsxs("div", { className: `flex items-center gap-2 px-3 py-2 rounded text-sm ${result.success
|
|
70
|
+
? 'bg-green-50 dark:bg-green-900/20 text-green-700 dark:text-green-300'
|
|
71
|
+
: 'bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-300'}`, children: [_jsx("span", { children: result.success ? '\u2705' : '\u274C' }), _jsx("span", { className: "font-medium", children: result.success ? 'Success' : 'Failed' }), result.error && _jsxs("span", { className: "text-xs ml-2", children: ["\u2014 ", result.error] })] }), result.preconditions && result.preconditions.length > 0 && (_jsxs("div", { className: "text-xs space-y-1", children: [_jsx("div", { className: "font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide", children: "Preconditions" }), result.preconditions.map((p, i) => (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { children: p.passed ? '\u2705' : '\u274C' }), _jsx("span", { className: p.passed ? 'text-gray-600 dark:text-gray-300' : 'text-red-600 dark:text-red-400', children: p.precondition }), p.reason && _jsxs("span", { className: "text-gray-400 ml-1", children: ["(", p.reason, ")"] })] }, i)))] })), result.steps && result.steps.length > 0 && (_jsxs("div", { className: "text-xs space-y-1", children: [_jsxs("div", { className: "font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide", children: ["Steps (", result.stepsExecuted, " executed", result.stepsSkipped > 0 ? `, ${result.stepsSkipped} skipped` : '', ")"] }), result.steps.map((s, i) => (_jsxs("div", { className: `flex items-start gap-1.5 ${s.skipped ? 'opacity-50' : ''}`, children: [_jsx("span", { className: "mt-0.5", children: s.skipped ? '\u25CB' : '\u2705' }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("span", { className: "text-gray-600 dark:text-gray-300", children: s.step }), s.convention && _jsxs("span", { className: "ml-1 text-gray-400", children: ["(", s.convention, ")"] }), s.code && (_jsx("pre", { className: "mt-0.5 px-2 py-1 bg-gray-900 text-green-400 rounded text-xs overflow-x-auto", children: s.code }))] })] }, i)))] })), result.eventsPublished && result.eventsPublished.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1", children: result.eventsPublished.map((event, i) => (_jsx("span", { className: "text-xs px-2 py-0.5 bg-orange-50 dark:bg-orange-900/20 text-orange-700 dark:text-orange-300 rounded", children: event }, i))) })), result.returnValue != null && (_jsxs("div", { children: [_jsx("div", { className: "text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide mb-1", children: "Result" }), renderReturnValue(result.returnValue, entityNames)] }))] }));
|
|
72
|
+
}
|
|
73
|
+
function renderReturnValue(value, entityNames) {
|
|
74
|
+
if (value == null)
|
|
75
|
+
return _jsx("span", { className: "text-xs text-gray-400 italic", children: "null" });
|
|
76
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
77
|
+
return _jsx("span", { className: "text-sm text-gray-800 dark:text-gray-200", children: String(value) });
|
|
78
|
+
}
|
|
79
|
+
if (Array.isArray(value)) {
|
|
80
|
+
return value.length === 0
|
|
81
|
+
? _jsx("span", { className: "text-xs text-gray-400 italic", children: "Empty list" })
|
|
82
|
+
: _jsxs("div", { className: "text-xs text-gray-600 dark:text-gray-300", children: [value.length, " items"] });
|
|
83
|
+
}
|
|
84
|
+
if (typeof value === 'object') {
|
|
85
|
+
const entries = Object.entries(value);
|
|
86
|
+
if (entries.length === 0)
|
|
87
|
+
return _jsx("span", { className: "text-xs text-gray-400 italic", children: "Empty" });
|
|
88
|
+
return (_jsx("div", { className: "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden", children: _jsxs("table", { className: "min-w-full divide-y divide-gray-200 dark:divide-gray-700", children: [_jsx("thead", { className: "bg-gray-50 dark:bg-gray-700", children: _jsxs("tr", { children: [_jsx("th", { className: "px-4 py-2 text-left text-xs font-semibold text-gray-700 dark:text-gray-200 uppercase", children: "Item" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-semibold text-gray-700 dark:text-gray-200 uppercase", children: "Value" })] }) }), _jsx("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-700", children: entries.map(([key, val]) => (_jsxs("tr", { className: "hover:bg-gray-50 dark:hover:bg-gray-700", children: [_jsx("td", { className: "px-4 py-2 text-sm text-gray-800 dark:text-gray-200", children: entityNames[key] || key }), _jsx("td", { className: "px-4 py-2 text-sm font-medium text-gray-900 dark:text-gray-100", children: typeof val === 'object' ? JSON.stringify(val) : String(val) })] }, key))) })] }) }));
|
|
89
|
+
}
|
|
90
|
+
return _jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-300", children: JSON.stringify(value, null, 2) });
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=OperationResultView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationResultView.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationResultView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OperationView — View for executing service operations.
|
|
3
|
+
*
|
|
4
|
+
* Shows parameter selectors, execute button, and result display.
|
|
5
|
+
* Used as a pluggable slot in ViewRouter for operation-type views.
|
|
6
|
+
*/
|
|
7
|
+
export interface OperationViewProps {
|
|
8
|
+
view: {
|
|
9
|
+
name: string;
|
|
10
|
+
type: 'operation';
|
|
11
|
+
description?: string;
|
|
12
|
+
service: string;
|
|
13
|
+
operation: string;
|
|
14
|
+
parameters?: Record<string, any>;
|
|
15
|
+
requires?: string[];
|
|
16
|
+
returns?: string;
|
|
17
|
+
source?: 'service' | 'controller';
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function OperationView({ view }: OperationViewProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=OperationView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationView.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,WAAW,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;KACnC,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CAgCzD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { OperationExecutor } from './OperationExecutor.js';
|
|
3
|
+
import { humanizeFieldName } from '../../core/entity-display.js';
|
|
4
|
+
export function OperationView({ view }) {
|
|
5
|
+
return (_jsxs("div", { className: "flex flex-col h-full", children: [_jsx("div", { className: "px-6 py-4 bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-blue-500", children: "\\u26A1" }), _jsx("h2", { className: "text-lg font-semibold text-gray-800 dark:text-gray-100", children: humanizeFieldName(view.operation) }), view.returns && (_jsxs("span", { className: "text-xs px-2 py-0.5 bg-gray-200 dark:bg-gray-600 text-gray-600 dark:text-gray-300 rounded font-mono", children: ["\u2192 ", view.returns] }))] }) }), _jsx("div", { className: "flex-1 overflow-auto p-6", children: _jsx("div", { className: "max-w-lg", children: _jsx(OperationExecutor, { serviceName: view.service, operationName: view.operation, parameters: view.parameters, requires: view.requires, source: view.source || 'service' }) }) })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=OperationView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationView.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationView.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAgBjE,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IACxD,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,aAEnC,cAAK,SAAS,EAAC,qFAAqF,YAClG,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,eAAe,wBAAc,EAC7C,aAAI,SAAS,EAAC,wDAAwD,YACnE,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAC/B,EACJ,IAAI,CAAC,OAAO,IAAI,CACf,gBAAM,SAAS,EAAC,qGAAqG,wBAC3G,IAAI,CAAC,OAAO,IACf,CACR,IACG,GACF,EAGN,cAAK,SAAS,EAAC,0BAA0B,YACvC,cAAK,SAAS,EAAC,UAAU,YACvB,KAAC,iBAAiB,IAChB,WAAW,EAAE,IAAI,CAAC,OAAO,EACzB,aAAa,EAAE,IAAI,CAAC,SAAS,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,GAChC,GACE,GACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useRuntimeContext } from '../context.js';
|
|
3
|
-
import { getEntityDisplayName } from '../../core/entity-display.js';
|
|
3
|
+
import { getEntityDisplayName, getEntityId, findEntityById } from '../../core/entity-display.js';
|
|
4
4
|
export function RelationshipField({ name, relationship, value, onChange, required, readOnly }) {
|
|
5
5
|
const ctx = useRuntimeContext();
|
|
6
6
|
const rel = relationship;
|
|
@@ -15,17 +15,17 @@ export function RelationshipField({ name, relationship, value, onChange, require
|
|
|
15
15
|
}
|
|
16
16
|
if (relType === 'hasOne') {
|
|
17
17
|
const display = value
|
|
18
|
-
? getEntityDisplayName(targetEntities
|
|
18
|
+
? getEntityDisplayName(findEntityById(targetEntities, value), ctx.entities)
|
|
19
19
|
: 'None';
|
|
20
20
|
return (_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: name }), _jsx("div", { className: "px-3 py-2 bg-gray-100 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-sm text-gray-600 dark:text-gray-400", children: display })] }));
|
|
21
21
|
}
|
|
22
22
|
// belongsTo — dropdown select
|
|
23
23
|
if (readOnly) {
|
|
24
24
|
const display = value
|
|
25
|
-
? getEntityDisplayName(targetEntities
|
|
25
|
+
? getEntityDisplayName(findEntityById(targetEntities, value), ctx.entities)
|
|
26
26
|
: '-';
|
|
27
27
|
return (_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: name }), _jsx("div", { className: "px-3 py-2 bg-gray-100 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-sm text-gray-900 dark:text-gray-100", children: display })] }));
|
|
28
28
|
}
|
|
29
|
-
return (_jsxs("div", { children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: [name, required && _jsx("span", { className: "text-red-500 dark:text-red-400 ml-1", children: "*" })] }), _jsxs("select", { value: value || '', onChange: (e) => onChange?.(e.target.value || null), disabled: isLoading, className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-800 dark:text-gray-200", children: [_jsxs("option", { value: "", children: ["-- Select ", targetModel, " --"] }), targetEntities.map((entity) => (_jsx("option", { value: entity
|
|
29
|
+
return (_jsxs("div", { children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: [name, required && _jsx("span", { className: "text-red-500 dark:text-red-400 ml-1", children: "*" })] }), _jsxs("select", { value: value || '', onChange: (e) => onChange?.(e.target.value || null), disabled: isLoading, className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-800 dark:text-gray-200", children: [_jsxs("option", { value: "", children: ["-- Select ", targetModel, " --"] }), targetEntities.map((entity) => (_jsx("option", { value: getEntityId(entity), children: getEntityDisplayName(entity, ctx.entities) }, entity.id)))] })] }));
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=RelationshipField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipField.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RelationshipField.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"RelationshipField.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RelationshipField.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAWjG,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAA0B;IACnH,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAEhC,MAAM,GAAG,GAAG,YAAmB,CAAC;IAChC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC;IACjD,MAAM,cAAc,GAAG,GAAG,WAAW,YAAY,CAAC;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;IAExC,wBAAwB;IACxB,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEnG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CACL,0BACE,gBAAO,SAAS,EAAC,iEAAiE,YAC/E,IAAI,GACC,EACR,eAAK,SAAS,EAAC,wIAAwI,aACpJ,KAAK,OAAG,WAAW,IAAI,OAAO,IAC3B,IACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,oBAAoB,CAClB,cAAc,CAAC,cAAuB,EAAE,KAAe,CAAC,EACxD,GAAG,CAAC,QAAQ,CACb;YACH,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO,CACL,0BACE,gBAAO,SAAS,EAAC,iEAAiE,YAC/E,IAAI,GACC,EACR,cAAK,SAAS,EAAC,wIAAwI,YACpJ,OAAO,GACJ,IACF,CACP,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,oBAAoB,CAClB,cAAc,CAAC,cAAuB,EAAE,KAAe,CAAC,EACxD,GAAG,CAAC,QAAQ,CACb;YACH,CAAC,CAAC,GAAG,CAAC;QAER,OAAO,CACL,0BACE,gBAAO,SAAS,EAAC,iEAAiE,YAC/E,IAAI,GACC,EACR,cAAK,SAAS,EAAC,wIAAwI,YACpJ,OAAO,GACJ,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,0BACE,iBAAO,SAAS,EAAC,iEAAiE,aAC/E,IAAI,EACJ,QAAQ,IAAI,eAAM,SAAS,EAAC,qCAAqC,kBAAS,IACrE,EACR,kBACE,KAAK,EAAG,KAAgB,IAAI,EAAE,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,EACnD,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAC,iKAAiK,aAE3K,kBAAQ,KAAK,EAAC,EAAE,2BAAY,WAAW,WAAa,EAClD,cAAwB,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,CAC9C,iBAAwB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,YAC/C,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,IADhC,MAAM,CAAC,EAAE,CAEb,CACV,CAAC,IACK,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeView.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RuntimeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,IAAI,EAAE,GAAG,CAAC;IACV,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,yEAAyE;IACzE,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"RuntimeView.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RuntimeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,IAAI,EAAE,GAAG,CAAC;IACV,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,yEAAyE;IACzE,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,gBAAgB,2CAySrI"}
|
|
@@ -7,9 +7,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
*
|
|
8
8
|
* Ported from specverse-app-demo/frontend-react/src/components/views/RuntimeViewNew.tsx
|
|
9
9
|
*/
|
|
10
|
-
import { useEffect, useState, useMemo } from 'react';
|
|
10
|
+
import { useEffect, useState, useMemo, useCallback } from 'react';
|
|
11
11
|
import { useRuntimeContext } from '../context.js';
|
|
12
|
-
import { getEntityDisplayName } from '../../core/entity-display.js';
|
|
12
|
+
import { getEntityDisplayName, getEntityId, formatDisplayValue } from '../../core/entity-display.js';
|
|
13
13
|
import { detectPattern } from '../../core/pattern-engine.js';
|
|
14
14
|
import { createUniversalTailwindAdapter } from '../../tailwind/universal-adapter.js';
|
|
15
15
|
export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigate, patternAdapter: externalAdapter }) {
|
|
@@ -18,7 +18,23 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
18
18
|
const [selectedEntityId, setSelectedEntityId] = useState(initialEntityId || null);
|
|
19
19
|
// Get data from RuntimeViewProvider context
|
|
20
20
|
const ctx = useRuntimeContext();
|
|
21
|
-
|
|
21
|
+
// Local state for entity/schema data (populated by ModelDataFetcher children)
|
|
22
|
+
const [fetchedEntities, setFetchedEntities] = useState({});
|
|
23
|
+
const [fetchedSchemas, setFetchedSchemas] = useState({});
|
|
24
|
+
const reportEntities = useCallback((model, data) => {
|
|
25
|
+
setFetchedEntities(prev => {
|
|
26
|
+
if (prev[model] === data)
|
|
27
|
+
return prev; // same ref — skip
|
|
28
|
+
return { ...prev, [model]: data };
|
|
29
|
+
});
|
|
30
|
+
}, []);
|
|
31
|
+
const reportSchema = useCallback((model, data) => {
|
|
32
|
+
setFetchedSchemas(prev => {
|
|
33
|
+
if (prev[model] === data)
|
|
34
|
+
return prev;
|
|
35
|
+
return { ...prev, [model]: data };
|
|
36
|
+
});
|
|
37
|
+
}, []);
|
|
22
38
|
// Create tailwind adapter
|
|
23
39
|
const tailwindAdapter = useMemo(() => createUniversalTailwindAdapter(), []);
|
|
24
40
|
// Determine primary model from view spec
|
|
@@ -47,7 +63,7 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
47
63
|
if (processed.has(name))
|
|
48
64
|
return;
|
|
49
65
|
processed.add(name);
|
|
50
|
-
const schema =
|
|
66
|
+
const schema = fetchedSchemas[name];
|
|
51
67
|
if (schema?.relationships) {
|
|
52
68
|
for (const rel of Object.values(schema.relationships)) {
|
|
53
69
|
const target = rel?.targetModel || rel?.model;
|
|
@@ -62,33 +78,23 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
62
78
|
for (const m of [...models])
|
|
63
79
|
processModel(m);
|
|
64
80
|
return [...models];
|
|
65
|
-
}, [primaryModel, view,
|
|
66
|
-
// Fetch schemas and entities for all detected models
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
ctx.useModelSchemaQuery(modelName);
|
|
71
|
-
}
|
|
72
|
-
// Build model data from context
|
|
73
|
-
const modelData = useMemo(() => {
|
|
74
|
-
const result = {};
|
|
75
|
-
for (const modelName of allModels) {
|
|
76
|
-
result[modelName] = entities[modelName] || [];
|
|
77
|
-
}
|
|
78
|
-
return result;
|
|
79
|
-
}, [allModels, entities]);
|
|
81
|
+
}, [primaryModel, view, fetchedSchemas]);
|
|
82
|
+
// Fetch schemas and entities for all detected models via child components
|
|
83
|
+
// (hooks can't be called in loops — each model gets its own component)
|
|
84
|
+
// Build model data from fetched state
|
|
85
|
+
const modelData = fetchedEntities;
|
|
80
86
|
// Primary entities
|
|
81
|
-
const primaryEntities = useMemo(() => (primaryModel ?
|
|
82
|
-
// Selected entity
|
|
87
|
+
const primaryEntities = useMemo(() => (primaryModel ? fetchedEntities[primaryModel] || [] : []), [primaryModel, fetchedEntities]);
|
|
88
|
+
// Selected entity — match by UUID
|
|
83
89
|
const selectedEntity = useMemo(() => {
|
|
84
90
|
if (!selectedEntityId || !primaryEntities.length)
|
|
85
91
|
return null;
|
|
86
|
-
return primaryEntities.find((e) => e
|
|
92
|
+
return primaryEntities.find((e) => getEntityId(e) === selectedEntityId) || null;
|
|
87
93
|
}, [selectedEntityId, primaryEntities]);
|
|
88
94
|
// Auto-select first entity for detail/dashboard views
|
|
89
95
|
useEffect(() => {
|
|
90
96
|
if ((view.type === 'detail' || view.type === 'dashboard') && primaryEntities.length > 0 && !selectedEntityId) {
|
|
91
|
-
setSelectedEntityId(primaryEntities[0]
|
|
97
|
+
setSelectedEntityId(getEntityId(primaryEntities[0]));
|
|
92
98
|
}
|
|
93
99
|
}, [view.type, primaryEntities, selectedEntityId]);
|
|
94
100
|
// Sync with external entity ID
|
|
@@ -125,7 +131,8 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
125
131
|
>
|
|
126
132
|
${primaryEntities.map((entity) => {
|
|
127
133
|
const displayName = getEntityDisplayName(entity, modelData);
|
|
128
|
-
|
|
134
|
+
const eid = getEntityId(entity);
|
|
135
|
+
return `<option value="${eid}" ${eid === selectedEntityId ? 'selected' : ''}>${displayName}</option>`;
|
|
129
136
|
}).join('')}
|
|
130
137
|
</select>
|
|
131
138
|
</div>
|
|
@@ -148,7 +155,7 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
148
155
|
pattern,
|
|
149
156
|
viewSpec: view,
|
|
150
157
|
modelData,
|
|
151
|
-
modelSchemas,
|
|
158
|
+
modelSchemas: fetchedSchemas,
|
|
152
159
|
primaryModel,
|
|
153
160
|
selectedEntity,
|
|
154
161
|
primaryEntities,
|
|
@@ -163,7 +170,7 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
163
170
|
}
|
|
164
171
|
else {
|
|
165
172
|
// Built-in rendering using tailwind adapter directly
|
|
166
|
-
html += renderBuiltInPattern(patternResult, view, modelData,
|
|
173
|
+
html += renderBuiltInPattern(patternResult, view, modelData, fetchedSchemas, primaryModel, selectedEntity, primaryEntities, tailwindAdapter);
|
|
167
174
|
}
|
|
168
175
|
setRenderedHtml(html);
|
|
169
176
|
setError(null);
|
|
@@ -172,7 +179,7 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
172
179
|
console.error('Pattern-based rendering error:', err);
|
|
173
180
|
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
174
181
|
}
|
|
175
|
-
}, [view, modelData,
|
|
182
|
+
}, [view, modelData, fetchedSchemas, selectedEntity, primaryModel, primaryEntities, selectedEntityId, externalAdapter, tailwindAdapter, onNavigate]);
|
|
176
183
|
// DOM event handlers for navigation
|
|
177
184
|
useEffect(() => {
|
|
178
185
|
// Entity selector change
|
|
@@ -229,20 +236,73 @@ export function RuntimeView({ view, selectedEntityId: initialEntityId, onNavigat
|
|
|
229
236
|
return () => handlers.forEach(([el, h]) => el.removeEventListener('click', h));
|
|
230
237
|
}
|
|
231
238
|
}, [renderedHtml, onNavigate]);
|
|
239
|
+
// Tab switching for tabbed lists (e.g., related entity tabs in detail view)
|
|
240
|
+
useEffect(() => {
|
|
241
|
+
const tabButtons = document.querySelectorAll('[data-tab-button]');
|
|
242
|
+
if (tabButtons.length === 0)
|
|
243
|
+
return;
|
|
244
|
+
const handlers = [];
|
|
245
|
+
tabButtons.forEach((button) => {
|
|
246
|
+
const handler = () => {
|
|
247
|
+
const tabId = button.getAttribute('data-tab-button');
|
|
248
|
+
if (!tabId)
|
|
249
|
+
return;
|
|
250
|
+
// Find the tab group
|
|
251
|
+
const tabGroup = button.closest('[data-tab-group]');
|
|
252
|
+
if (!tabGroup)
|
|
253
|
+
return;
|
|
254
|
+
const groupId = tabGroup.getAttribute('data-tab-group');
|
|
255
|
+
// Update button styles
|
|
256
|
+
tabGroup.querySelectorAll('[data-tab-button]').forEach((btn) => {
|
|
257
|
+
const isActive = btn.getAttribute('data-tab-button') === tabId;
|
|
258
|
+
btn.className = `px-4 py-3 text-sm font-medium transition-colors focus:outline-none ${isActive
|
|
259
|
+
? 'bg-white dark:bg-gray-800 text-blue-600 dark:text-blue-400 border-b-2 border-blue-600 dark:border-blue-400'
|
|
260
|
+
: 'text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800'}`;
|
|
261
|
+
});
|
|
262
|
+
// Show/hide panels
|
|
263
|
+
const panels = document.querySelectorAll(`[data-tab-panel]`);
|
|
264
|
+
panels.forEach((panel) => {
|
|
265
|
+
// Only toggle panels belonging to this tab group
|
|
266
|
+
const panelId = panel.getAttribute('data-tab-panel') || '';
|
|
267
|
+
if (panelId.startsWith(groupId || '___')) {
|
|
268
|
+
panel.classList.toggle('hidden', panelId !== tabId);
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
button.addEventListener('click', handler);
|
|
273
|
+
handlers.push([button, handler]);
|
|
274
|
+
});
|
|
275
|
+
return () => handlers.forEach(([el, h]) => el.removeEventListener('click', h));
|
|
276
|
+
}, [renderedHtml]);
|
|
232
277
|
if (error) {
|
|
233
278
|
return (_jsxs("div", { className: "p-4 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-700 rounded", children: [_jsx("p", { className: "text-red-800 dark:text-red-200 font-semibold", children: "Pattern Rendering Error" }), _jsx("pre", { className: "text-sm text-red-700 dark:text-red-300 mt-2", children: error })] }));
|
|
234
279
|
}
|
|
235
|
-
return (
|
|
280
|
+
return (_jsxs("div", { className: "runtime-view-container p-4 h-full overflow-auto", children: [allModels.map(m => _jsx(ModelDataFetcher, { modelName: m, onEntities: reportEntities, onSchema: reportSchema }, m)), _jsx("div", { dangerouslySetInnerHTML: { __html: renderedHtml } })] }));
|
|
281
|
+
}
|
|
282
|
+
/** Fetches entities and schema for a single model, reports data to parent */
|
|
283
|
+
function ModelDataFetcher({ modelName, onEntities, onSchema }) {
|
|
284
|
+
const ctx = useRuntimeContext();
|
|
285
|
+
const { data: entitiesData } = ctx.useEntitiesQuery(`${modelName}Controller`, modelName);
|
|
286
|
+
const { data: schemaData } = ctx.useModelSchemaQuery(modelName);
|
|
287
|
+
useEffect(() => {
|
|
288
|
+
if (entitiesData)
|
|
289
|
+
onEntities(modelName, entitiesData);
|
|
290
|
+
}, [entitiesData, modelName, onEntities]);
|
|
291
|
+
useEffect(() => {
|
|
292
|
+
if (schemaData)
|
|
293
|
+
onSchema(modelName, schemaData);
|
|
294
|
+
}, [schemaData, modelName, onSchema]);
|
|
295
|
+
return null;
|
|
236
296
|
}
|
|
237
297
|
/**
|
|
238
298
|
* Built-in pattern rendering when no external adapter is provided.
|
|
239
299
|
* Uses the tailwind adapter to generate HTML for common patterns.
|
|
240
300
|
*/
|
|
241
|
-
function renderBuiltInPattern(pattern, view, modelData,
|
|
301
|
+
function renderBuiltInPattern(pattern, view, modelData, fetchedSchemas, primaryModel, selectedEntity, primaryEntities, tailwindAdapter) {
|
|
242
302
|
const tw = tailwindAdapter.components;
|
|
243
303
|
if (pattern.patternId === 'list-view' && primaryModel) {
|
|
244
304
|
const entities = modelData[primaryModel] || [];
|
|
245
|
-
const schema =
|
|
305
|
+
const schema = fetchedSchemas[primaryModel];
|
|
246
306
|
const attributes = schema?.attributes || {};
|
|
247
307
|
const columns = Object.keys(attributes).filter(k => k !== 'id' && k !== 'createdAt' && k !== 'updatedAt');
|
|
248
308
|
if (entities.length === 0) {
|
|
@@ -251,8 +311,8 @@ function renderBuiltInPattern(pattern, view, modelData, modelSchemas, primaryMod
|
|
|
251
311
|
const headerRow = columns.map(col => `<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider">${col}</th>`).join('');
|
|
252
312
|
const bodyRows = entities.map((entity) => {
|
|
253
313
|
const data = entity.data || entity;
|
|
254
|
-
const cells = columns.map(col => `<td class="px-6 py-4 text-sm text-gray-900 dark:text-gray-100">${data[col]
|
|
255
|
-
return `<tr class="hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer" data-nav-entity-id="${entity
|
|
314
|
+
const cells = columns.map(col => `<td class="px-6 py-4 text-sm text-gray-900 dark:text-gray-100">${formatDisplayValue(data[col])}</td>`).join('');
|
|
315
|
+
return `<tr class="hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer" data-nav-entity-id="${getEntityId(entity)}">${cells}</tr>`;
|
|
256
316
|
}).join('');
|
|
257
317
|
return tw.table?.render({
|
|
258
318
|
properties: { columns },
|
|
@@ -261,7 +321,7 @@ function renderBuiltInPattern(pattern, view, modelData, modelSchemas, primaryMod
|
|
|
261
321
|
}
|
|
262
322
|
if (pattern.patternId === 'detail-view' && selectedEntity) {
|
|
263
323
|
const data = selectedEntity.data || selectedEntity;
|
|
264
|
-
const schema =
|
|
324
|
+
const schema = fetchedSchemas[primaryModel || ''];
|
|
265
325
|
const attributes = schema?.attributes || {};
|
|
266
326
|
const fields = Object.keys(attributes).filter(k => k !== 'id' && k !== 'createdAt' && k !== 'updatedAt');
|
|
267
327
|
return tw.content?.render({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeView.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RuntimeView.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuntimeView.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/RuntimeView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,16 @@ export interface ViewRouterProps {
|
|
|
13
13
|
/** Optional: custom form renderer for interactive views */
|
|
14
14
|
FormView?: React.ComponentType<{
|
|
15
15
|
view: any;
|
|
16
|
+
spec?: any;
|
|
16
17
|
selectedEntityId?: string | null;
|
|
18
|
+
onNavigateToModel?: (modelName: string, entityId?: string) => void;
|
|
19
|
+
}>;
|
|
20
|
+
/** Optional: custom operation view renderer (e.g., service execution UI) */
|
|
21
|
+
OperationView?: React.ComponentType<{
|
|
22
|
+
view: any;
|
|
17
23
|
}>;
|
|
18
24
|
/** Optional: pattern adapter for rendering */
|
|
19
25
|
patternAdapter?: any;
|
|
20
26
|
}
|
|
21
|
-
export declare function ViewRouter({ views: viewsOverride, FormView, patternAdapter }: ViewRouterProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function ViewRouter({ views: viewsOverride, FormView, OperationView, patternAdapter }: ViewRouterProps): import("react/jsx-runtime").JSX.Element;
|
|
22
28
|
//# sourceMappingURL=ViewRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ViewRouter.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAO9D,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ViewRouter.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAO9D,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IAChK,4EAA4E;IAC5E,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACnD,8CAA8C;IAC9C,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAOD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,eAAe,2CAsI5G"}
|
|
@@ -17,9 +17,41 @@ import { useResizableSidebar } from '../hooks/useResizableSidebar.js';
|
|
|
17
17
|
const INTERACTIVE_VIEW_TYPES = new Set([
|
|
18
18
|
'form', 'create', 'edit', 'create-form', 'edit-form',
|
|
19
19
|
]);
|
|
20
|
-
export function ViewRouter({ views: viewsOverride, FormView, patternAdapter }) {
|
|
20
|
+
export function ViewRouter({ views: viewsOverride, FormView, OperationView, patternAdapter }) {
|
|
21
21
|
const ctx = useRuntimeContext();
|
|
22
|
-
const
|
|
22
|
+
const rawViews = viewsOverride || ctx.views || [];
|
|
23
|
+
// Auto-generate missing detail views for models that have list/form but no detail
|
|
24
|
+
// Insert next to the model's other views, not at the end
|
|
25
|
+
const views = useMemo(() => {
|
|
26
|
+
const result = [];
|
|
27
|
+
const existingTypes = new Map();
|
|
28
|
+
const modelLastIndex = new Map();
|
|
29
|
+
for (let i = 0; i < rawViews.length; i++) {
|
|
30
|
+
const v = rawViews[i];
|
|
31
|
+
result.push(v);
|
|
32
|
+
const model = v.model || v.controller?.replace(/Controller$/, '');
|
|
33
|
+
if (!model)
|
|
34
|
+
continue;
|
|
35
|
+
if (!existingTypes.has(model))
|
|
36
|
+
existingTypes.set(model, new Set());
|
|
37
|
+
existingTypes.get(model).add(v.type);
|
|
38
|
+
modelLastIndex.set(model, result.length); // insert point = after last view for this model
|
|
39
|
+
}
|
|
40
|
+
// Insert generated detail views after the model's last existing view
|
|
41
|
+
const toInsert = [];
|
|
42
|
+
for (const [model, types] of existingTypes) {
|
|
43
|
+
if (!types.has('detail') && (types.has('list') || types.has('form'))) {
|
|
44
|
+
const insertAt = modelLastIndex.get(model) || result.length;
|
|
45
|
+
toInsert.push({ index: insertAt, view: { name: `${model}DetailView`, type: 'detail', model, _generated: true } });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Insert in reverse order so indices stay valid
|
|
49
|
+
toInsert.sort((a, b) => b.index - a.index);
|
|
50
|
+
for (const { index, view } of toInsert) {
|
|
51
|
+
result.splice(index, 0, view);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}, [rawViews]);
|
|
23
55
|
const [selectedViewName, setSelectedViewName] = useState(null);
|
|
24
56
|
const [selectedEntityId, setSelectedEntityId] = useState(null);
|
|
25
57
|
const { width, isResizing, startResizing } = useResizableSidebar();
|
|
@@ -37,25 +69,22 @@ export function ViewRouter({ views: viewsOverride, FormView, patternAdapter }) {
|
|
|
37
69
|
return viewModel === model && v.type === type;
|
|
38
70
|
});
|
|
39
71
|
}, [views]);
|
|
40
|
-
// Navigation handler
|
|
72
|
+
// Navigation handler — finds target view by model + type, with fallbacks
|
|
41
73
|
const handleNavigate = useCallback((targetViewType, entityId, targetModel) => {
|
|
42
74
|
if (entityId)
|
|
43
75
|
setSelectedEntityId(entityId);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
76
|
+
const model = targetModel || (selectedView?.model || selectedView?.controller?.replace(/Controller$/, ''));
|
|
77
|
+
if (!model)
|
|
78
|
+
return;
|
|
79
|
+
// Try exact type first, then fallbacks
|
|
80
|
+
const fallbacks = targetViewType === 'detail' ? ['detail', 'form', 'list']
|
|
81
|
+
: targetViewType === 'form' ? ['form', 'detail', 'list']
|
|
82
|
+
: [targetViewType, 'list', 'detail'];
|
|
83
|
+
for (const type of fallbacks) {
|
|
84
|
+
const targetView = findViewByModelAndType(model, type);
|
|
47
85
|
if (targetView) {
|
|
48
86
|
setSelectedViewName(targetView.name);
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
else if (selectedView) {
|
|
52
|
-
// Same-model navigation
|
|
53
|
-
const currentModel = selectedView.model || selectedView.controller?.replace(/Controller$/, '');
|
|
54
|
-
if (currentModel) {
|
|
55
|
-
const targetView = findViewByModelAndType(currentModel, targetViewType);
|
|
56
|
-
if (targetView) {
|
|
57
|
-
setSelectedViewName(targetView.name);
|
|
58
|
-
}
|
|
87
|
+
return;
|
|
59
88
|
}
|
|
60
89
|
}
|
|
61
90
|
}, [selectedView, findViewByModelAndType]);
|
|
@@ -64,7 +93,17 @@ export function ViewRouter({ views: viewsOverride, FormView, patternAdapter }) {
|
|
|
64
93
|
setSelectedEntityId(null);
|
|
65
94
|
}, []);
|
|
66
95
|
// Determine rendering strategy
|
|
67
|
-
const
|
|
68
|
-
|
|
96
|
+
const viewType = selectedView?.type?.toLowerCase();
|
|
97
|
+
const isInteractive = selectedView && INTERACTIVE_VIEW_TYPES.has(viewType);
|
|
98
|
+
const isOperation = viewType === 'operation';
|
|
99
|
+
return (_jsxs("div", { className: "flex h-full bg-gray-900", children: [_jsx(ViewSidebar, { views: views, selectedView: selectedView?.name || null, onSelectView: handleViewSelect }), _jsx(ResizeHandle, { onMouseDown: startResizing, isResizing: isResizing }), _jsx("div", { className: "flex-1 bg-white dark:bg-gray-800 rounded-lg shadow overflow-hidden flex flex-col ml-3 border border-gray-200 dark:border-gray-700", children: selectedView ? (isOperation && OperationView ? (_jsx(OperationView, { view: selectedView }, selectedView.name)) : isInteractive && FormView ? (_jsx(FormView, { view: selectedView, spec: ctx.spec, selectedEntityId: selectedEntityId, onNavigateToModel: (targetModel, entityId) => {
|
|
100
|
+
const targetView = findViewByModelAndType(targetModel, 'form')
|
|
101
|
+
|| findViewByModelAndType(targetModel, 'detail')
|
|
102
|
+
|| findViewByModelAndType(targetModel, 'list');
|
|
103
|
+
if (targetView) {
|
|
104
|
+
setSelectedEntityId(entityId || null);
|
|
105
|
+
setSelectedViewName(targetView.name);
|
|
106
|
+
}
|
|
107
|
+
} }, selectedView.name)) : (_jsx(RuntimeView, { view: selectedView, selectedEntityId: selectedEntityId, onNavigate: handleNavigate, patternAdapter: patternAdapter }, selectedView.name))) : (_jsx("div", { className: "flex-1 flex items-center justify-center text-gray-500 dark:text-gray-400", children: _jsx("p", { children: "Select a view from the sidebar" }) })) })] }));
|
|
69
108
|
}
|
|
70
109
|
//# sourceMappingURL=ViewRouter.js.map
|