Graphe v15 vers v17R3

Bonjour,

Je m’interroge sur une possible régression de la structure du SVG lors de la construction d’un graphique circulaire entre la version v15 et la version v17R3.

SVG en version v15 : balise avec id=“ID_graph_1”
[]28520778;“SVG en version v15”[/]

SVG en version v17R3 : balise avec id=“ID_bar_1”
[]28520807;“SVG en version v17R3”[/]

Utilisant les méthodes XML pour modifier le SVG généré par Graphe (pour un rendu plus ‘joli’), j’ai été surpris d’un tel changement entre les deux versions (balises, id, …) !

Avant de modifier mon code, d’autres développeurs se sont-ils interrogés sur ce sujet ?

Merci.

: Benoit BARON

Je m’interroge sur une possible régression de la structure du SVG
lors de la construction d’un graphique circulaire entre la version
v15 et la version v17R3.

Ce https://forums.4d.com/Post/FR/27454585/2/27652497#27652497post> peut être intéressant à lire

Bonjour Benoît,

Je présume que vous avez constaté cela avec la version 64 bits de 4D ?
Il est en effet possible (vraisemblable) que des IDs aient changés, mais si vous modifiez votre code, soyez sur que ces changements ont eu lieu en v16 et qu’ils n’ont pas bougé depuis et ne bougeront en principe plus (je me souviens que des bugs d’IDs ont été fixés aussi, des IDs ont été ajoutés aussi si mes souvenirs sont bons…)

Pour votre information et pour que tout soit clair… en 64 bits, les graphes ne sont plus générés (en interne) via une transformation SSLT comme c’était le cas avant mais (toujours en interne) via un “process 4D tags”.

*** pour aller plus loin ***

Les graphes sont maintenant basés sur des “templates” qui se trouvent dans les resources de 4D et que vous pouvez si vous le désirer copier à côté de votre structure si vous souhaitez les “customiser”; le dossier “GraphTemplates” près de la structure sera pris en priorité par rapport à celui des resources 4D.

