@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
|
@@ -4,15 +4,17 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
4
4
|
*
|
|
5
5
|
* Two-panel layout: form (top) + entity list (bottom).
|
|
6
6
|
* Supports create, update, delete, and lifecycle transitions.
|
|
7
|
+
* Entity list shows relationships (blue), lifecycles (purple), and metadata (gray).
|
|
7
8
|
*
|
|
8
9
|
* Uses RuntimeViewProvider context instead of appStore.
|
|
9
|
-
* Ported from specverse-app-demo/frontend-react/src/components/models/ModelManager.tsx
|
|
10
10
|
*/
|
|
11
|
-
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
11
|
+
import { useState, useEffect, useMemo, useCallback, useRef } from 'react';
|
|
12
12
|
import { useRuntimeContext } from '../context.js';
|
|
13
|
+
import { getEntityDisplayName, getEntityId, findEntityById, formatDisplayValue, getForeignKeyName, humanizeFieldName } from '../../core/entity-display.js';
|
|
13
14
|
import { isAutoField, isFieldRequired, initializeFormData, classifyFields } from '../../core/field-classification.js';
|
|
14
15
|
import { RelationshipField } from './RelationshipField.js';
|
|
15
|
-
|
|
16
|
+
import { FieldInput } from './FieldInput.js';
|
|
17
|
+
export function ModelManager({ modelName, controllerName, initialEntityId, onNavigateToModel }) {
|
|
16
18
|
const ctx = useRuntimeContext();
|
|
17
19
|
const controller = controllerName || `${modelName}Controller`;
|
|
18
20
|
// Fetch data via context hooks
|
|
@@ -25,7 +27,21 @@ export function ModelManager({ modelName, controllerName }) {
|
|
|
25
27
|
const attributes = schema?.attributes || {};
|
|
26
28
|
const relationships = schema?.relationships || {};
|
|
27
29
|
const lifecycles = schema?.lifecycles || {};
|
|
28
|
-
const { regularFields, metadataFields } = useMemo(() => classifyFields(attributes), [attributes]);
|
|
30
|
+
const { regularFields: allRegularFields, metadataFields } = useMemo(() => classifyFields(attributes), [attributes]);
|
|
31
|
+
const relationshipEntries = useMemo(() => Object.entries(relationships), [relationships]);
|
|
32
|
+
const lifecycleEntries = useMemo(() => Object.entries(lifecycles), [lifecycles]);
|
|
33
|
+
const hasLifecycles = lifecycleEntries.length > 0;
|
|
34
|
+
// Hide FK fields from regular columns — they're shown in relationship columns instead
|
|
35
|
+
const belongsToFKs = useMemo(() => {
|
|
36
|
+
const fks = new Set();
|
|
37
|
+
for (const [relName, relDef] of relationshipEntries) {
|
|
38
|
+
if (relDef.type === 'belongsTo') {
|
|
39
|
+
fks.add(getForeignKeyName(relName, relDef));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return fks;
|
|
43
|
+
}, [relationshipEntries]);
|
|
44
|
+
const regularFields = useMemo(() => allRegularFields.filter(f => !belongsToFKs.has(f)), [allRegularFields, belongsToFKs]);
|
|
29
45
|
// State
|
|
30
46
|
const [selectedEntity, setSelectedEntity] = useState(null);
|
|
31
47
|
const [formMode, setFormMode] = useState('create');
|
|
@@ -33,25 +49,67 @@ export function ModelManager({ modelName, controllerName }) {
|
|
|
33
49
|
const [formData, setFormData] = useState({});
|
|
34
50
|
const [errors, setErrors] = useState({});
|
|
35
51
|
const [successMessage, setSuccessMessage] = useState(null);
|
|
52
|
+
const [selectedLifecycleStates, setSelectedLifecycleStates] = useState({});
|
|
53
|
+
// Pre-select entity when navigating from detail → form
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
if (initialEntityId && entities.length > 0 && !selectedEntity) {
|
|
56
|
+
const target = findEntityById(entities, initialEntityId);
|
|
57
|
+
if (target) {
|
|
58
|
+
setSelectedEntity(target);
|
|
59
|
+
setFormMode('update');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}, [initialEntityId, entities, selectedEntity]);
|
|
63
|
+
// Sync selected entity with refreshed list (after mutations)
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (selectedEntity && entities.length > 0) {
|
|
66
|
+
const updatedEntity = entities.find((e) => getEntityId(e) === getEntityId(selectedEntity));
|
|
67
|
+
if (updatedEntity) {
|
|
68
|
+
// Check if lifecycle states changed
|
|
69
|
+
const oldStates = JSON.stringify(selectedEntity.metadata?.lifecycleStates || {});
|
|
70
|
+
const newStates = JSON.stringify(updatedEntity.metadata?.lifecycleStates || {});
|
|
71
|
+
if (oldStates !== newStates) {
|
|
72
|
+
setSelectedEntity(updatedEntity);
|
|
73
|
+
setSelectedLifecycleStates({ ...(updatedEntity.metadata?.lifecycleStates || {}) });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// Entity was deleted
|
|
78
|
+
setSelectedEntity(null);
|
|
79
|
+
setFormMode('create');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (selectedEntity && entities.length === 0) {
|
|
83
|
+
setSelectedEntity(null);
|
|
84
|
+
setFormMode('create');
|
|
85
|
+
}
|
|
86
|
+
}, [entities, selectedEntity?.id]);
|
|
36
87
|
// Init form when mode or entity changes
|
|
37
88
|
useEffect(() => {
|
|
38
89
|
if (formMode === 'update' && selectedEntity) {
|
|
39
|
-
setFormData({ ...(selectedEntity.data ||
|
|
90
|
+
setFormData({ ...(selectedEntity.data || {}) });
|
|
91
|
+
setSelectedLifecycleStates({ ...(selectedEntity.metadata?.lifecycleStates || {}) });
|
|
40
92
|
}
|
|
41
93
|
else {
|
|
42
94
|
setFormData(initializeFormData(attributes));
|
|
95
|
+
setSelectedLifecycleStates({});
|
|
43
96
|
}
|
|
44
97
|
setErrors({});
|
|
45
98
|
setSuccessMessage(null);
|
|
46
99
|
}, [formMode, selectedEntity, attributes]);
|
|
47
|
-
// Reset when model changes
|
|
100
|
+
// Reset when model changes (not when attributes load — that would clear pre-selected entity)
|
|
101
|
+
const prevModelRef = useRef(modelName);
|
|
48
102
|
useEffect(() => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
103
|
+
if (prevModelRef.current !== modelName) {
|
|
104
|
+
prevModelRef.current = modelName;
|
|
105
|
+
setSelectedEntity(null);
|
|
106
|
+
setFormMode('create');
|
|
107
|
+
setActiveTab('edit');
|
|
108
|
+
setFormData(initializeFormData(attributes));
|
|
109
|
+
setErrors({});
|
|
110
|
+
setSelectedLifecycleStates({});
|
|
111
|
+
}
|
|
112
|
+
}, [modelName]);
|
|
55
113
|
const handleFieldChange = useCallback((field, value) => {
|
|
56
114
|
setFormData(prev => ({ ...prev, [field]: value }));
|
|
57
115
|
}, []);
|
|
@@ -69,18 +127,41 @@ export function ModelManager({ modelName, controllerName }) {
|
|
|
69
127
|
await executeMutation.mutateAsync({
|
|
70
128
|
controllerName: controller,
|
|
71
129
|
operationName: 'create',
|
|
72
|
-
data: formData,
|
|
130
|
+
data: { data: formData },
|
|
73
131
|
});
|
|
74
132
|
setFormData(initializeFormData(attributes));
|
|
75
133
|
setSuccessMessage(`${modelName} created successfully`);
|
|
76
134
|
}
|
|
77
135
|
else if (selectedEntity) {
|
|
136
|
+
// Strip auto-generated fields from update data (id, createdAt, updatedAt)
|
|
137
|
+
// These should never be sent in an update — the backend owns them
|
|
138
|
+
const updateData = {};
|
|
139
|
+
for (const [key, value] of Object.entries(formData)) {
|
|
140
|
+
if (key === 'id')
|
|
141
|
+
continue; // always strip id from update payload
|
|
142
|
+
if (!isAutoField(key, attributes[key])) {
|
|
143
|
+
updateData[key] = value;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Use UUID (data.id) as the entity identifier — works with both
|
|
147
|
+
// app-demo's in-memory store (falls back to UUID) and Prisma (native UUID)
|
|
148
|
+
const entityId = getEntityId(selectedEntity);
|
|
78
149
|
await executeMutation.mutateAsync({
|
|
79
150
|
controllerName: controller,
|
|
80
151
|
operationName: 'update',
|
|
81
|
-
data:
|
|
82
|
-
entityId: selectedEntity.data?.id || selectedEntity.id,
|
|
152
|
+
data: { id: entityId, data: updateData },
|
|
83
153
|
});
|
|
154
|
+
// Apply lifecycle state changes
|
|
155
|
+
for (const [lcName, targetState] of Object.entries(selectedLifecycleStates)) {
|
|
156
|
+
const currentState = selectedEntity.metadata?.lifecycleStates?.[lcName] || selectedEntity.data?.lifecycleStates?.[lcName];
|
|
157
|
+
if (targetState && targetState !== currentState) {
|
|
158
|
+
await transitionMutation.mutateAsync({
|
|
159
|
+
controllerName: controller,
|
|
160
|
+
entityId: getEntityId(selectedEntity),
|
|
161
|
+
targetState,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
84
165
|
setSuccessMessage(`${modelName} updated successfully`);
|
|
85
166
|
}
|
|
86
167
|
}
|
|
@@ -91,12 +172,14 @@ export function ModelManager({ modelName, controllerName }) {
|
|
|
91
172
|
const handleDelete = async () => {
|
|
92
173
|
if (!selectedEntity)
|
|
93
174
|
return;
|
|
175
|
+
if (typeof window !== 'undefined' && !window.confirm(`Delete this ${modelName}?`))
|
|
176
|
+
return;
|
|
94
177
|
try {
|
|
95
178
|
await executeMutation.mutateAsync({
|
|
96
179
|
controllerName: controller,
|
|
97
180
|
operationName: 'delete',
|
|
98
181
|
data: {},
|
|
99
|
-
entityId: selectedEntity
|
|
182
|
+
entityId: getEntityId(selectedEntity),
|
|
100
183
|
});
|
|
101
184
|
setSelectedEntity(null);
|
|
102
185
|
setFormMode('create');
|
|
@@ -118,65 +201,87 @@ export function ModelManager({ modelName, controllerName }) {
|
|
|
118
201
|
setFormData(initializeFormData(attributes));
|
|
119
202
|
setErrors({});
|
|
120
203
|
setSuccessMessage(null);
|
|
204
|
+
setSelectedLifecycleStates({});
|
|
121
205
|
}, [attributes]);
|
|
122
|
-
|
|
123
|
-
|
|
206
|
+
// Shared ref for related entity data (populated by RelatedModelFetcher children)
|
|
207
|
+
const relatedEntitiesRef = useRef({});
|
|
208
|
+
// Resolve relationship display value for entity list
|
|
209
|
+
const resolveRelValue = useCallback((entity, relName, relDef) => {
|
|
210
|
+
const fk = getForeignKeyName(relName, relDef);
|
|
211
|
+
const fkValue = entity.data?.[fk];
|
|
212
|
+
if (!fkValue)
|
|
213
|
+
return '-';
|
|
214
|
+
const targetModel = relDef.targetModel || relDef.model;
|
|
215
|
+
const targetEntities = relatedEntitiesRef.current[targetModel] || [];
|
|
216
|
+
const related = findEntityById(targetEntities, fkValue);
|
|
217
|
+
return related ? getEntityDisplayName(related, relatedEntitiesRef.current) : String(fkValue).slice(0, 8) + '...';
|
|
218
|
+
}, []);
|
|
219
|
+
// Collect target models from belongsTo relationships for data fetching
|
|
220
|
+
const relatedModels = useMemo(() => relationshipEntries
|
|
221
|
+
.filter(([_, r]) => r.type === 'belongsTo')
|
|
222
|
+
.map(([_, r]) => r.targetModel || r.model)
|
|
223
|
+
.filter(Boolean), [relationshipEntries]);
|
|
224
|
+
return (_jsxs("div", { className: "flex flex-col h-full", children: [relatedModels.map(m => _jsx(RelatedModelFetcher, { modelName: m, entitiesRef: relatedEntitiesRef }, m)), _jsxs("div", { className: "px-4 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between", children: [_jsx("h2", { className: "text-lg font-semibold text-gray-900 dark:text-gray-100", children: formMode === 'create' ? `New ${modelName}` : `Edit ${modelName}` }), _jsx("div", { className: "flex gap-2", children: formMode === 'update' && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: handleClear, className: "px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors", children: "+ New" }), _jsx("button", { onClick: handleDelete, className: "px-3 py-1.5 text-sm bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Delete" })] })) })] }), errors._form && (_jsx("div", { className: "mx-4 mt-2 px-4 py-3 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-700 rounded text-sm text-red-800 dark:text-red-200", children: errors._form })), successMessage && (_jsx("div", { className: "mx-4 mt-2 px-4 py-3 bg-green-50 dark:bg-green-900/30 border border-green-200 dark:border-green-700 rounded text-sm text-green-800 dark:text-green-200", children: successMessage })), formMode === 'update' && hasLifecycles && (_jsxs("div", { className: "px-4 pt-2 flex gap-1", children: [_jsx("button", { onClick: () => setActiveTab('edit'), className: `px-3 py-1.5 text-sm rounded-t ${activeTab === 'edit' ? 'bg-white dark:bg-gray-800 text-blue-600 border border-b-0 border-gray-200 dark:border-gray-700' : 'text-gray-600 dark:text-gray-400'}`, children: "Edit" }), _jsx("button", { onClick: () => setActiveTab('evolve'), className: `px-3 py-1.5 text-sm rounded-t ${activeTab === 'evolve' ? 'bg-white dark:bg-gray-800 text-blue-600 border border-b-0 border-gray-200 dark:border-gray-700' : 'text-gray-600 dark:text-gray-400'}`, children: "Evolve" })] })), _jsx("div", { className: "px-4 py-4 max-h-[50vh] overflow-auto border-b border-gray-200 dark:border-gray-700", children: activeTab === 'edit' ? (_jsxs("form", { onSubmit: (e) => { e.preventDefault(); handleSave(); }, className: "space-y-3", children: [regularFields.filter(shouldShowField).map((fieldName) => {
|
|
124
225
|
const attrDef = attributes[fieldName];
|
|
125
226
|
const typeStr = typeof attrDef === 'string' ? attrDef : attrDef?.type || 'String';
|
|
126
227
|
const required = isFieldRequired(attrDef);
|
|
127
|
-
return (_jsxs("div", { children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: [fieldName, required && _jsx("span", { className: "text-red-500 dark:text-red-400 ml-1", children: "*" })] }),
|
|
128
|
-
}),
|
|
228
|
+
return (_jsxs("div", { children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: [humanizeFieldName(fieldName), required && _jsx("span", { className: "text-red-500 dark:text-red-400 ml-1", children: "*" })] }), _jsx(FieldInput, { name: fieldName, typeStr: typeStr, value: formData[fieldName], onChange: (val) => handleFieldChange(fieldName, val) })] }, fieldName));
|
|
229
|
+
}), relationshipEntries.map(([relName, relDef]) => {
|
|
129
230
|
if (relDef.type !== 'belongsTo')
|
|
130
231
|
return null;
|
|
131
|
-
return (_jsx(RelationshipField, { name: relName, relationship: relDef, value: formData[relDef
|
|
132
|
-
}),
|
|
133
|
-
|
|
134
|
-
|
|
232
|
+
return (_jsx(RelationshipField, { name: relName, relationship: relDef, value: formData[getForeignKeyName(relName, relDef)], onChange: (val) => handleFieldChange(getForeignKeyName(relName, relDef), val), required: relDef.required }, relName));
|
|
233
|
+
}), hasLifecycles && formMode === 'update' && lifecycleEntries.map(([lcName, lcDef]) => {
|
|
234
|
+
const currentState = selectedEntity?.metadata?.lifecycleStates?.[lcName] || selectedEntity?.data?.lifecycleStates?.[lcName] || lcDef.initial || lcDef.initialState;
|
|
235
|
+
const transitions = lcDef.transitions || [];
|
|
236
|
+
const validNextStates = transitions
|
|
237
|
+
.filter((t) => t.from === currentState)
|
|
238
|
+
.map((t) => t.to);
|
|
239
|
+
// Show current + valid next states
|
|
240
|
+
const availableStates = [currentState, ...validNextStates.filter((s) => s !== currentState)];
|
|
241
|
+
return (_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1", children: humanizeFieldName(lcName) }), _jsx("select", { value: selectedLifecycleStates[lcName] || currentState || '', onChange: (e) => setSelectedLifecycleStates(prev => ({ ...prev, [lcName]: e.target.value })), 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: availableStates.map((state) => (_jsx("option", { value: state, children: humanizeFieldName(state) }, state))) })] }, lcName));
|
|
242
|
+
}), _jsx("button", { type: "submit", disabled: executeMutation.isPending, className: "px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded font-medium transition-colors disabled:opacity-50", children: executeMutation.isPending ? 'Saving...' : formMode === 'create' ? 'Create' : 'Update' })] })) : (
|
|
243
|
+
/* Evolve tab — lifecycle transitions */
|
|
244
|
+
_jsx("div", { className: "space-y-4", children: lifecycleEntries.map(([lcName, lcDef]) => {
|
|
245
|
+
const currentState = selectedEntity?.metadata?.lifecycleStates?.[lcName] || selectedEntity?.data?.lifecycleStates?.[lcName] || lcDef.initial || lcDef.initialState;
|
|
246
|
+
// Compute valid next states from transitions
|
|
247
|
+
const transitions = lcDef.transitions || [];
|
|
248
|
+
const validNextStates = transitions
|
|
249
|
+
.filter((t) => t.from === currentState)
|
|
250
|
+
.map((t) => t.to);
|
|
251
|
+
return (_jsxs("div", { className: "p-3 border border-gray-200 dark:border-gray-700 rounded", children: [_jsx("div", { className: "text-sm font-medium text-gray-700 dark:text-gray-200 mb-2", children: humanizeFieldName(lcName) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-gray-500 dark:text-gray-400", children: "Current:" }), _jsx("span", { className: "px-2 py-0.5 bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 rounded text-xs font-medium", children: humanizeFieldName(currentState) }), validNextStates.length > 0 ? (_jsxs("select", { className: "ml-auto px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100", value: "", onChange: (e) => {
|
|
135
252
|
if (e.target.value && selectedEntity) {
|
|
136
253
|
transitionMutation.mutateAsync({
|
|
137
254
|
controllerName: controller,
|
|
138
|
-
entityId: selectedEntity
|
|
255
|
+
entityId: getEntityId(selectedEntity),
|
|
139
256
|
targetState: e.target.value,
|
|
140
|
-
});
|
|
257
|
+
}).catch((err) => setErrors({ _form: err.message || 'Transition failed' }));
|
|
141
258
|
}
|
|
142
|
-
}, children: [_jsx("option", { value: "", children: "Transition to..." }),
|
|
143
|
-
}) })) }), _jsx("div", { className: "flex-1 overflow-auto", children: entitiesLoading ? (_jsx("div", { className: "flex items-center justify-center p-8 text-gray-500 dark:text-gray-400", children: "Loading..." })) : entities.length === 0 ? (_jsxs("div", { className: "flex items-center justify-center p-8 text-gray-500 dark:text-gray-400", children: ["No ", modelName, " entities yet"] })) : (_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-800 sticky top-0", children: _jsxs("tr", { children: [regularFields.map(f => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: f }, f))), metadataFields.slice(0, 2).map(f => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-400 dark:text-gray-500 uppercase tracking-wider italic", children: f }, f)))] }) }), _jsx("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: entities.map((entity) => {
|
|
259
|
+
}, children: [_jsx("option", { value: "", children: "Transition to..." }), validNextStates.map((state) => (_jsx("option", { value: state, children: humanizeFieldName(state) }, state)))] })) : (_jsx("span", { className: "ml-auto text-xs text-gray-400 dark:text-gray-500 italic", children: "No transitions available" }))] })] }, lcName));
|
|
260
|
+
}) })) }), _jsx("div", { className: "flex-1 overflow-auto", children: entitiesLoading ? (_jsx("div", { className: "flex items-center justify-center p-8 text-gray-500 dark:text-gray-400", children: "Loading..." })) : entities.length === 0 ? (_jsxs("div", { className: "flex items-center justify-center p-8 text-gray-500 dark:text-gray-400", children: ["No ", modelName, " entities yet"] })) : (_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-800 sticky top-0", children: _jsxs("tr", { children: [regularFields.map(f => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: f }, f))), relationshipEntries.filter(([_, r]) => r.type === 'belongsTo').map(([relName]) => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-blue-500 dark:text-blue-400 uppercase tracking-wider", children: relName }, relName))), lifecycleEntries.map(([lcName]) => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-purple-500 dark:text-purple-400 uppercase tracking-wider", children: lcName }, lcName))), metadataFields.slice(0, 2).map(f => (_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-400 dark:text-gray-500 uppercase tracking-wider italic", children: f }, f)))] }) }), _jsx("tbody", { className: "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700", children: entities.map((entity) => {
|
|
144
261
|
const data = entity.data || entity;
|
|
145
|
-
const isSelected = selectedEntity
|
|
146
|
-
return (_jsxs("tr", { onClick: () => handleSelectEntity(entity), className: `cursor-pointer transition-colors ${isSelected ? 'bg-blue-50 dark:bg-blue-900/20' : 'hover:bg-gray-50 dark:hover:bg-gray-800'}`, children: [regularFields.map(f => (_jsx("td", { className: "px-4 py-2 text-sm text-gray-900 dark:text-gray-100 truncate max-w-[200px]", children:
|
|
262
|
+
const isSelected = selectedEntity && getEntityId(selectedEntity) === getEntityId(entity);
|
|
263
|
+
return (_jsxs("tr", { onClick: () => handleSelectEntity(entity), className: `cursor-pointer transition-colors ${isSelected ? 'bg-blue-50 dark:bg-blue-900/20' : 'hover:bg-gray-50 dark:hover:bg-gray-800'}`, children: [regularFields.map(f => (_jsx("td", { className: "px-4 py-2 text-sm text-gray-900 dark:text-gray-100 truncate max-w-[200px]", children: formatDisplayValue(data[f]) }, f))), relationshipEntries.filter(([_, r]) => r.type === 'belongsTo').map(([relName, relDef]) => {
|
|
264
|
+
const fk = getForeignKeyName(relName, relDef);
|
|
265
|
+
const fkValue = data[fk];
|
|
266
|
+
const targetModel = relDef.targetModel || relDef.model;
|
|
267
|
+
return (_jsx("td", { className: "px-4 py-2 text-sm truncate max-w-[200px]", children: _jsx("span", { className: `${onNavigateToModel && fkValue ? 'text-blue-600 dark:text-blue-400 hover:underline cursor-pointer' : 'text-blue-600 dark:text-blue-400'}`, onClick: onNavigateToModel && fkValue ? (e) => {
|
|
268
|
+
e.stopPropagation();
|
|
269
|
+
onNavigateToModel(targetModel, fkValue);
|
|
270
|
+
} : undefined, children: resolveRelValue(entity, relName, relDef) }) }, relName));
|
|
271
|
+
}), lifecycleEntries.map(([lcName]) => {
|
|
272
|
+
const state = entity.metadata?.lifecycleStates?.[lcName] || data.lifecycleStates?.[lcName] || '';
|
|
273
|
+
return (_jsx("td", { className: "px-4 py-2", children: state && _jsx("span", { className: "px-2 py-0.5 bg-purple-100 dark:bg-purple-900 text-purple-800 dark:text-purple-200 rounded text-xs font-medium", children: state }) }, lcName));
|
|
274
|
+
}), metadataFields.slice(0, 2).map(f => (_jsx("td", { className: "px-4 py-2 text-xs text-gray-400 dark:text-gray-500 italic truncate max-w-[150px]", children: formatDisplayValue(data[f]) }, f)))] }, getEntityId(entity)));
|
|
147
275
|
}) })] })) })] }));
|
|
148
276
|
}
|
|
149
|
-
/**
|
|
150
|
-
function
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (t.includes('int') || t.includes('number') || t.includes('float') || t.includes('decimal')) {
|
|
157
|
-
return (_jsx("input", { type: "number", value: value ?? '', onChange: (e) => onChange(e.target.value ? Number(e.target.value) : ''), className: inputClass }));
|
|
158
|
-
}
|
|
159
|
-
if (t.includes('datetime')) {
|
|
160
|
-
return (_jsx("input", { type: "datetime-local", value: value ? String(value).slice(0, 16) : '', onChange: (e) => onChange(e.target.value ? new Date(e.target.value).toISOString() : ''), className: inputClass }));
|
|
161
|
-
}
|
|
162
|
-
if (t.includes('date')) {
|
|
163
|
-
return (_jsx("input", { type: "date", value: value ? String(value).slice(0, 10) : '', onChange: (e) => onChange(e.target.value), className: inputClass }));
|
|
164
|
-
}
|
|
165
|
-
if (name.toLowerCase().includes('description') || name.toLowerCase().includes('body') || name.toLowerCase().includes('content')) {
|
|
166
|
-
return (_jsx("textarea", { rows: 4, value: value ?? '', onChange: (e) => onChange(e.target.value), className: inputClass }));
|
|
167
|
-
}
|
|
168
|
-
return (_jsx("input", { type: "text", value: value ?? '', onChange: (e) => onChange(e.target.value), className: inputClass }));
|
|
169
|
-
}
|
|
170
|
-
function formatCellValue(value) {
|
|
171
|
-
if (value === null || value === undefined)
|
|
172
|
-
return '-';
|
|
173
|
-
if (typeof value === 'boolean')
|
|
174
|
-
return value ? 'Yes' : 'No';
|
|
175
|
-
if (value instanceof Date)
|
|
176
|
-
return value.toLocaleDateString();
|
|
177
|
-
if (typeof value === 'string' && value.match(/^\d{4}-\d{2}-\d{2}T/)) {
|
|
178
|
-
return new Date(value).toLocaleDateString();
|
|
277
|
+
/** Fetches entities for a related model and stores in shared ref for relationship resolution */
|
|
278
|
+
function RelatedModelFetcher({ modelName, entitiesRef }) {
|
|
279
|
+
const ctx = useRuntimeContext();
|
|
280
|
+
const { data } = ctx.useEntitiesQuery(`${modelName}Controller`, modelName);
|
|
281
|
+
// Store in shared ref (doesn't trigger re-render — parent re-renders from its own entity query)
|
|
282
|
+
if (data) {
|
|
283
|
+
entitiesRef.current[modelName] = data;
|
|
179
284
|
}
|
|
180
|
-
return
|
|
285
|
+
return null;
|
|
181
286
|
}
|
|
182
287
|
//# sourceMappingURL=ModelManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelManager.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelSelector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelSelector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,kBAAkB,2CA6E3H"}
|
|
@@ -38,6 +38,9 @@ export function ModelSelector({ models: modelsOverride, selectedModel: selectedO
|
|
|
38
38
|
return (_jsx("li", { onClick: () => handleSelect(model), className: `px-2 py-1.5 rounded cursor-pointer border transition-all text-sm ${isSelected
|
|
39
39
|
? 'bg-blue-50 dark:bg-blue-900/30 border-blue-500 dark:border-blue-600 text-blue-700 dark:text-blue-200'
|
|
40
40
|
: 'border-transparent hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300'}`, children: model }, model));
|
|
41
|
-
}) })] }), _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: selected ? (_jsx(ModelManager, { modelName: selected, controllerName: `${selected}Controller
|
|
41
|
+
}) })] }), _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: selected ? (_jsx(ModelManager, { modelName: selected, controllerName: `${selected}Controller`, onNavigateToModel: (targetModel) => {
|
|
42
|
+
setSelected(targetModel);
|
|
43
|
+
onSelectModel?.(targetModel);
|
|
44
|
+
} })) : (_jsx("div", { className: "flex-1 flex items-center justify-center text-gray-500 dark:text-gray-400", children: "Select a model to manage" })) })] }));
|
|
42
45
|
}
|
|
43
46
|
//# sourceMappingURL=ModelSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelSelector.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAsB;IAC1H,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEnE,0CAA0C;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAW,CAAC;QAC7B,IAAI,IAAI,EAAE,MAAM;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAElF,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aAEtC,eACE,SAAS,EAAC,2HAA2H,EACrI,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,EAAE,aAE9E,aAAI,SAAS,EAAC,qFAAqF,uBAE9F,EACL,aAAI,SAAS,EAAC,sDAAsD,YACjE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BACpB,MAAM,UAAU,GAAG,KAAK,KAAK,QAAQ,CAAC;4BACtC,OAAO,CACL,aAEE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAClC,SAAS,EAAE,oEACT,UAAU;oCACR,CAAC,CAAC,sGAAsG;oCACxG,CAAC,CAAC,6FACN,EAAE,YAED,KAAK,IARD,KAAK,CASP,CACN,CAAC;wBACJ,CAAC,CAAC,GACC,IACD,EAEN,KAAC,YAAY,IAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,GAAI,EAGpE,cAAK,SAAS,EAAC,mIAAmI,YAC/I,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OperationExecutor — Execute service operations with type-aware inputs.
|
|
3
|
+
*
|
|
4
|
+
* UUID params ending in 'Id' get entity dropdowns, others get typed inputs.
|
|
5
|
+
* Uses RuntimeViewProvider context for API calls.
|
|
6
|
+
*/
|
|
7
|
+
export interface OperationExecutorProps {
|
|
8
|
+
serviceName: string;
|
|
9
|
+
operationName: string;
|
|
10
|
+
parameters?: Record<string, any>;
|
|
11
|
+
requires?: string[];
|
|
12
|
+
source?: 'service' | 'controller';
|
|
13
|
+
}
|
|
14
|
+
export declare function OperationExecutor({ serviceName, operationName, parameters, source }: OperationExecutorProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=OperationExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationExecutor.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAkB,EAAE,EAAE,sBAAsB,2CAkHvH"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* OperationExecutor — Execute service operations with type-aware inputs.
|
|
4
|
+
*
|
|
5
|
+
* UUID params ending in 'Id' get entity dropdowns, others get typed inputs.
|
|
6
|
+
* Uses RuntimeViewProvider context for API calls.
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useMemo } from 'react';
|
|
9
|
+
import { useRuntimeContext } from '../context.js';
|
|
10
|
+
import { FieldInput } from './FieldInput.js';
|
|
11
|
+
import { EntitySelect } from './EntitySelect.js';
|
|
12
|
+
import { OperationResultView } from './OperationResultView.js';
|
|
13
|
+
export function OperationExecutor({ serviceName, operationName, parameters, source = 'service' }) {
|
|
14
|
+
const ctx = useRuntimeContext();
|
|
15
|
+
const apiBase = ctx.apiBaseUrl || '/api';
|
|
16
|
+
const executeMutation = ctx.useExecuteOperationMutation();
|
|
17
|
+
const [params, setParams] = useState({});
|
|
18
|
+
const [loading, setLoading] = useState(false);
|
|
19
|
+
const [result, setResult] = useState(null);
|
|
20
|
+
const [error, setError] = useState(null);
|
|
21
|
+
const primaryModel = serviceName.replace(/Service$/, '').replace(/Controller$/, '');
|
|
22
|
+
const controllerName = source === 'controller' ? serviceName : primaryModel + 'Controller';
|
|
23
|
+
const paramDefs = useMemo(() => {
|
|
24
|
+
if (!parameters)
|
|
25
|
+
return [];
|
|
26
|
+
const entries = Array.isArray(parameters)
|
|
27
|
+
? parameters.map((p) => [p.name, p])
|
|
28
|
+
: Object.entries(parameters);
|
|
29
|
+
return entries.map(([name, def]) => {
|
|
30
|
+
const typeStr = typeof def === 'string' ? def : def?.type || '';
|
|
31
|
+
const isUuid = typeStr.toLowerCase().includes('uuid');
|
|
32
|
+
let refModel = null;
|
|
33
|
+
if (isUuid && name.endsWith('Id')) {
|
|
34
|
+
refModel = name.slice(0, -2).charAt(0).toUpperCase() + name.slice(0, -2).slice(1);
|
|
35
|
+
}
|
|
36
|
+
return { name, type: typeStr, isUuid, refModel };
|
|
37
|
+
});
|
|
38
|
+
}, [parameters]);
|
|
39
|
+
const execute = async () => {
|
|
40
|
+
setLoading(true);
|
|
41
|
+
setError(null);
|
|
42
|
+
setResult(null);
|
|
43
|
+
try {
|
|
44
|
+
let data;
|
|
45
|
+
if (source === 'controller') {
|
|
46
|
+
data = await executeMutation.mutateAsync({
|
|
47
|
+
controllerName,
|
|
48
|
+
operationName,
|
|
49
|
+
data: params,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const res = await fetch(`${apiBase}/services/${serviceName}/${operationName}`, {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
headers: { 'Content-Type': 'application/json' },
|
|
56
|
+
body: JSON.stringify(params),
|
|
57
|
+
});
|
|
58
|
+
data = await res.json();
|
|
59
|
+
}
|
|
60
|
+
setResult(data);
|
|
61
|
+
if (!data.success)
|
|
62
|
+
setError(data.error?.message || 'Operation failed');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
setError(err.message);
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
setLoading(false);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return (_jsxs("div", { className: "mt-3 pt-3 border-t border-gray-200 dark:border-gray-600 space-y-2", children: [paramDefs.length > 0 ? (paramDefs.map(param => {
|
|
72
|
+
let filterBy;
|
|
73
|
+
if (param.refModel) {
|
|
74
|
+
for (const other of paramDefs) {
|
|
75
|
+
if (other === param || !other.refModel)
|
|
76
|
+
continue;
|
|
77
|
+
const fk = other.refModel.charAt(0).toLowerCase() + other.refModel.slice(1) + 'Id';
|
|
78
|
+
if (params[other.name]) {
|
|
79
|
+
filterBy = { ...filterBy, [fk]: params[other.name] };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "text-xs text-gray-500 dark:text-gray-400 w-24 flex-shrink-0 truncate", title: param.name, children: param.name }), param.refModel ? (_jsx(EntitySelect, { modelName: param.refModel, value: params[param.name] || '', onChange: v => setParams(prev => ({ ...prev, [param.name]: v })), filterBy: filterBy, compact: true })) : (_jsx(FieldInput, { name: param.name, typeStr: param.type, value: params[param.name], onChange: v => setParams(prev => ({ ...prev, [param.name]: v })), compact: true }))] }, param.name));
|
|
84
|
+
})) : (_jsx("p", { className: "text-xs text-gray-400 italic", children: "No parameters defined" })), _jsx("button", { onClick: execute, disabled: loading, className: "w-full px-3 py-1.5 bg-blue-600 hover:bg-blue-700 text-white text-xs font-medium rounded flex items-center justify-center gap-1 disabled:opacity-50", children: loading ? 'Executing...' : `Execute ${operationName}` }), error && !result && (_jsx("pre", { className: "p-2 text-xs text-red-400 bg-red-50 dark:bg-red-900/20 rounded overflow-x-auto", children: error })), result && _jsx(OperationResultView, { result: result })] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=OperationExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationExecutor.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationExecutor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OperationResultView — Formatted display of operation execution results.
|
|
3
|
+
*
|
|
4
|
+
* Renders success/failure status, preconditions, steps, events, and return values.
|
|
5
|
+
*/
|
|
6
|
+
export interface OperationResultViewProps {
|
|
7
|
+
result: any;
|
|
8
|
+
}
|
|
9
|
+
export declare function OperationResultView({ result }: OperationResultViewProps): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=OperationResultView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationResultView.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/OperationResultView.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,GAAG,CAAC;CACb;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE,wBAAwB,kDA2HvE"}
|