Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 16h53   #1
Invité régulier
 
Inscription : août 2009
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 27
Points : 8
Points : 8
Par défaut Formatter label des données

Bonjour,
j'ai des données en secondes à afficher au sein d'un graphe en hh:mm:ss. J'utilise la partie scripted :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function beforeDrawDataPointLabel(dph, label, icsc)
{
 
    var seconds = parseInt(label.getCaption().getValue());
	var hours = 0;
	var minutes = 0;
	if (seconds / 3600 >= 1) {
		hours = Math.floor(seconds / 3600);
		seconds = seconds % 3600;
	}
	if (seconds / 60 >= 1) {
		minutes = Math.floor(seconds / 60);
		seconds = seconds % 60;
	}
	if (hours < 10)
		hours = "0"+hours;
	if (minutes < 10)
		minutes = "0"+minutes;
	if (seconds < 10)
		seconds = "0"+seconds;
	label.getCaption().setValue(hours+":"+minutes+":"+seconds);
}
A l'affichage le formatage est bien réalisé mais le calcul est faux. Je m'explique pour par exemple 33 200 secondes à l'affichage j'aurai 00:00:33. Il ne considère que les 3 premiers chiffres!
Il y a un problème de type je pense comment peut on forcer le nombre à 33200 et pas à 33 200? Merci d'avance
iReporter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 17h57   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304


Tu peux peut être poser ta question dans le forum javascript si c'est un problème de fonction.
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 09h53   #3
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Y'a t'il des espaces dans ton chiffre ?

J'ai testé en Java et le parseInt() ne fonctionne pas s'il y a des espaces (ni le valueOf, ni le getInteger, etc.).

Il faudrait enlever les espaces avant de parser le nombre.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 09h45   #4
Invité régulier
 
Inscription : août 2009
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 27
Points : 8
Points : 8
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (axis.getType() == AxisType.LINEAR_LITERAL){
		var str =label.getCaption().getValue();
	str = str+'';
    str = str.replace(/\s+/g, "");
	var seconds = parseInt(str);
		var hours = 0;
		var minutes = 0;
		if (seconds / 3600 >= 1) {
			hours = Math.floor(seconds / 3600);
			seconds = seconds % 3600;
		}
		if (seconds / 60 >= 1) {
			minutes = Math.floor(seconds / 60);
			seconds = seconds % 60;
		}
		if (hours < 10)
			hours = "0"+hours;
		if (minutes < 10)
			minutes = "0"+minutes;
		label.getCaption().setValue(hours+":"+minutes);
	}
}
Voila en effet j'ai fait un remplacement. Et ca fonctionne. Merci
iReporter est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h18.


 
 
 
 
Partenaires

Hébergement Web