Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

cljosse
2011-02-14 16:12:54

Bonjour.
   Bien vu  les valeurs windows renvoyées n'étaient pas correcte avec le theme stripped.

Par contre les valeurs affichées dans le style ont l'air d' être les dernieres valeurs stockées lors du chargement de l'image.
  et ne sont pas raffraichies dynamiquement( lors de variation de la taille de la fenetre du navigateur).

   Lorque l'on fait un refresh ou suivant j'ai les dimensions réelles de l'image téléchargée(1440x958.).
            exemple:         style="width:1440px;height:958px)
Alors que sur la première image j'ai les dimensions à afficher.
  Je ne comprends pas trop...

    Les valeurs données par le tooltip sont les dimensions offsetWidth et offsetheight de l'élement d'ou une valeur différente en fonctions des marges.

- Une nouvelle version 1.4.47 corrigeant les valeurs cookies est en ligne.

La différence entre Firefox et chrome vient de nu numéro d'image "17/39" qui est exclu du menu si le nombre d'outils est important...

A+

arno
2011-02-13 12:52:21

Hello cljosse,

après quelques jours d'absence, je me remet au charbon pour finir tout ça

Pour l'instant, je suis revenu sur un mode synchrone:
(mon but est d'afficher la photo le plus vite possible, et pour ça, après avoir torturé la timeline dans tous les sens, il n'y a pas photo (sic) :
il faut que le téléchargement puisse débuter le plus vite possible, sans attendre le chargement du DOM;
je n'aime pas trop l'idée de recharger la photo précédente qui n'a rien à voir, et d'avoir l'image qui "saute" tout à coup ..)

Du coup, je commence à obtenir des resultats corrects.
http://piwigo.cumulodata.com/picture.ph … category/5


Mais, le diable se cachant dans les details, imposible de retomber sur mes pieds au niveau taille de l'image.
Est tu sur que la valeur window_height / window_width que tu me renvoient sont les bonnes ?

Voilà ma petite enquete :
Sur la capture piwigo_plugin_dynamic_resize_chrome.png, je suis donc en mode synchrone, sur la 1ere photo. Donc , pas de redimmensionnement pour l'instant.

- La photo originale fait 1440x958. ok.
- Chrome la donne pour un affichage de 859x 573 . soit
- Les attributs de la photo sont 801x 553 . bon, il y a surement une subtilité css que je ne connais pas, mais je trouve ca etrange que ca ne soit pas les memes données que chrome.
- Tu me renvoie pour l'image des dimensions de 853x567. Une valeur entre les 2.
- Mais tu me dis que la taille maximale pour afficher la photo est 1120x577, soit une hauteur superieure.


Du coup, si 577 est la hauteur max, c'est à cette hauteur que je redimensionne ma prochaine image.

Ce qui donne, si je rafraichit la page : (capture piwigo_plugin_dynamic_resize_chrome_reload.png):
- La photo originale fait 867x577 , normal c'est la window_height du cookie.
- Google la donne pour un affichage de 859x 573 . Au moins, il est coherent, mais du coup ce n'est pas la bonne taille.
- Les attributs de la photo sont toujours  801x 553 , ca ne bouge pas.
- Tu me renvoie pour l'image des dimensions de 853x567, ca ne bouge pas.
- Mais tu me dis que la taille maximale pour afficher la photo est 1120x577, ca ne bouge pas.

Si je rafraichis plusieurs fois, chrome me donne parfois un affichage de 807x539.
(capture). Hm.


Parfois, ca me donne egalement un attribut 'height' bizzare , non arrondi (cf capture _bug).

Bon, je switche sous firefox pour continuer les tests
1) chargement initial
- La photo originale fait toujours 1440x958.
1 440px × 958px (redimensionné à 747px × 497px)
- Attributs de l'image : width: 747px; height: 496.962px; (!). A part la décimale, cohérent avec ce que dit Firefox.
info : returned by autosize are these a.width x a.height :747x497 (on est bon de nouveau)
info : returned by autosize are these a.window_width x a.window_height :1120x507 (aïe, 10 pixels de trop).


