- bug TRA-68 solved - bug in javascript code did not pass changed json content.
This commit is contained in:
@@ -40,10 +40,10 @@ window.EveAI.JsonEditors = {
|
|||||||
mainMenuBar: options.mainMenuBar !== undefined ? options.mainMenuBar : true,
|
mainMenuBar: options.mainMenuBar !== undefined ? options.mainMenuBar : true,
|
||||||
navigationBar: options.navigationBar !== undefined ? options.navigationBar : false,
|
navigationBar: options.navigationBar !== undefined ? options.navigationBar : false,
|
||||||
statusBar: options.statusBar !== undefined ? options.statusBar : !isReadOnly,
|
statusBar: options.statusBar !== undefined ? options.statusBar : !isReadOnly,
|
||||||
onChange: (updatedContent, previousContent, { contentErrors, patchResult }) => {
|
onChange: options.onChange || ((updatedContent, previousContent, { contentErrors, patchResult }) => {
|
||||||
// content is an object { json: unknown } | { text: string }
|
// Default onChange behavior - alleen loggen
|
||||||
console.log('onChange', { updatedContent, previousContent, contentErrors, patchResult })
|
console.log('onChange', { updatedContent, previousContent, contentErrors, patchResult });
|
||||||
}
|
})
|
||||||
};
|
};
|
||||||
console.log('EditorProps', editorProps);
|
console.log('EditorProps', editorProps);
|
||||||
|
|
||||||
@@ -107,13 +107,51 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
window.EveAI.JsonEditors.initialize(containerId, data, {
|
window.EveAI.JsonEditors.initialize(containerId, data, {
|
||||||
mode: isReadOnly ? 'preview' : 'tree',
|
mode: isReadOnly ? 'preview' : 'tree',
|
||||||
readOnly: isReadOnly,
|
readOnly: isReadOnly,
|
||||||
onChangeText: isReadOnly ? undefined : (jsonString) => { textarea.value = jsonString; }
|
onChange: isReadOnly ? undefined : (updatedContent, previousContent, { contentErrors, patchResult }) => {
|
||||||
|
// Automatische synchronisatie naar textarea bij elke wijziging
|
||||||
|
if (updatedContent.json !== undefined) {
|
||||||
|
textarea.value = JSON.stringify(updatedContent.json, null, 2);
|
||||||
|
} else if (updatedContent.text !== undefined) {
|
||||||
|
textarea.value = updatedContent.text;
|
||||||
|
}
|
||||||
|
console.log('Textarea automatisch bijgewerkt via onChange');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Error parsing initial JSON for .json-editor:', e);
|
console.error('Error parsing initial JSON for .json-editor:', e);
|
||||||
container.innerHTML = `<div class="alert alert-danger p-3"><strong>Error loading JSON data:</strong><br>${e.message}</div>`;
|
container.innerHTML = `<div class="alert alert-danger p-3"><strong>Error loading JSON data:</strong><br>${e.message}</div>`;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Real-time synchronisatie als extra beveiliging
|
||||||
|
setInterval(function() {
|
||||||
|
document.querySelectorAll('.json-editor').forEach(function(textarea) {
|
||||||
|
if (textarea.style.display === 'none') { // Alleen voor verborgen textareas (zoals in edit forms)
|
||||||
|
const containerId = textarea.id + '-editor';
|
||||||
|
const editor = window.EveAI?.JsonEditors?.get(containerId);
|
||||||
|
if (editor && editor.get) {
|
||||||
|
try {
|
||||||
|
const content = editor.get();
|
||||||
|
let newValue = '';
|
||||||
|
if (content.json !== undefined) {
|
||||||
|
newValue = JSON.stringify(content.json, null, 2);
|
||||||
|
} else if (content.text !== undefined) {
|
||||||
|
newValue = content.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alleen updaten als de waarde daadwerkelijk is veranderd
|
||||||
|
if (textarea.value !== newValue) {
|
||||||
|
textarea.value = newValue;
|
||||||
|
console.log('Real-time sync uitgevoerd voor', textarea.id);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Stil falen - geen console spam
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000); // Elke seconde controleren
|
||||||
|
|
||||||
// Alleen-lezen containers
|
// Alleen-lezen containers
|
||||||
document.querySelectorAll('.json-viewer').forEach(function(container) {
|
document.querySelectorAll('.json-viewer').forEach(function(container) {
|
||||||
const dataElement = document.getElementById(container.id + '-data');
|
const dataElement = document.getElementById(container.id + '-data');
|
||||||
|
|||||||
@@ -77,122 +77,42 @@
|
|||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const textareaElement = document.getElementById('json_content');
|
const textareaElement = document.getElementById('json_content');
|
||||||
let currentEditor = null;
|
|
||||||
|
|
||||||
// Wacht even en probeer dan de editor te krijgen via de EveAI namespace
|
|
||||||
setTimeout(function() {
|
|
||||||
currentEditor = window.EveAI?.JsonEditors?.get('json_content-editor');
|
|
||||||
if (currentEditor) {
|
|
||||||
console.log('JSON Editor gevonden en gekoppeld');
|
|
||||||
} else {
|
|
||||||
console.log('JSON Editor nog niet beschikbaar, probeer handmatige initialisatie');
|
|
||||||
|
|
||||||
// Probeer handmatige initialisatie als fallback
|
|
||||||
if (window.EveAI?.JsonEditors?.initialize) {
|
|
||||||
try {
|
|
||||||
const initialContent = JSON.parse(textareaElement.value);
|
|
||||||
currentEditor = window.EveAI.JsonEditors.initialize('json_content-editor', initialContent, {
|
|
||||||
mode: 'tree',
|
|
||||||
readOnly: false,
|
|
||||||
mainMenuBar: true,
|
|
||||||
navigationBar: false,
|
|
||||||
statusBar: true,
|
|
||||||
onChange: (updatedContent, previousContent, { contentErrors, patchResult }) => {
|
|
||||||
console.log('Editor content changed');
|
|
||||||
// Automatisch de textarea updaten bij wijzigingen
|
|
||||||
syncEditorToTextarea();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
console.error('Error bij handmatige initialisatie:', e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 500);
|
|
||||||
|
|
||||||
// Functie om editor inhoud naar textarea te synchroniseren
|
// Functie om editor inhoud naar textarea te synchroniseren
|
||||||
function syncEditorToTextarea() {
|
function syncEditorToTextarea() {
|
||||||
if (currentEditor && currentEditor.get) {
|
const editor = window.EveAI?.JsonEditors?.get('json_content-editor');
|
||||||
|
if (editor && editor.get) {
|
||||||
try {
|
try {
|
||||||
const content = currentEditor.get();
|
const content = editor.get();
|
||||||
if (content.json !== undefined) {
|
if (content.json !== undefined) {
|
||||||
textareaElement.value = JSON.stringify(content.json, null, 2);
|
textareaElement.value = JSON.stringify(content.json, null, 2);
|
||||||
} else if (content.text !== undefined) {
|
} else if (content.text !== undefined) {
|
||||||
textareaElement.value = content.text;
|
textareaElement.value = content.text;
|
||||||
}
|
}
|
||||||
console.log('Editor content gesynchroniseerd naar textarea');
|
console.log('Editor content gesynchroniseerd naar textarea');
|
||||||
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Error bij synchronisatie:', e);
|
console.error('Error bij synchronisatie:', e);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sync knop
|
// Form submission validation en synchronisatie
|
||||||
document.getElementById('getEditorContentBtn').addEventListener('click', function() {
|
|
||||||
syncEditorToTextarea();
|
|
||||||
alert('Editor inhoud gesynchroniseerd naar textarea');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Validate JSON button
|
|
||||||
document.getElementById('validateJsonBtn').addEventListener('click', function() {
|
|
||||||
// Eerst synchroniseren
|
|
||||||
syncEditorToTextarea();
|
|
||||||
|
|
||||||
try {
|
|
||||||
const content = textareaElement.value;
|
|
||||||
JSON.parse(content);
|
|
||||||
|
|
||||||
// Show success message
|
|
||||||
if (typeof Swal !== 'undefined') {
|
|
||||||
Swal.fire({
|
|
||||||
title: 'Geldig JSON',
|
|
||||||
text: 'De JSON syntax is correct!',
|
|
||||||
icon: 'success',
|
|
||||||
timer: 2000,
|
|
||||||
showConfirmButton: false
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
alert('De JSON syntax is correct!');
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
// Show error message
|
|
||||||
if (typeof Swal !== 'undefined') {
|
|
||||||
Swal.fire({
|
|
||||||
title: 'Ongeldig JSON',
|
|
||||||
text: 'JSON syntax fout: ' + e.message,
|
|
||||||
icon: 'error',
|
|
||||||
confirmButtonText: 'OK'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
alert('JSON syntax fout: ' + e.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Form submission validation
|
|
||||||
document.getElementById('editAssetForm').addEventListener('submit', function(e) {
|
document.getElementById('editAssetForm').addEventListener('submit', function(e) {
|
||||||
// Eerst de editor content synchroniseren
|
// Eerst de editor content synchroniseren
|
||||||
syncEditorToTextarea();
|
if (!syncEditorToTextarea()) {
|
||||||
|
console.warn('Synchronisatie gefaald, maar probeer toch door te gaan');
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const content = textareaElement.value;
|
const content = textareaElement.value;
|
||||||
JSON.parse(content);
|
JSON.parse(content);
|
||||||
|
return true; // JSON is valid, allow submission
|
||||||
// JSON is valid, allow submission
|
|
||||||
return true;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
alert('Kan het formulier niet verzenden: JSON syntax fout - ' + error.message);
|
||||||
if (typeof Swal !== 'undefined') {
|
|
||||||
Swal.fire({
|
|
||||||
title: 'Ongeldig JSON',
|
|
||||||
text: 'Kan het formulier niet verzenden: JSON syntax fout - ' + error.message,
|
|
||||||
icon: 'error',
|
|
||||||
confirmButtonText: 'OK'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
alert('Kan het formulier niet verzenden: JSON syntax fout - ' + error.message);
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -870,8 +870,11 @@ def edit_asset(asset_id):
|
|||||||
try:
|
try:
|
||||||
# Haal de bewerkte JSON data op uit het formulier
|
# Haal de bewerkte JSON data op uit het formulier
|
||||||
json_data = request.form.get('json_content')
|
json_data = request.form.get('json_content')
|
||||||
|
current_app.logger.debug(f"Raw JSON data received for asset {asset_id}: {json_data[:200] if json_data else 'None'}...")
|
||||||
|
current_app.logger.debug(f"JSON data length: {len(json_data) if json_data else 0}")
|
||||||
|
|
||||||
if not json_data:
|
if not json_data:
|
||||||
|
current_app.logger.error(f"No JSON data received for asset {asset_id}")
|
||||||
flash('Geen JSON data ontvangen', 'error')
|
flash('Geen JSON data ontvangen', 'error')
|
||||||
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
|
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user