PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Changer l'apparence du message Info, erreur?
Changer l'apparence du message Info, erreur?
Débuté par Marc, 24 juin 2017 14:33 - 9 réponses
Posté le 24 juin 2017 - 14:33
Bonjour,

Pour les messages oui/non et ok/ Cancel on a le moyen de changer le gabarit sous projet / description / Ambiance style.
Mais rien n'existe pour les messages Info et erreur? est-ce correct?
merci.
Posté le 27 juin 2017 - 12:02
Bonjour,

je ne crois pas que l'on puisse. Mais on peut toujours capter l'erreur afin de l'afficher dans une cellule qui elle est personnalisable à souhait.
Membre enregistré
83 messages
Popularité : +4 (4 votes)
Posté le 10 juillet 2017 - 18:16
Bonjour,

En effet, la solution consiste à surcharger les fonctions Erreur() et Info() par une procédure globale du même nom, et d'afficher ainsi le message dans une popup intégrée au modèle de page (si tu en utilises un) ou à chacune de tes pages si tu n'as pas de modèle.
Membre enregistré
945 messages
Popularité : +53 (63 votes)
Posté le 10 juillet 2017 - 18:32
Bonjour,

sinon on peut utiliser ca : https://limonte.github.io/sweetalert2/

jordan
Membre enregistré
83 messages
Popularité : +4 (4 votes)
Posté le 11 juillet 2017 - 18:31
Sympa, je le garde dans un coin, merci :merci:
Posté le 18 juillet 2017 - 15:50
Fantastic.. cela fonctionne trés bien.
Merci
Marc
Membre enregistré
83 messages
Popularité : +4 (4 votes)
Posté le 18 juillet 2017 - 17:06
Bonjour,

Alors je pensais implémenter ça très facilement, mais c'était sans compter les aléas de Webdev... :(

J'ai d'abord créé une procédure NAVIGATEUR Info(content) qui affiche, en javascript, ma boite sweetalert (c'est beau ! :) )
Elle surcharge bien l'instruction Info() de Webdev, et donc aucun code à réécrire.
Bon un léger bémol : pas moyen de gérer le cas de paramètres multiples (l'instruction Info() de Webdev en accepte 1 par ligne affichée), mais c'est pas grave, je gérerai au cas par cas.

Puis je m'attaque à la version serveur : je crée donc une procédure (SERVEUR cette fois) nommée également Info(content) et là Webdev m'indique qu'une procédure de même nom existe déjà, et me propose de fusionner les syntaxes... Bon OK, je fusionne !

Et là c'est le drame : la surcharge en code navigateur ne fonctionne plus, à l'exécution je me retrouve avec ma boite de dialogue "navigateur" (particulièrement horrible sous Chrome....)

C'est d'autant plus incompréhensible que la documentation PCSoft prend comme exemple, pour le mot clé "Surcharger une fonction du WLangage", la fonction Info() justement !

Vous avez une idée ?
Membre enregistré
945 messages
Popularité : +53 (63 votes)
Posté le 18 juillet 2017 - 17:22
Bonjour,

Je pense que pour pcsoft, la fonction info s'adapte si on est code navigateur ou serveur, ce qui n'est pas le cas de ta fonction que tu créer toi même.

De plus le code sweetalert ne fonctionne que en code navigateur.

si tu doit mettre des infos coté serveur, utilise les fonctions ajaxexecute() pour executer ton code serveur et renvoyer les eventuels message et tu pourras utiliser ta fonction info() cote navigateur.

c'est ce que je ferai.

jordan
Membre enregistré
83 messages
Popularité : +4 (4 votes)
Posté le 18 juillet 2017 - 17:32
Si j'ai bien compris le principe de "syntaxes multiples", je peux créer une procédure Info() serveur et une Info() navigateur.

Sur l'éditeur de code, après avoir fusionné les syntaxes, il m'affiche bien les 2 versions de ma procédure avec, pour chacune, l'indication (serveur) (en orange) ou (navigateur) (en vert)

Je sais bien que le sweetalert est un appel de procédure JS, donc navigateur, mais j'avais déjà ma petite idée sur la façon de surcharger Info() en version serveur :
- alimenter (en code serveur) un champ de saisie invisible de ma page avec le message à afficher
- sur le "onload" de la page, appeler la procédure navigateur en lui passant en paramètre le message contenu dans ce champ invisible
Tout ça dans le modèle de page et ça devrait rouler.
Et avec 480 pages dans le projet, je n'ai pas le temps de tout réécrire en Ajax :)

Le problème n'est pas là, visiblement on peut surcharger en version SERVEUR ou NAVIGATEUR, mais pas les 2 (alors que l'éditeur de code l'autorise !)
Message modifié, 18 juillet 2017 - 17:34
Membre enregistré
83 messages
Popularité : +4 (4 votes)
Posté le 18 juillet 2017 - 18:39
Bon j'ai trouvé une solution, encore plus simple. :)
Je la publie pour ceux qui seraient intéressés.

Il s'agit de surcharger l'instruction javascript alert() qui est la traduction des instructions Info() et Erreur() de Webdev en exécution.

Pour ce faire, ajouter ce code à l'initialisation de la page (ou du modèle de page) :

MaPage..HTMLFinPage+=[
<script>
(function(proxied) {
window.alert = function(str) {
swal({
title: str,
text: '',
type: 'info',
confirmButtonText: 'OK'
});
};
})(window.alert);
</script>
]


Dans ce code la fonction swal() correspond au plugin Sweetalert , mais vous pouvez remplacer par ce que vous voulez.
Si vous utilisez Sweetalert il faudra bien sûr au préalable ajouter le fichier JS et CSS dans les include de la page :

<script src="bower_components/sweetalert2/dist/sweetalert2.min.js"></script>
<link rel="stylesheet" href="bower_components/sweetalert2/dist/sweetalert2.min.css">


Ce n'est pas encore la panacée car j'aurai bien voulu distinguer les messages de type 'info' de ceux de type 'erreur', comme le permet Sweetalert (en affichant une image différente).
Néanmoins ils s'affichaient tous de la même façon avant que j'utilise ce module donc c'est déjà une belle avancée :)

Pour ce faire, j'envisage quand même de surcharger (au moins côté serveur) les instructions Webdev pour ajouter un préfixe type #ERREUR aux messages d'erreur, puis détecter la présence de ce préfixe dans mon code javascript pour afficher le bon type de message.
Message modifié, 18 juillet 2017 - 18:40