J’ai l’impression que quand je modifie par code mon modèle en mode silent (hidden = true) et que je save, le png du modèle est blanc. Le SVG lui est bien enregistré.
function save() {
diagram.save(function() {
// Close hidden model
diagram.close(false);
// Re-open in a window
if (open)
$ui.displayModeler(null, diagram.modelId, { svg:true, docked:false });
}, true);
}
Quand je clique sur la disquette et que je regarde le modèle j’ai bien le png
L’image est générée en front dans le diagram.save via la méthode diagram.desktop.getImage(format, scale, cbk).
Si l’image est vide c’est peut être qu’il faut nécessairement que le SVG soit visible pour pouvoir être dessiné dans un context graphique (via un canvas temporaire) puis être converti en image data:image/png.
Essayez de voir si l’image est bien générée en entrant dans la méthode getImage via le débugger du navigateur, en changeant un peu votre code :
L’image est blanche dans le debugger du navigateur.
J’ai essayé d’ajouter un save après le display du modeler mais ça ne génère pas l’image non plus.
Et si je génère mon modèle avec hidden = false, plus rien ne fonctionne.
Je vais faire des tests pour voir.
A mon avis, le moteur SVG ne dessine rien (ou ne se rafraichit pas) si la zone est invisible.
Il va surement falloir faire une petite évolution dans Simplicité au diagram.save pour dessiner le modèle dans une zone visible (si possible cachée de l’utilisateur) pour générer une image non vide quand hidden:true.
C’était bien ça le problème, quand la zone du diagramme est en CSS display:none, alors le SVG n’est pas dessiné. La zone sera désormais visible mais en dehors de l’écran.
A tester dans votre cas quand l’évolution aura été livrée, dans mes tests cela fonctionne en ouvrant un modèle existant sans image, le save regénère bien l’image complète.
Au debugger on peut voir la div cachée en bas du <body>.
var mod = app.getBusinessObject("Model");
mod.get(function() {
$ui.diagram.open(modelId, { svg:true, hidden:true }, function(diagram) {
debugger
diagram.save(function() {
// Close hidden model
diagram.close(false);
// To see the generated image
$ui.displayForm(null, "Model", modelId, { nav: "add"});
}, true);
});
}, modelId, {
inlineDocs: true
});