fabrice
(Mouttet)
April 7, 2022, 11:35am
1
Bonjour,
Je change des valeurs dans des champs par code ( avec un validateAndSave).
Les valeurs sont bien changées mais il est nécessaire de recharger le formulaire pour les voir.
Que puis-je ajouter dans mon code pour recharger le formulaire?
if (this.getField("HertaProcessStatut").getValue().equals("2"))
{
this.setFieldValue("HertaProcessStatut", "3");
this.setFieldValue("HertaProcessDateFichierCSV", dateTimeNow() );
try{
new BusinessObjectTool(this).validateAndSave();
}
catch(Exception e){
AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);
}
} else {
return Message.formatSimpleInfo("L'export ne peut se faire qu'à l'étape : \n VALIDE AVANT ATTRIBUTION" );
}
Fabrice
nathalie
(Nathalie Seitz)
April 7, 2022, 1:30pm
3
Bonjour Fabrice,
Dans quel hook est appelé ce code ?
Peux-tu préciser le besoin ?
Merci
fabrice
(Mouttet)
April 8, 2022, 5:31am
4
le code est dans une méthode appelée par une action.
La méthode créée un fichier CSV et place la date de création de ce fichier dans un champ.
J’aimerai que le champ affiche directement la date sans devoir rafraîchir ou recharger la page.
nathalie
(Nathalie Seitz)
April 8, 2022, 10:47am
5
Bonjour,
Une action back fait automatiquement un enregistrement puis l’appel de la méthode puis recharge le formulaire si il n’y a pas un redirect ou un appel javascript.
fabrice
(Mouttet)
April 11, 2022, 8:57am
6
Mon action est bien en back mais il n’y a pas de rafraichissement
public String boutonTransAttr(){
AppLog.info(getClass(), "Création du CSV", null , getGrant());
//contrôle du statut : doit être sur l'état process 2 pour continuer, sinon message à l'utilisateur et fin de l'action
if (this.getField("HertaProcessStatut").getValue().equals("2"))
{
this.setFieldValue("HertaProcessStatut", "3");
this.setFieldValue("HertaProcessDateFichierCSV", dateTimeNow("yyyy-MM-dd hh:mm:ss") );
try{
new BusinessObjectTool(this).validateAndSave();
}
catch(Exception e){
AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);
}
} else {
return Message.formatSimpleInfo("L'export ne peut se faire qu'à l'étape : \n VALIDE AVANT ATTRIBUTION" );
}
//Construction du contenu du CSV
ObjectDB eleve = this.getGrant().getTmpObject("HertaEleve");
eleve.resetFilters();
eleve.getField("HertaEleveStatut").setFilter("todo");//setFilter("='direct' or ='indirect' or ='nonFin'"); // filtre si nécessaire
eleve.getField("HertaEleveNom").setFilter("Dutoit");//setFilter("='direct' or ='indirect' or ='nonFin'"); // filtre si nécessaire
eleve.resetOrders();
List<String[]> rows = eleve.search();
//entetes IDHash;DateNaissance;EGID;BatimentID;BonCalc;CauseNonAttribue;AnneeVoie;AnneeProcessus;Statut;LieuInscription
String csv = "HashID;DateNaissance;EGID;BatimentID;BonCalc;CauseNonAttribue;AnneeVoie;AnneeProcessus;Statut;LieuInscription\n" ;
//boucle sur les entités
for (String[] row: eleve.search() ){
eleve.setValues(row);
String IDHash = eleve.getField("HertaEleveId").getValue();
String DateNaissance = eleve.getField("HertaEleveDateNaissance").getValue();
String EGID = eleve.getField("HertaEleveEGID").getValue();
String BatimentID = eleve.getField("HertaEleveBatimentId").getValue();
String BonCalc = eleve.getField("HertaEleveBonCalcule").getValue();
String CauseNonAttribue = eleve.getField("HertaEleveCauseNon").getValue();
String AnneeVoie = eleve.getField("HertaEleveAnneeVoie").getValue();
String AnneeProcessus = eleve.getField("HertaProcessAnnee").getValue();
String Statut = eleve.getField("HertaEleveStatut").getValue();
String LieuInscription = eleve.getField("HertaEleveLieuInscription").getValue();
csv += IDHash +";"+ DateNaissance +";"+ EGID +";"+ BatimentID +";"+ BonCalc +";"+ CauseNonAttribue +";"+ AnneeVoie +";"+ AnneeProcessus +";"+ Statut +";"+ LieuInscription ;
csv += "\n";
}
AppLog.info("message fichier CSV pour MICROGIS :::" + "\n" + csv, getGrant());
this.setParameter("CSV", csv); // le contenu est placé en paramètre pour être récupéré par la méthode de la publication
return this.javascript("$ui.displayPrint(null, 'HertaPctMicrogis', '" + this.getName() + "', '" + this.getRowId() + "')");
}
Méthode de la publication
public byte[] creationFichierCsv(PrintTemplate pt)
{
AppLog.info(getClass(), "Appel de creationFichierCsv", null , getGrant());
pt.setFilename(pt.getFilename().replace("[info]", dateTimeNow("yyMMddhhmmss")));
String csv = this.getParameter("CSV");
return csv.getBytes();
}
Version :
Version=5.1.38
BuiltOn=2022-04-09 18:54
nathalie
(Nathalie Seitz)
April 11, 2022, 12:29pm
7
Oui parce que l’action renvoie vers le printtemplate de l’objet.
Dans l’action, vous pouvez directement exécuter
setFieldValue("HertaProcessDateFichierCSV", Tool.getCurrentDatetime());
save();
...
Pour rappeler la page il faut soit utiliser $ui.displayForm
soit appeler la fonction Recharger $("[data-action=reload]").click();
fabrice
(Mouttet)
April 11, 2022, 1:13pm
8
Je vais passer par le script front end, mais je ne sais pas où mettre $("[data-action=reload]").click();
// HertaProcess front side hook
(function(ui) {
if (!ui) return;
var app = ui.getAjax();
// Hook called by each object instance
Simplicite.UI.hooks.HertaProcess = function(o, cbk) {
try {
console.log("HertaProcess hooks loading...");
var p = o.locals.ui;
if (p && o.isMainInstance()) {
p.form.onload = function(ctn, obj) {
//...
};
}
//...
}
catch(e) {
app.error("Error in Simplicite.UI.hooks.HertaProcess: " + e.message);
}
finally {
console.log("HertaProcess hooks loaded.");
cbk && cbk(); // final callback
}
};
}
)(window.$ui);
nathalie
(Nathalie Seitz)
April 11, 2022, 1:17pm
9
Non il n’est pas nécessaire de passer par le script front end.
Votre action peut retourner
return this.javascript("$(\"[data-action=reload]\").click() ;$ui.displayPrint(null, 'HertaPctMicrogis', '" + this.getName() + "', '" + this.getRowId() + "')");
system
(system)
Closed
April 11, 2022, 2:20pm
11
This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.