Cela demande bien sur une connaissance à la fois des tags 4D pris en compte lors de l’exécution de la commande “Process 4D Tags” et aussi du SVG (ce que vous semblez avoir :slight_smile:

Le fichier Graph_0_Template.svg est commun est est concaténé avec les fichiers Graph_x_Template.svg avant la transformation (interne) via process 4D Tags. Vous verrez beaucoup de code 4D dans ces templates (au moins autant si ce n’est plus que du SVG !)

Bonne journée et bon SVG !

Roland

Bonjour Roland,

Merci pour cette réponse.

Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

Encore une ou deux questions :pray:

Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?

https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates :roll:

c’est parti !

Benoit.

(re)bonjour

<<
Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

On a fait “au plus proche” (désolé pour les changements d’IDs) mais faire rigoureusement identique était quasi impossible (seuls les extra-terrestres parlent le XSL et on n’en pas pas sous la main…)
L’avantage (si si) c’est de que des commentaires ont été glissés dans le SVG ainsi que dans le code 4D pour mieux pouvoir repérer les blocs.

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non… je vais le signaler :slight_smile:

<<
Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Non, je ne crois pas, c’est semi-officiel et réservé aux fidèles lecteurs du forum…

<<
Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates

C’est essentiellement du code 4D, il est situé entre les balises

Si vous voulez -vraiment- aller loin, vous pouvez vous même concatener les fichiers Graph_0_Template.svg et Graph_X_Template.svg et faire un PROCESS 4D TAGS… vous obtiendrez bien un SVG valide :slight_smile:

(Attention, la commande PROCESS 4D TAGS peut maintenant recevoir des paramètres, et dans le cas des graphes elle DOIT en recevoir !)

Cordialement,

Roland Lannuzel

(re)bonjour

<<
Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

On a fait “au plus proche” (désolé pour les changements d’IDs) mais faire rigoureusement identique était quasi impossible (seuls les extra-terrestres parlent le XSL et on n’en pas pas sous la main…)
L’avantage (si si) c’est de que des commentaires ont été glissés dans le SVG ainsi que dans le code 4D pour mieux pouvoir repérer les blocs.

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non… je vais le signaler :slight_smile:

<<
Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Non, je ne crois pas, c’est semi-officiel et réservé aux fidèles lecteurs du forum…

<<
Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates

C’est essentiellement du code 4D, il est situé entre les balises #4DCODE

Si vous voulez -vraiment- aller loin, vous pouvez vous même concatener les fichiers Graph_0_Template.svg et Graph_X_Template.svg et faire un PROCESS 4D TAGS… vous obtiendrez bien un SVG valide :slight_smile:

(Attention, la commande PROCESS 4D TAGS peut maintenant recevoir des paramètres, et dans le cas des graphes elle DOIT en recevoir !)

Cordialement,

Roland Lannuzel

Roland,

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en
v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que
les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non…je vais le signaler Smile

Tu vas signaler qu’il faut changer les IDs dans la génération ou la documentation ? :wink:

Après visu des templates :frowning: je vais plutôt modifier les recherches XML dans mon code pour coller au nouveau SVG généré !
Le plus urgent étant le passage en 4DWritePro :-? :wink:

Encore merci pour les réponses,
Benoit.

je viens de verifier dans les graphes, les ID sont bien:

ID_graph_shadow_1 à ID_graph_shadow_8
ID_graph_1 à ID_graph_8
ID_legend_1 à ID_legend_8

etc.

Après avoir creusé un peu (ouvert tous les templates SVG) j’ai remarqué que dans le template 1 les IDs sont bien ID_graph_x alors que dans le template 7 (graphe circulaire) les IDs sont ID_bar_x !!!

Pourquoi ?

re-re-rebonjour :slight_smile:

Pour le graph “pie” (7) c’est une anomalie, mais difficilement corrigeable… sinon d’autres personnes
risqueraient de se trouver dans la même situation que vous…

Si elle avait été signalée dès la sortie de la v16 64 bits, ca n’aurait pas eu beaucoup d’impact. Maintenant c’est “trop tard” et il faudra vivre avec :slight_smile:

C’est sans doute dû au fait que le graphe circulaire est traité “à part” puisqu’il n’a qu’une seule série.

Roland

Ok Roland :lol: ,
Mais c’est dommage de laisser une telle incohérence dans le template 7 fourni par 4D !

Et, sauf erreur de ma part, je pense qu’il serait bon aussi de revoir les autres templates car pour moi seul le template 1 est correct au niveau des IDs (selon la documentation).

Voici le code trouvé dans différents templates :

template 1 : ok (ID_graph_shadow_x et ID_graph_x)
Code :
For ($i;1;2) //First loop for SHADOWS, second for COLOURED bars
For ($serie;1;$nbSeries)
If ($i=1)
$svg:=$svg+""
Else
$svg:=$svg+""
End if

template 2 : pas ok (2 x ID_graph_shadow_x)
Code :
For ($i;1;2) //First for SHADOWS, second for COLOURED bars

		ARRAY REAL:C219($_memoYPos;0)
		ARRAY REAL:C219($_memoYNeg;0)
		ARRAY REAL:C219($_memoYPos;$NbValues)
		ARRAY REAL:C219($_memoYNeg;$NbValues)

		For ($serie;1;$nbSeries)

			If ($i=1)
				$svg:=$svg+"<g fill='black' fill-opacity='0.2' id='ID_graph_shadow_"+String:C10($serie)+"'>"
			Else 
				$svg:=$svg+"<g fill='"+$barColors{$serie}+"' fill-opacity='1' filter='none' id='ID_graph_shadow_"+String:C10($serie)+"' opacity='1' stroke='none' stroke-opacity='1' stroke-width='0'>"
			End if 

template 3 : pas ok (2 x ID_graph_shadow_x)
Code :
For ($i;1;2) //First for SHADOWS, second for COLOURED bars

	ARRAY REAL:C219($_memoYPos;0)
	ARRAY REAL:C219($_memoYNeg;0)
	ARRAY REAL:C219($_memoYPos;$NbValues)
	ARRAY REAL:C219($_memoYNeg;$NbValues)

	For ($serie;1;$nbSeries)

		If ($i=1)
			$svg:=$svg+"<g fill='black' fill-opacity='0.2' id='ID_graph_shadow_"+String:C10($serie)+"'>"
		Else 
			$svg:=$svg+"<g fill='"+$barColors{$serie}+"' fill-opacity='1' filter='none' id='ID_graph_shadow_"+String:C10($serie)+"' opacity='1' stroke='none' stroke-opacity='1' stroke-width='0'>"
		End if 

template 7 : pas ok (ID_graph_shadow_x et ID_bar_x)
Code :
For ($i;1;3) //First for SHADOWS, second for COLOURED bars, third labels %

$SumAngle:=$startAngle

For ($value;1;$NbValues)
	
	Case of 
		: ($i=1)
			$svg:=$svg+"<g fill='black' fill-opacity='0.2' id='ID_graph_shadow_"+String($value)+"'>"
		: ($i=2)
			$svg:=$svg+"<g fill='"+$barColors{$value}+"' filter='none' id='ID_bar_"+String($value)+"' opacity='1' stroke='none' stroke-opacity='1' stroke-width='0'>"
		: ($i=3)
			$svg:=$svg+"<g fill='"+$barColors{$value}+"' filter='none' id='ID_pie_label_"+String($value)+"' opacity='1' stroke='none' stroke-opacity='1' stroke-width='0'>"
	End case 

Il aurait été, quand même, bon d’uniformiser les différents templates de graphe.
Il ne me reste plus qu’à modifier les templates pour coller à la documentation.

Dans tous les cas ,merci pour toutes ces informations très utiles et ces réponses rapides.

Benoit.

Bonjour

Ma réponse d’hier n’a pas été publiée…

Le fait que des IDs soient identiques (graphs 2 et 3) c’est un BUG que je vais fixer (*)
Idem pour ID_bar_1 au lieu de ID_graph_1 pour le type 7

Cordialement

Roland

(*) dans la v17R5 et qui sera sans doute reporté en 17.x, mais ça c’est pas moi qui décide :slight_smile:

Merci.

benoit.

Bonjour,

Ce bug a été fixé en 17R5 et intégré en 17.x (à venir)

Merci pour votre coopération ! :slight_smile:

Cordialement

Roland Lannuzel

: Benoit BARON

Je m’interroge sur une possible régression de la structure du SVG
lors de la construction d’un graphique circulaire entre la version
v15 et la version v17R3.

Ce https://forums.4d.com/Post/FR/27454585/2/27652497#27652497post> peut être intéressant à lire

Bonjour Benoît,

Je présume que vous avez constaté cela avec la version 64 bits de 4D ?
Il est en effet possible (vraisemblable) que des IDs aient changés, mais si vous modifiez votre code, soyez sur que ces changements ont eu lieu en v16 et qu’ils n’ont pas bougé depuis et ne bougeront en principe plus (je me souviens que des bugs d’IDs ont été fixés aussi, des IDs ont été ajoutés aussi si mes souvenirs sont bons…)

Pour votre information et pour que tout soit clair… en 64 bits, les graphes ne sont plus générés (en interne) via une transformation SSLT comme c’était le cas avant mais (toujours en interne) via un “process 4D tags”.

*** pour aller plus loin ***

Les graphes sont maintenant basés sur des “templates” qui se trouvent dans les resources de 4D et que vous pouvez si vous le désirer copier à côté de votre structure si vous souhaitez les “customiser”; le dossier “GraphTemplates” près de la structure sera pris en priorité par rapport à celui des resources 4D.

Cela demande bien sur une connaissance à la fois des tags 4D pris en compte lors de l’exécution de la commande “Process 4D Tags” et aussi du SVG (ce que vous semblez avoir :slight_smile:

Le fichier Graph_0_Template.svg est commun est est concaténé avec les fichiers Graph_x_Template.svg avant la transformation (interne) via process 4D Tags. Vous verrez beaucoup de code 4D dans ces templates (au moins autant si ce n’est plus que du SVG !)

Bonne journée et bon SVG !

Roland

Bonjour Roland,

Merci pour cette réponse.

Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

Encore une ou deux questions :pray:

Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?

https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates :roll:

c’est parti !

Benoit.

(re)bonjour

<<
Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

On a fait “au plus proche” (désolé pour les changements d’IDs) mais faire rigoureusement identique était quasi impossible (seuls les extra-terrestres parlent le XSL et on n’en pas pas sous la main…)
L’avantage (si si) c’est de que des commentaires ont été glissés dans le SVG ainsi que dans le code 4D pour mieux pouvoir repérer les blocs.

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non… je vais le signaler :slight_smile:

<<
Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Non, je ne crois pas, c’est semi-officiel et réservé aux fidèles lecteurs du forum…

<<
Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates

C’est essentiellement du code 4D, il est situé entre les balises

Si vous voulez -vraiment- aller loin, vous pouvez vous même concatener les fichiers Graph_0_Template.svg et Graph_X_Template.svg et faire un PROCESS 4D TAGS… vous obtiendrez bien un SVG valide :slight_smile:

(Attention, la commande PROCESS 4D TAGS peut maintenant recevoir des paramètres, et dans le cas des graphes elle DOIT en recevoir !)

Cordialement,

Roland Lannuzel

(re)bonjour

<<
Je trouve dommage que le fait d’avoir modifié le mode de génération des graphes ait modifié la structure finale du SVG qui était propre et compréhensible.

On a fait “au plus proche” (désolé pour les changements d’IDs) mais faire rigoureusement identique était quasi impossible (seuls les extra-terrestres parlent le XSL et on n’en pas pas sous la main…)
L’avantage (si si) c’est de que des commentaires ont été glissés dans le SVG ainsi que dans le code 4D pour mieux pouvoir repérer les blocs.

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non… je vais le signaler :slight_smile:

<<
Concernant l’explication sur les templates svg, y a-t-il une documentation que je n’aurais pas trouvée sur le site ?

Non, je ne crois pas, c’est semi-officiel et réservé aux fidèles lecteurs du forum…

<<
Si j’ai bien compris, il ne me reste plus qu’à comprendre et créer de nouveaux templates

C’est essentiellement du code 4D, il est situé entre les balises #4DCODE

Si vous voulez -vraiment- aller loin, vous pouvez vous même concatener les fichiers Graph_0_Template.svg et Graph_X_Template.svg et faire un PROCESS 4D TAGS… vous obtiendrez bien un SVG valide :slight_smile:

(Attention, la commande PROCESS 4D TAGS peut maintenant recevoir des paramètres, et dans le cas des graphes elle DOIT en recevoir !)

Cordialement,

Roland Lannuzel

Roland,

<<
Est-ce normal que les IDs des graphes soient passés de ID_graph_1 (en
v15) à ID_bar_1 (en v17R3) alors que la doc v17R3 nous indique que
les IDs vont de ID_graph_1 à ID_graph_8 ?
https://doc.4d.com/4Dv17R3/4D/17-R3/GRAPHE.301-3907361.fr.html

Non…je vais le signaler Smile

Tu vas signaler qu’il faut changer les IDs dans la génération ou la documentation ? :wink:

Après visu des templates :frowning: je vais plutôt modifier les recherches XML dans mon code pour coller au nouveau SVG généré !
Le plus urgent étant le passage en 4DWritePro :-? :wink:

Encore merci pour les réponses,
Benoit.