2) du coup au refresh:
762px × 507px (redimensionné à 747px × 497px)

Firefox a l'air plus robuste au niveau des dimensions que chrome ..

Mais du coup, le window.height est 10pixels trop haut sous firefox, et 4 sous chrome ..

J'espere que j'ai été clair ..

- Arno

cljosse
2011-02-01 10:06:44

Bonjour.
Une petite idée pour masquer le temps de latence lors de l'affichage des photos:
Principe:
   Si c'est la première photo afficher une image transparente pendant le temps de chargement
    sinon réafficher la dernière photo qui se trouve en cache ce qui devrait être rapide. 
  Je ne sais pas si c'est à ça que tu pensais, mais c'est à ça que moi je pensais en mémorisant les infos dans les cookies.

Bonne journée.
A+

arno
2011-01-27 22:38:53

Bon, ça tourne, un grand merci pour ton aide !
http://piwigo.cumulodata.com/picture.ph … category/5

maintenant je ne suis pas completement enchanté du resultat, comme je le pensais c'est tres lent d'attendre que le dom soit completement chargé pour télécharger l'image.
je vais reflechir a tout ça,voir sil il n'est pas possible d'ameliorer le systeme d'une manière ou d'une autre.

Je vais aussi terminer de nettoyer le code pour pouvoir le publier !

- Arno

cljosse
2011-01-27 14:55:18

arno a écrit:

Ok,
merci bcp pour les optimisations et les conseils, ca commence à rentrer tout ça.
par contre, ca ne résolvait pas le pb : le 'fire' ne fonctionnait pas.

A force de bidouiller, j'ai fini par trouver: le handler n'etait attaché à rien !
et comme jquery autorise a déclarer des elements a posteriori du handler, tout est confirme, jquery ne rale pas.
En fait, tu inclus #ret_autosize dans ton template de debug, qui n'est affiché que lorsque la bonne case est activée dans l'admin de autosize ; Il faudrait plutôt le mettre dans le template principal, non ?

Bon, je termine demain, mais la mécanique est là, le reste va etre un peu plus simple, je pense.
A+

- Arnaud

Bien vu.

  C'est corrigé avec la nouvelle version.

  Un détail à ne pas négliger, le "fire" se fait à chaque changement de dimentions de la fenêtre.
    Il faut donc ne faire qu' un seul appel à ta fonction "resize" 
     De toute façon une fois que l'image est chargée c'est inutile de redemander au serveur une nouvelle image.

arno
2011-01-26 19:35:12

Ok,
merci bcp pour les optimisations et les conseils, ca commence à rentrer tout ça.
par contre, ca ne résolvait pas le pb : le 'fire' ne fonctionnait pas.

A force de bidouiller, j'ai fini par trouver: le handler n'etait attaché à rien !
et comme jquery autorise a déclarer des elements a posteriori du handler, tout est confirme, jquery ne rale pas.
En fait, tu inclus #ret_autosize dans ton template de debug, qui n'est affiché que lorsque la bonne case est activée dans l'admin de autosize ; Il faudrait plutôt le mettre dans le template principal, non ?

Bon, je termine demain, mais la mécanique est là, le reste va etre un peu plus simple, je pense.
A+

- Arnaud

cljosse
2011-01-26 14:53:28

J'ai fai une mise à jour du plugins autosize vers 1.4.41
Il y avait un bug dans Wait_Affichage()

//   if (nu_img > 1) return;
Et j'ai modifié le trigger de ret_autosize.
Je passe en variable les infos.
Pour récupérer les variables:

Ce serait mieux d'encapsuler la fonction live de facon a être sur que la fenetre est chargée.

avec

jQuery(document).ready(
    function (jQuery) {
        jQuery(window).load(function () {
              jQuery("#ret_autosize").live('ON', function (e, a) {   
/*
a.width= largeur de l'image
a.height= hauteur de l'image
a.theImage=  l'objet image
a.src_img=  url de l'image
*/
......
               au lieu d'écrire:    $("div.theimg > img").attr("src", js_imgsrc);
                            écrire:    a.theImage.src = js_imgsrc;


                                              })
     })
})

Nota: éviter les raccourcis $( écrire jQuery( pour des raisons de compatibilité avec d'autres librairies.


A+

arno
2011-01-26 13:24:30

Oui, c'etait le parametre 'now=1' que j'avais oublié de repasser à 'now=0'
(je ne comprend pas bien ce que c'est , mais j'ai testéça  ca par intuition !)

du coup
=>
<script type="text/javascript" src="themes/stripped/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="./plugins/dynamicResize/scripts/xhrpic.js"></script>

, mais pour autant le probleme évoqué dans le poste précédent reste entier

cljosse
2011-01-26 12:04:48

???

<script src="./plugins/dynamicResize/scripts/xhrpic.jstype="text/javascript"" ></script>
<script src="themes/stripped/js/jquery-1.4.2.min.js" type="text/javascript"" ></script>

La fonction alert('entering js'); est lancé avant que jQuery ne soit chargé.

arno
2011-01-26 10:58:19

Merci, on touche effectivement au but !!

le template se charge, le fichier js aussi.
Il etait chargé par contre avant jquery , mais ca marche quand meme.
dans le doute , j'ai remplacé 'now=1' par 'now=0', et c'est repassé en dessous.

par contre, c'est bizzare, ton event ne déclenche pas mon listner ..
au debbuger js, on voit que , dans l'ordre:
- le listener est bien chargé
- l'event est bien lancé
- mais rien ne le recoit en face

j'ai tourné ca dans tous les sens, la syntaxe semble bonne, mais je ne vois pas.
J'ai pensé au nom de l'event 'ON' qui ne pourrait pas etre apprécié, mais je vois que tu l'utilises partout.
j'ai essayé de remplacer 'live' par 'bind', mais pareil.
une idée ?
view-source: http://piwigo.cumulodata.com/picture.ph … category/5

- Arnaud

cljosse
2011-01-26 09:05:03

Bonjour.
Ca vient petit a petit loiseau fait son nid.

Code:

function dynamic_resize_picture_content($content, $element_info){
 global $template;
 $srcimg = $template->get_template_vars('SRC_IMG');
 $srcimg = DYN_ROOT.'resize.php?picture_url='.$srcimg;

  $my_path = dirname(__FILE__).'/';
 $template->set_filenames(array('dynamicresize' => $my_path . 'dynamic_resize.tpl'));
 $template->assign(array('DYN_ROOT' => DYN_ROOT ,
                         'ROOT_URL' => ROOT_URL
                         ));
  $template->parse('dynamicresize',false); 

  $template->assign('SRC_IMG', $srcimg);

return $template->parse('default_content',true);


D'après mes essais:
1°) Il faut le chemin du fichier template en absolu et non en relatif, d'ou la variable $mypath
2°) Juste pour la beauté du code pour assigner plusieurs variables utilise   Array dans l'assignation.
3°) Ne pas oublier de dire a smarty de compiler le fichier (  $template->parse('dynamicresize',false);
)

Ton programme devrait te faire un petit coucou.

A+

arno
2011-01-25 19:36:11

@LucMorizor : quelle jolie génèse version 2.0 !

@cljosse:
ok, merci pour les explications, ca va fenir par devenir presque limpide tout ça !
Maintenant, si tu rajoutes ensuite des complications ..!

Alors:
moi naivement, je fais comme on m'a dit, j'ajoute les lignes :

Code:

function dynamic_resize_picture_content($content, $element_info){
 global $template;
 $srcimg = $template->get_template_vars('SRC_IMG');
 $srcimg = '/plugins/dynamicResize/resize.php?picture_url='.$srcimg;
 echo  DYN_ROOT . '/dynamic_resize.tpl';

 $template->set_filenames(array('dynamicresize' => DYN_ROOT . '/dynamic_resize.tpl'));
 $template->assign('DYN_ROOT', DYN_ROOT);
 $template->assign('ROOT_URL', ROOT_URL);

$template->assign('SRC_IMG', $srcimg);

return $template->parse('default_content',true);
}

avec :
http://piwigo.cumulodata.com/plugins/dy … resize.tpl

Mais rien de spécial ne se passe, il fait comme si il avait tout simplement ignoré mes lignes, pas de /scripts/xhrpic.js dans mon code source.
Il ne crache pas de message d'erreur, smarty ?

PS: on peut voir en haut de http://piwigo.cumulodata.com/picture.ph … category/5
que les variables semblent bien positionnées  (c'est le theme qui change la casse, cf code source)

- Arno

LucMorizur
2011-01-25 13:54:49

cljosse a écrit:

arno a écrit:

pourquoi la 1ere ligne, si je l'enleve, ca fonctionne quand meme ?
pourquoi la vie est apparue sur terre ?
)

A) $content a été initialisé avec "picture_content.tpl" dans picture.php
Et effectivement dans mon exemple il est inutile de le réaffecté.

B) je pense que luc est assez explicite.

;-)

cljosse
2011-01-25 12:50:12

arno a écrit:

Ok, ca marche !!!!
Un grand merci cljosse
Je t'avoue platement que je n'ai pas encore tout compris , et il me restera plein de questions existentielles,
( a quoi servent par exemple les 2 fonctions
$template->assign( array('default_content'=> $content) );
return $template->parse( 'default_content', true);
?
Pourquoi est ce que si on les omet picture.php ne va pas utiliser tout seul son content par défaut, avec la variable qu'on a assigné dans le template ?

D'après mes déductions:
  C'est la valeur retounée par la fonction qui est prise en compte.
     - parse : Charge et compile 'default_content'.
        - si l'option est true la fonction retourne le résutat, sinon l'ajoute a 'output'.

arno a écrit:

pourquoi la 1ere ligne, si je l'enleve, ca fonctionne quand meme ?
pourquoi la vie est apparue sur terre ?
)

A) $content a été initialisé avec "picture_content.tpl" dans picture.php
Et effectivement dans mon exemple il est inutile de le réaffecté.

B) je pense que luc est assez explicite.

arno a écrit:

mais le principal est que ca fonctionne

Quelques questions en + :
- je testerai bien ta méthode de chargement asynchrone, voire ce que ca donnerait au niveau performances.
Est ce que l'evenement dont tu parles

Code:

jQuery("#ret_autosize").live('ON', function (e) {
  h = img_h; Hauteur de l'image
  w = img_w; Largeur de l'image
  i = src_img; Adresse de l'image
}

est déja accessible , ou est-ce que c'etait une proposition pour une future version ?
    avec subversion(SVN)
http://piwigo.org/svn/extensions/Autosize

arno a écrit:

- pour ajouter un js, j'ai vu la méthode $template->append('head_elements'
mais comment faire pour que l'appel soit fait *apres* le chargement de jquery ?
- voilà, on va s'arreter là pour aujourd'hui
Merci, a+
- Arno

Je ne pense pas que pour ce cas se soit une bonne méthode que de charger en brut les scipts,
il vaut mieux utiliser les bonbons "smarty" en créant  un fichier tpl, pour eviter de surcharger les scripts.
exemple :

Code:

{html_head}
     {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js" now=1} 
     {known_script id="trucmuche" src=$MYPATH|@cat:"trucmuche.js"  } 
{/html_head}

$ROOT_URL étant une variable contenant le chemin relatif de piwigo.
A définir si elle n'est pas présente.

$MYPATH  étant une variable contenant le chemin relatif de du répertoire contenant le fichier script.

J'espère que mes explications sont limpides(ce que je doute, ce n'est pas mon fort) et ne soulevent pas trop de question supplémentaires.

A+

LucMorizur
2011-01-24 22:54:19

arno a écrit:

Ok, ca marche !!!!

Un grand merci cljosse

+1 ^^

arno a écrit:

Je t'avoue platement que je n'ai pas encore tout compris , et il me restera plein de questions existentielles,

( (...)
pourquoi la vie est apparue sur terre ?
)

Parce que le Verbe était,
Et le Verbe était Mot
Et le Mot était Double Octet
Et l'Octet était Bit
Et Dieu vit que cela était bon
Il y eut un Soir,
Il y eut un Matin,
C'était le Premier Jour !

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact