Page 1 sur 1

Limite dans l'affichage d'une vue HTML

MessagePublié: 04 Déc 2013 à 09:59
par jcvaillant
J'utilise une vue de type $$SearchTemplate pour afficher les images rattachées à chaque document.
Pour chaque document, je génère donc une chaine de caractères qui est sensée afficher toutes les images de ce document.
J'utilise pour cela une formule dans la vue en formula language.
Le champ ChpNomImageGallerie contient tous les noms des images stockées dans le champ Texte Riche de chaque document.
Au delà de 30 images, le code généré est tronqué pour les documents qui ont plus de 30 images.
Je pensais que cela était due à la limite de la chaine de caractère ChaineImage dans laquelle je stockais une partie du code.
J'ai donc essayé de découper le code en plusieurs chaines de caractères (chaineImage1, chaineImage2, ...) mais avec exactement le même résultat !
Il semble qu'il y a une limite pour la totalité du code généré par document ?

Qu'en pensez-vous ?

Voici le code
Code : Tout sélectionner
TabImages:=@Explode(ChpNomImageGallerie;":");
ChaineImage1:="";
ChaineImage2:="";
ChaineImage3:="";
ChaineImage4:="";
ChaineImage5:="";
MaxImage:=30;
@For(n := 1;
n <= @Elements(TabImages);
n := n + 1;
@If(n<MaxImage & TabImages[n]!="";
ChaineImage1:=ChaineImage1+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"");
@If(n>=MaxImage & n<2*MaxImage & TabImages[n]!="";
ChaineImage2:=ChaineImage2+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"");
@If(n>=MaxImage*2 & n<MaxImage*3 & TabImages[n]!="";
ChaineImage3:=ChaineImage3+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"");
@If(n>=MaxImage*3 & n<MaxImage*4 & TabImages[n]!="";
ChaineImage4:=ChaineImage4+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"");
@If(n>=MaxImage*4 & n<MaxImage*5 & TabImages[n]!="";
ChaineImage5:=ChaineImage5+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"")
);

"<div style=\"clear:both;margin-top:0px;margin-bottom:50px;\">"
+"<h2><a href=\""+@Text(@DocumentUniqueID)+"\"  title=\"Cliquez sur ce titre pour basculer sur la page\">"+chpTitrePage+"</a></h2>"+
"<div class=\"ImageGallerie\" style=\"margin:0;\">"
+ChaineImage1
+"<br /><span class=\"datepublication\">Publié le "+@Text(@Day(@If(Form="msqActualite";chpDateInformation;chpDerniereMaj)))+" " +@Text(@Select(@Month(@If(Form="msqActualite";chpDateInformation;chpDerniereMaj)); "janvier"; "février"; "mars"; "avril"; "mai"; "juin"; "juillet"; "août"; "septembre"; "octobre"; "novembre"; "décembre"))  + " " + @Text(@Year(@If(Form="msqActualite";chpDateInformation;chpDerniereMaj)))
+"</span>"
+"</div>"
+"</div>"

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 04 Déc 2013 à 16:16
par Michael DELIQUE
Salut

tu as vérifié que ton texte ne dépassais pas les 32ko ? sinon regarde en passant par une vue intégré qui affiche tous les document de ton champs (un doc par ligne)

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 04 Déc 2013 à 17:08
par jcvaillant
Michael DELIQUE a écrit:Salut

tu as vérifié que ton texte ne dépassais pas les 32ko ? sinon regarde en passant par une vue intégré qui affiche tous les document de ton champs (un doc par ligne)


Quand tu parles de 32 Ko, tu parles de la totalité du texte généré par document ou de 32 Ko par variable ?

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 04 Déc 2013 à 21:26
par roubech
$$SearchTemplate, c'est pour mettre en forme la vue résultat d'une recherche

ce code est dans une colonne de vue ou dans un champ calculé ?
Les 32K, c'est bien la longueur de la chaine résultante de cette formule.

Au passage, je ne vois pas trop l'interêt du @For avec les @If dedans, mais bon, ça changera pas la longueur de la chaine finale, sauf à jouer sur la valeur de MaxImage

