Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [bidouillé] telecharger en csv

Envoyé par : jales

Date : 19/03/2007 10:40

bonjour

j'ai une page avec un tableau, et je voudrais ajouter un bouton "telecharger en csv".

l'idee est de ne pas faire un lien vers un fichier sur un serveur, mais d'utiliser les donnees deja disponibles dans le xul, dans le format du tableau (en tenant compte des colonnes eventuellement rearrangees et/ou masquees)

mon souci n'est pas de generer le contenu, mais de savoir comment le fournir a l'utilisateur (ie quelle balise/method utiliser une fois le contenu generé)

merci

# Re: telecharger en csv

Envoyé par : chBok

Date : 19/03/2007 11:09

Si tu travailles en chrome, tu peux très bien écrire le fichier sur le disque dur de l'utilisateur, et lui fournir simplement le chemin pour ouvrir le fichier (ou ouvrir le fichier directement).

# Re: telecharger en csv

Envoyé par : jales

Date : 19/03/2007 11:13

non, en fait, je prefererai simuler un telechargement.

comme ca, si il a deja defini une ouverture auto d'un openoffice ou autre, ca marchera.

# Re: telecharger en csv

Envoyé par : Christophe Charron

Date : 19/03/2007 11:33

mais où-est'il situé ce fichier ?

# Re: telecharger en csv

Envoyé par : jales

Date : 19/03/2007 12:09

il n'existe pas : j'ai les donnees dans mon xul (dans le tableau)

je veux fournir un bouton qui permette a l'utilisateur de faire "comme si" il les telechargeait, pour retomber dans le processus habituelle de :

"j'ai un lien, je clic, ca m'ouver la boite que j'ai l'habitude d'utiliser, et dans laquelle j'ai deja configurer mon openoffice"

# Re: telecharger en csv

Envoyé par : Christophe Charron

Date : 19/03/2007 12:14

Excuse moi d'être lourd, mais qu'est-ce que

la boite que j'ai l'habitude d'utiliser, et dans laquelle j'ai deja configurer mon openoffice

? Du xul ? un onglet du navigateur ? Un document OOo ?

# Re: telecharger en csv

Envoyé par : jales

Date : 19/03/2007 12:24

non non, du navigateur (firefox)

si tu imagine la meme page faite en html, avec a la place d'un bouton, un lien "a href" vers un fichier csv distant genere cote serveur, alors, lorque l'utilisateur clic sur ce lien, il a un contexte "habituel" de telechargement du fichier, voir d'ouverture directe avec un programme local.

he bien l'idee, c'est de reussir a passer par ce meme mecanisme, mais sans avoir a generer un fichier cote serveur, puisque j'ai deja les donnees necessaires dans le xul.

en plus, comme l'utilisateur peu avoir "melanger" les colonnes et choisi d'en masquer certaines, je peux tenir compte de ca en consultant l'etat du tableau dans le xul, et sans generer de fichier coter serveur au moment de la 'requete'.

je ne sais pas si c'est plus clair ?

# Re: telecharger en csv

Envoyé par : chBok

Date : 19/03/2007 12:49

jales a écrit:

je ne sais pas si c'est plus clair ?

Moi, j'ai compris, mais je n'ai pas la réponse...

# Re: telecharger en csv

Envoyé par : Christophe Charron

Date : 19/03/2007 12:51

jales a écrit:


je ne sais pas si c'est plus clair ?

Oui, c'est plus clair, mais je n'ai pas la réponse : faire une vrai-faux téléchargement ...

# Re: telecharger en csv

Envoyé par : jales

Date : 19/03/2007 12:57

je sais qu'on peut remplir une image avec qqchose du style : img src="data:image/png;base64,........"

je me demande si on peut faire la meme chose avec un lien, je vais tenter..

# Re: telecharger en csv

Envoyé par : jales

Date : 20/03/2007 15:10

voici un petit workaround qui a l'air de marcher, meme s'il est pas d'une poesie de codage baudelairienne..

petit detail encore a regler, je n'ai pas trouver comment lui donner un nom, a ce pseudo fichier telecharger

 <?xml version="1.0"?>
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
title="test csv" >
 <script>
 <![CDATA[
 function get_content() {
return [ [ 'c1', 'c2', 'c3', 'c4' ], [ 1, 2, 3, 4], [ 'a', 'b', 'c', 'd' ]];
 }

 function array_to_csv_string ( A ) {
res = "";
for ( var i in A ) {
	res += A[i].join( ',' ) + '\n';
}
return res
 }

 function download_csv() {
var content = get_content();
var string_content = array_to_csv_string( content );
var anchor = document.getElementById( "tag-csv-insert" );
while ( anchor.hasChildNodes() ) { anchor.removeChild( anchor.firstChild ); }
var zeIframe = document.createElement("iframe");
zeIframe.id = "csv-download";
anchor.appendChild( zeIframe );
zeIframe.setAttribute( "src", "data:text/csv;text,"+ escape(string_content) );
 }
 ]]>
 </script>
<button label="download csv" oncommand="download_csv()" />
<button label="content" oncommand="alert(get_content())" />
<hbox id="tag-csv-insert" />
 </window>

j'ai essayer sans creer le iframe a la volee, mais pour une raison que je ne m'explique pas, quand je joue a ca dans un overlay, ca passe pas. donc je vais tenter de voir si cette version qui ne cree l'iframe que lorsqu'il est requis passe mieux dans un overlay.. mais bon, ici c'est hors sujet.

PS: si vous avez plus elegant, je prend, of course

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.