Forums Développement Multimédia

Aller au contenu

Selector/Liste + choix par défaut

CMS Silex

5 réponses à ce sujet

#1 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 10 January 2010 - 12:50 PM

Bonjour,

Toujours dans la réalisation de ma galerie de photos, j'ai maintenant la problématique suivante : sélectionner par défaut un item d'une liste automatiquement au chargement d'une page (par exemple).

Je rappelle le contexte : sur ma page, j'ai deux couples selector-liste "imbriqués" (le choix de l'item sur le premier engendre l'affichage dynamique du second) permettant d'afficher une liste de dossier et la liste des images que contient le dossier sélectionné. Le tout fonctionne très bien (maintenant avec un connector rss pour aller chercher les images (=> voir sujet "selectors imbriqués"). Pour voir à quoi ça ressemble, je l'ai mis en ligne ici

Ce que je voudrais, c'est pouvoir scripter dans une action qu'au chargement de ma page, le premier item de la liste de dossiers à droite soit sélectionné par défaut et donc qu'en cascade, la galerie d'images correspondante s'affiche. J'aimerais aussi que la première image de la galerie s'affiche par défaut dans le composant ImageDisplay.cmp.swf au centre de la page.

J'ai tenté de réaliser ça avec les composants suivants :

- LST_dossiers : la richTextList affichant les dossiers

- SELECT_dossiers : le selector lié à LST_dossiers. La propriétés "commandToExecuteOnClick" de ce selector entraîne entre autres l'affichage de ma deuxième liste qui affiche la galerie du dossiers sélectionné :
Code: Tout sélectionner
SELECT_images.formName=/<<id>>
SELECT_images.getRecords


- SELECT_images : le selector lié à ma liste d'image et au rssConnector parcourant le dossier sélectionné.

- DSP_images : L'ImageDisplay.cmp.swf affichant en grand une image sélectionné dans la liste de miniatures.

- J'ai une animation en background qui lance un événement "onCustomAnimEnd" lorsqu'elle finit de se jouer. Dans le champs action de cette animation, j'ai mis :
Code: Tout sélectionner
onCustomAnimEnd LST_dossiers.selectItemFromKey(LST_dossiers.posToIndex(0,0))


Sans résultat. Je pense qu'il y a sûrement un problème de syntaxe mais même si la syntaxe était bonne, je me pose les questions suivantes :

- Est-ce que le fait de sélectionner "programmatiquement" (contrairement à "en cliquant") un item de la liste de dossiers va entraîner l'exécution en cascade des instructions contenues dans la propriété "commands to execute on click" du selector lié ?

- Est-ce que les "positions" d'une liste commence par 0 ou par 1 ? Dans mon cas, j'aimerais sélectionner par défaut le premier item de la liste de dossiers.

- Quelle est la différence entre les positions et index d'une liste ?

Merci d'avance pour votre aide.

?abojad

#2 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 10 January 2010 - 21:30 PM

Il semble que la variable "_listResult" du selector stoque le résultat de la requête initiale effectuée au chargement.

Malheureusement, cette variable est privée et donc pas accessible depuis Silex (n'est-ce pas ?).

C'est dommage car ça me permettrait de faire quelque chose dans ce genre là :

Code: Tout sélectionner
onCustomAnimEnd TXT_dossiers_titre.value=((<b><font size="22" color="#3B4247"><<SELECT_dossiers._listResult[0].titre>></font></b>))
onCustomAnimEnd TXT_dossiers_desc.value=<<SELECT_dossiers._listResult[0].description>>
onCustomAnimEnd SELECT_images.formName=/<<SELECT_dossiers._listResult[0].id>>
onCustomAnimEnd SELECT_images.getRecords


Je comprends de la doc que la variable publique "resultArray" du selector est sensée exposer le contenu de "_listResult" mais ça n'est pas encore implémenté dans le code du selector, c'est bien ça ?

#3 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 11 January 2010 - 11:21 AM

Salut
- Est-ce que le fait de sélectionner "programmatiquement" (contrairement à "en cliquant") un item de la liste de dossiers va entraîner l'exécution en cascade des instructions contenues dans la propriété "commands to execute on click" du selector lié ?

oui, ca devrait

- Est-ce que les "positions" d'une liste commence par 0 ou par 1 ? Dans mon cas, j'aimerais sélectionner par défaut le premier item de la liste de dossiers.

le 1er élément est à l'index 0 (Zéro)

- Quelle est la différence entre les positions et index d'une liste ?

je pense que position est lié au scroll alors que l'index est lié à l'élément


Sinon, ton probleme est assez classique. Je pense que dans l'idéal il faudrait une propriété "selected index at start" par exemple. Mais pour l'instant on fait ca avec une commande posée sur le selector :
Code: Tout sélectionner
onResult selectedIndex=0

Le seul inconvénient que je vois est dans le cas ou on utiliserait un deeplink qui demanderait l'ouverture d'un élément précis, pas du 1er... Mais je crois que par miracle cette technique marche meme dans ce cas :?

Bye
lex.

#4 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 11 January 2010 - 11:23 AM

juste pour info, dans ton code
Code: Tout sélectionner
onCustomAnimEnd TXT_dossiers_titre.value=((<b><font size="22" color="#3B4247"><<SELECT_dossiers._listResult[0].titre>></font></b>))
onCustomAnimEnd TXT_dossiers_desc.value=<<SELECT_dossiers._listResult[0].description>>
onCustomAnimEnd SELECT_images.formName=/<<SELECT_dossiers._listResult[0].id>>
onCustomAnimEnd SELECT_images.getRecords


Il y a une "erreur" : l'interpreteur de silex est + simple que de l'actionscript, il ne comprend pas les "[" et "]" pour les tableaux. donc pour atteindre SELECT_dossiers._listResult[0].id tu dois en fait écrire
Code: Tout sélectionner
SELECT_dossiers._listResult.0.id


#5 Żabojad

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 114 messages

Posté 11 January 2010 - 13:42 PM

Salut Lexa et encore merci pour ta réponse, ça fonctionne désormais comme je voulais...

Au passage, j'ai essayé ça dans le champ action de mon animation :
Code: Tout sélectionner
onCustomAnimEnd alert:<<SELECT_dossiers._listResult.0.id>>


J'ai été surpris de voir que ça marche... La variable est pourtant "private" et je ne l'appelle pas à partir de SELECT_dossiers...

#6 _lex

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1016 messages

Posté 11 January 2010 - 16:07 PM

le coeur de silex est en AS2
l'AS2 et private, tu sais, ca n'est que du style... :-/



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP