plusieurs actions dans une zone sensible

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

plusieurs actions dans une zone sensible

Messagepar seroa » 19 Jan 2010 à 14:35

Bonjour à tous,

Dans un formulaire, en web, j'ai une zone sensible "Refresh"

Sur clique de cette zone sensible, je voudrais dans un premier temps lancer une fonction Javascript, puis lancer un agent Java.

Sauf que je ne peux pas appeler mon agent java en Javascript car j'ai besoin du document context dans mon agent, il n'est jamais enregistré.

A moins de pouvoir passé en paramètre le document context mais je vois pas trop.

Dans la zone de formule j'ai :

Code : Tout sélectionner
@PostedCommand([ToolsRunMacro]; "Chart_Build")"


Puis dans les propriétés HTML : Autre :
Code : Tout sélectionner
onclick="buildChart()"


Voila ce que j'obtient en code source :

Code : Tout sélectionner
<a href="" onclick="return _doClick('8525715500550C4B.ad7e7dc472c69d8fc12576a3004d92d0/$Body/0.F6A', this, null)" onclick="buildChart()";>Refresh</a>


J'ai deux fois l'évènement onclick. Seul le premier s'exécute.

Voila, si quelqu'un à une idée ?
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar roubech » 19 Jan 2010 à 21:32

bonjour

j'ai pas tout le contexte, mais comme ça je dirais ton lien appelle juste ton JS
et dans ton JS, en plus du traitement que tu as prévu, tu renseigne un champ HIDDEN puis tu fais un submit
Ton agant LS ou Java, tu le mets sur le WebQuerySave et tu distingue le save du refresh grace à ton champ HIDDEN
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar seroa » 20 Jan 2010 à 08:41

Merci Roubech,

En effet tu tiens la solution. Si j'ai bien compris, le champ HIDDEN est du style SaveOptions que je laisse à "0" pour qu'il n'y ai pas de sauvegarde. Le submit en JS va lancé mon agent Java qui est dans WebQuerySave.

Merci beaucoup.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar roubech » 20 Jan 2010 à 10:00

ce que j'appelle un champ HIDDEN, c'est un champ qui est editable, visible au sens Notes, mais caché en web avec l'attribut HTML "TYPE=HIDDEN"
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar seroa » 20 Jan 2010 à 10:22

Salut,

Ca fonctionne bien, l'agent est bien exécuté, sauf que le submit() me renvoi à une page Form processed.

Et si je fais un href pour revenir à mon form initial, je revient à mon form vierge.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar seroa » 20 Jan 2010 à 11:32

C'est bizare, pourquoi submit de JS ne fonctionne pas comme @PostedCommand([FileSave]);

Avec @PostedCommand([FileSave]); , si SaveOptions est à "0", il revient au formulaire sans enregistrer, avec submit, il enregistre pas mais me renvoi tout de même à Form Processed.

Du coup je perd tout, car si je met un $$Return, il recharge le Formulaire.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar stloje » 20 Jan 2010 à 14:12

Est-ce que tu désires rester sur le formulaire lors de l'appel des deux fonctions?

Si c'est le cas, il est préférable de passer par Ajax ou de créer une nouvelle fenêtre en JS.

Pour faire simple, tu exécutes ta fonction JS. Ensuite, tu crées une nouvelle fenêtre avec window.open () en passant en paramètre l'adresse url de ton agent Java

Voici un lien explicant la fonction indiquée en haut
http://www.toutjavascript.com/reference/reference.php?ref=open&parent=6
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar seroa » 20 Jan 2010 à 14:26

Oui c'est ça, en fait j'ai besoin d'appelé une fonction javascript puis un agent tout en restant dans le formulaire.

J'ai pensé à faire mon appel en ajax, le problème c'est que j'ai besoin du Document context dans mon agent Java.

Ma fonction javascript à juste pour but de faire un innerHTML avant le lancement de l'agent. Peut etre qu'il y a un autre moyen de le faire.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar stloje » 20 Jan 2010 à 14:40

J'imagine que lorsque tu appelles un agent Java, tu accèdes aux mêmes propriétés qu'en LS. Donc, tu devrais avoir accès au "document context", mais il doit être vide. Lors de l'appel de ton agent, passe en paramètre les valeurs que tu as besoin et tu les récupères à partir du champ Query_String. C'est ce que je fais avec LS.
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar seroa » 20 Jan 2010 à 14:57

Oui c'est pareil en Java avec

Code : Tout sélectionner
String query = context.getItemValueString(DominoDoc.QUERY_STRING_DECODED);


Mais par contre je peux pas faire de context.replaceItemValue

Du coup, je pensais retourner des valeur en JSON à ma fonction JS avec le printWriter,

Le problème c'est que ce que je renvoi sert à faire du code javascript situé dans le head de mon formulaire, je veux le mettre dans un champ text calculé nommé Head type HTML relais.

Dans mon agent, pas de problème :

Code : Tout sélectionner
context.replaceItemValue("Head", html.toString());


mais en JS :

$('Head').value ne fonctionne pas.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar seroa » 20 Jan 2010 à 15:05

Mais en fait peut etre que je me complique la vie,

Ce que je souhaite faire c'est simplement afficher une image loading.gif pendant la durée d'exécution de mon agent.

Donc j'avais pensais à lancé une fonction JS qui affiche mon image avec un innerHTML juste avant le lancement de mon agent... Mais peut être qu'il y'a plus simple ?
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar Michael DELIQUE » 21 Jan 2010 à 08:38

salut

ce que tu veux faire ressemble a un traitement ajax, reagrde ça => http://robloche.free.fr/javascript/tuto ... o_xhr.html

et ça => http://javascript.developpez.com/cours/
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar stloje » 22 Jan 2010 à 10:14

Pour faire cela, j'ai créé un div caché à l'ouverture de la page. A l'aide du CSS, je positionne ce div et lui donne la source de l'image. J'affiche le div lors de l'appel Ajax et je le masque par la suite.
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans


Retour vers Développement

cron