fix: version 4.2.2 -- Equipos ya no da falso conflicto al guardar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# Changelog - project.linkedcorp.net
|
# Changelog - project.linkedcorp.net
|
||||||
|
|
||||||
|
## [4.2.2] - 2026-10-26
|
||||||
|
### Fixed
|
||||||
|
- Equipos: guardar cambios (usuario asignado, departamento, estado, notas) siempre mostraba "El
|
||||||
|
registro cambió" aunque nadie más lo hubiera editado. La verificación previa al guardado
|
||||||
|
comparaba los datos sin la versión de edición contra un borrador que sí la tenía; ahora ambos
|
||||||
|
usan el mismo formato.
|
||||||
|
|
||||||
## [4.2.1] - 2026-10-23
|
## [4.2.1] - 2026-10-23
|
||||||
### Changed
|
### Changed
|
||||||
- La IA ya no está orientada solo a TI: planifica e informa proyectos de cualquier área
|
- La IA ya no está orientada solo a TI: planifica e informa proyectos de cualquier área
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "project-linkedcorp-backend",
|
"name": "project-linkedcorp-backend",
|
||||||
"version": "4.2.1",
|
"version": "4.2.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/server.js",
|
"main": "src/server.js",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "project-linkedcorp-frontend",
|
"name": "project-linkedcorp-frontend",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "4.2.1",
|
"version": "4.2.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -56,6 +56,10 @@ function SimpleTable({ columns, rows, empty }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Valores editables del equipo; el mismo formato para `initial` y para `fetchCurrent` (incluida
|
||||||
|
// editVersion: si falta en uno de los dos, las huellas nunca coinciden y todo guardado da conflicto).
|
||||||
|
const toForm = (d) => ({ status: d.status, assignedUserId: d.assigned_user_id || '', departmentId: d.department_id || '', notes: d.notes || '', editVersion: d.edit_version });
|
||||||
|
|
||||||
function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabChange }) {
|
function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabChange }) {
|
||||||
const { t, pushToast } = useUi();
|
const { t, pushToast } = useUi();
|
||||||
const runAction = useAction();
|
const runAction = useAction();
|
||||||
@@ -69,7 +73,7 @@ function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabC
|
|||||||
// Borrador de los datos editables del equipo (estado, asignado, departamento, notas).
|
// Borrador de los datos editables del equipo (estado, asignado, departamento, notas).
|
||||||
const draft = useDraftForm({
|
const draft = useDraftForm({
|
||||||
formId: 'device-edit', entityId: id,
|
formId: 'device-edit', entityId: id,
|
||||||
initial: device ? { status: device.status, assignedUserId: device.assigned_user_id || '', departmentId: device.department_id || '', notes: device.notes || '', editVersion: device.edit_version } : {},
|
initial: device ? toForm(device) : {},
|
||||||
label: `${t('eq_detail')}: ${device?.hostname || id}`, enabled: !!device && canEdit && tab === 'general', onDiscard: () => setEditing(false),
|
label: `${t('eq_detail')}: ${device?.hostname || id}`, enabled: !!device && canEdit && tab === 'general', onDiscard: () => setEditing(false),
|
||||||
});
|
});
|
||||||
const form = draft.values;
|
const form = draft.values;
|
||||||
@@ -99,7 +103,7 @@ function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabC
|
|||||||
await reload();
|
await reload();
|
||||||
onChanged();
|
onChanged();
|
||||||
pushToast({ tone: 'success', message: t('common_saved') });
|
pushToast({ tone: 'success', message: t('common_saved') });
|
||||||
}), { fetchCurrent: async () => { const d = await getDevice(id); return { status: d.status, assignedUserId: d.assigned_user_id || '', departmentId: d.department_id || '', notes: d.notes || '' }; } });
|
}), { fetchCurrent: async () => toForm(await getDevice(id)) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!device) return <div className="text-muted">{t('common_loading')}</div>;
|
if (!device) return <div className="text-muted">{t('common_loading')}</div>;
|
||||||
|
|||||||
Reference in New Issue
Block a user