Code : Tout sélectionner
MaxImage:=30;
tLstMonth:="janvier" : "février" : "mars" : "avril" : "mai" : "juin" : "juillet" : "août" : "septembre" : "octobre" : "novembre" : "décembre";
tLstImages:=@Subset(@Explode(ChpNomImageGallerie;":"); MaxImage);
tPath := @Text(@DocumentUniqueID) + "/$file/";
tDate:=@If(Form="msqActualite";chpDateInformation;chpDerniereMaj);

tLstHtml := "<a id=\"" + @LeftBack(tLstImages;".") + "\"" + " data-tooltip=\"<img src='" + tPath + tLstImages + "'>\""
+ " rel=\"Gallerie\" href=\"" + tPath + tLstImages + "?OpenElement\" >"
+ "<Img class=\"ImageGallerie\"  src=\"" + tPath + tLstImages + "?OpenElement\" alt=\"\""
+ " id=\"" + tLstImages + "\"></a>"

"<div style=\"clear:both;margin-top:0px;margin-bottom:50px;\">"
+ "<h2><a href=\"" + @Text(@DocumentUniqueID) + "\"  title=\"Cliquez sur ce titre pour basculer sur la page\">" + chpTitrePage + "</a></h2>"
+ "<div class=\"ImageGallerie\" style=\"margin:0;\">"
+ @Implode(tLstHtml; " ")
+ "<br /><span class=\"datepublication\">Publié le " + @Text(@Day(tDate)) + " " + @Text(@Select(@Month(tDate); tLstMonth))  + " " + @Text(@Year(tDate))
+ "</span>"
+ "</div>"
+ "</div>"

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 05 Déc 2013 à 11:01
par Jérôme Deniau
Je vois pas non plus trop l'intérêt, mais
1. définir la vue en vue html (propriété de l'affichage dans la vue intégrée
2. faire une colonne par image, avec le code html
3. ajouter les colonnes supplémentaires toujours avec du html sans les crochets, prévoir ou non un <br/> en dernière colonne ou non
4. Sachant qu el'admin a par défaut limité l'affichage de la vue à 30 lignes, modifier l'url pour ajouter &count=XXXX (remplacer xxxx par une valeur importante (du style 5000) puisque c'est un $searchtemplate, adapter 2500 ou 5000 pour le retour

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 06 Déc 2013 à 09:35
par jcvaillant
roubech a écrit:$$SearchTemplate, c'est pour mettre en forme la vue résultat d'une recherche

ce code est dans une colonne de vue ou dans un champ calculé ?
Les 32K, c'est bien la longueur de la chaine résultante de cette formule.

Au passage, je ne vois pas trop l'interêt du @For avec les @If dedans, mais bon, ça changera pas la longueur de la chaine finale, sauf à jouer sur la valeur de MaxImage


Le code est dans une colonne de vue.
En effet, les @if n'ont aucun intérêt si le problème de limite vient de la chaine totale de la formule.
Je pensais que le problème venait du stockage dans chaque variable, d'où les @if pour changer de variable.

Je vous rappelle mon besoin :
Rechercher des documents à partir de mots clefs que je ne connais pas à priori
Afficher dans une page html, tous les photos rattachées à chaque document trouvés.

En fait j'ai résolu le problème maintenant que je sais d'où il venait !
J'ai découpé mon code en 7 colonnes :
Colonne 1 : En tête du formatage des photos pour chaque document
Code : Tout sélectionner
"<div style=\"clear:both;margin-top:0px;margin-bottom:50px;\">"
+"<h2><a href=\""+@Text(@DocumentUniqueID)+"\"  title=\"Cliquez sur ce titre pour basculer sur la page\">"+chpTitrePage+"</a></h2>"+
"<div class=\"ImageGallerie\" style=\"margin:0;\">"


Colonne 2 : Les 30 premières photos du document courant
Code : Tout sélectionner
TabImages:=@Explode(ChpNomImageGallerie;":");
ChaineImage1:="";
MaxImage:=30;
@For(n := 1;
n <= @Elements(TabImages);
n := n + 1;
@If(n<MaxImage & TabImages[n]!="";
ChaineImage1:=ChaineImage1+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"")
);
ChaineImage1


Colonne 3 : Photo allant de 30 à 59 du document courant
Code : Tout sélectionner
TabImages:=@Explode(ChpNomImageGallerie;":");
ChaineImage2:="";
MaxImage:=30;
@For(n := 1;
n <= @Elements(TabImages);
n := n + 1;
@If(n>=MaxImage & n<2*MaxImage & TabImages[n]!="";
ChaineImage2:=ChaineImage2+"<a id=\""+@LeftBack(TabImages[n];".")+"\""
+" data-tooltip=\"<img src='"+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"'>\""
+" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" >"
+"<Img class=\"ImageGallerie\"  src=\""+@Text(@DocumentUniqueID)+"/$file/"+TabImages[n]+"?OpenElement\" alt=\"\""
+" id=\""+TabImages[n]+"\""+"></a>";"")
);

ChaineImage2


Colonne 4 à 6 : Idem colonne 2 par pas de 30 photos (en fait MaxImages)
Colonne 7 : Pied de formatage des photos pour le document courant

Merci à tous pour votre aide.

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 06 Déc 2013 à 11:57
par roubech
Pourquoi un explode , ton champ chpnomimagegallery n'est pas multivalue ?

Pourquoi encore un for et des if , la technique avec le subset ne marche pas ?

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 10 Déc 2013 à 08:41
par jcvaillant
roubech a écrit:Pourquoi un explode , ton champ chpnomimagegallery n'est pas multivalue ?
Pourquoi encore un for et des if , la technique avec le subset ne marche pas ?


En effet mon champ chpnomimagegallery n'est pas multivalue.
Comment aurais tu fait avec subset ?

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 10 Déc 2013 à 11:50
par Jérôme Deniau
Comme le tabimage est devenue une liste avec @explode on peut utiliser les fonctions de calcul de Domino/Notes
Exemple si liste contient 3 éléments
chaine + liste + chaine

donnera
chaine +liste(1) + chaine + chaine + liste(2) +chaine +chaine +liste(3) +chaine

Donc ton code pourrait être réécrit

chaineImage2 := "<a id=\""+@LeftBack(TabImages;".")+"\""
+(" data-tooltip=\"<img src='"+
+@Text(@DocumentUniqueID)+"/$file/")+TabImages+"'>\""
+(" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/")+TabImages+("?OpenElement\" >"
+"<Img class=\"ImageGallerie\" src=\""+@Text(@DocumentUniqueID)+"/$file/")+TabImages+("?OpenElement\" alt=\"\""
+" id=\")"+TabImages+("\""+"></a>")

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 10 Déc 2013 à 20:19
par roubech
Voir le code de ma première réponse

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 11 Déc 2013 à 08:05
par jcvaillant
Jérôme Deniau a écrit:Comme le tabimage est devenue une liste avec @explode on peut utiliser les fonctions de calcul de Domino/Notes
Exemple si liste contient 3 éléments
chaine + liste + chaine

donnera
chaine +liste(1) + chaine + chaine + liste(2) +chaine +chaine +liste(3) +chaine

Donc ton code pourrait être réécrit

chaineImage2 := "<a id=\""+@LeftBack(TabImages;".")+"\""
+(" data-tooltip=\"<img src='"+
+@Text(@DocumentUniqueID)+"/$file/")+TabImages+"'>\""
+(" rel=\"Gallerie\" href=\""+@Text(@DocumentUniqueID)+"/$file/")+TabImages+("?OpenElement\" >"
+"<Img class=\"ImageGallerie\" src=\""+@Text(@DocumentUniqueID)+"/$file/")+TabImages+("?OpenElement\" alt=\"\""
+" id=\")"+TabImages+("\""+"></a>")


Ok mais dans ce cas, la chaine générée dépassera les 32Ko car ta formule prends en compte tous les éléments rattachés et on retombe sur le problème initial.

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 11 Déc 2013 à 08:26
par Michael DELIQUE
salut

passe par une vue intégré qui affiche le meme document mais avec une ligne par image.

Re: Limite dans l'affichage d'une vue HTML

MessagePublié: 11 Déc 2013 à 20:31
par roubech
d'où mon subset sur la liste des images avant de commencer à concaténer le reste du code HTML