PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → Changer l'apparence du message Info, erreur?
Changer l'apparence du message Info, erreur?
Iniciado por Marc, 24,jun. 2017 14:33 - 9 respuestas
Publicado el 24,junio 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.
Publicado el 27,junio 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.
Miembro registrado
83 mensajes
Popularité : +4 (4 votes)
Publicado el 10,julio 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.
Miembro registrado
950 mensajes
Popularité : +53 (63 votes)
Publicado el 10,julio 2017 - 18:32
Bonjour,

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

jordan
Miembro registrado
83 mensajes
Popularité : +4 (4 votes)
Publicado el 11,julio 2017 - 18:31
Sympa, je le garde dans un coin, merci :merci:
Publicado el 18,julio 2017 - 15:50
Fantastic.. cela fonctionne trés bien.
Merci
Marc
Miembro registrado
83 mensajes
Popularité : +4 (4 votes)
Publicado el 18,julio 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 ?
Miembro registrado
950 mensajes
Popularité : +53 (63 votes)
Publicado el 18,julio 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
Miembro registrado
83 mensajes
Popularité : +4 (4 votes)
Publicado el 18,julio 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 !)
Mensaje modificado, 18,julio 2017 - 17:34
Miembro registrado
83 mensajes
Popularité : +4 (4 votes)
Publicado el 18,julio 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.
Mensaje modificado, 18,julio 2017 - 18:40