IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Panel avec template (extjs 3)


Sujet :

Ext JS / Sencha

  1. #1
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut Panel avec template (extjs 3)
    Bonjour,

    je voudrais afficher dans une panel (via un template avec iframe) un document et avoir la possibilité de fermer le document.
    J'arrive à afficher le document mais je n'arrive pas à avoir la barre de titre de mon panel :/
    Sur mon panel j'ai un titre par defaut.
    Lors de la demande d'ouverture du doc, j'active l'items, je set le titre de mon panel et enfin je fais un overwrite avec le template en lui donnant l'url du document à afficher.
    Tout ce passe bien et sans erreur, mais impossible d'afficher cette barre de titre...

    mon panel contenant le template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var panelCenterViewReport = new Ext.Panel({
    	id: 'panelCenterViewReport',
            title: 'Titre par defaut',
    	tools: [ 
    		{
    			id: 'close',
    			handler: function(event, tool, obj, idTools)
    			{
    				panelCenterReport.layout.setActiveItem(gridReport);
    			}
    		}
    	],
    	border: false,
    	layout: 'fit'
    });
    action faite sur la demande d'ouverture du document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    panelCenterReport.layout.setActiveItem(panelCenterViewReport);
    panelCenterViewReport.setTitle(json.text); // On change le titre
    heightPanelReport = panelCenterViewReport.getHeight();
    tplReport.overwrite('panelCenterViewReport', {url: json.url});
    document.getElementById('idIframeReport').height = heightPanelReport;
    Et mon template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var tplReport = new Ext.Template({ // construction du template
        compiled: true
      },
      '<tpl for=".">',
    	  '<iframe id="idIframeReport" style="border: 0px;" src="{url}" width="100%" scrolling="yes" />',
    	'</tpl>',
    	'<div class="x-clear"></div>'
    );
    # apt-get install freedom

  2. #2
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Bonjour,

    Tu as essayer getInnerHeight() à la place de getHeight ().
    Tu as plusieurs méthode pour avoir la taille de ton panel voir l'api :
    http://dev.sencha.com/deploy/ext-3.4...lass=Ext.Panel

  3. #3
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Je viens de tester et cela me laisse une marge en bas d'environ la taille d'une barre de titre mais elle ne s'affiche toujours pas :/
    # apt-get install freedom

  4. #4
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Ton problème est du CSS et HTML.

    Modifie déjà la déclaration de ton iframe, en HTML l'iframe à besoin d'une balise de fermante soit :
    De plus, regarde du coté CSS que tu lui a appliqué car j'ai l'impression que tu doit avoir une "position: absolute;" sur ton iframe.

    Si ça pose problème c'est pas spécialement propre mais ça fonctionne.
    Ajoute dans la balise style un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'margin-top: ' + (panelCenterViewReport.getHeight() - panelCenterViewReport.getInnerHeight()) + 'px;'
    Voila la tu devrais avoir entête de ton panel.

  5. #5
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Je n'applique aucun CSS à mon iframe...

    Je viens de tester ta solution mais j'ai des erreurs qui remonte mais qui n'empêche pas l'application de fonctionner.
    Et quand j'ouvre le document, je n'est toujours pas la barre de titre :/
    # apt-get install freedom

  6. #6
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Quel est l'erreur car si ça ce trouve ça n'applique pas le margin.
    Vois-tu le margin dans firebug ?

    Comment ça tu fais ta déclaration ?

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    J'avais fais un extension pour avoir un templatePanel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /**
     * templatePanel
     *
     * définit un Panel qui gère seul un template associé
     */
    Ext.namespace('Ext.ux');
     
    Ext.ux.TemplatePanel = Ext.extend(Ext.Panel, {
        //à l'initialisation créer le template.
        initComponent: function() {
            Ext.ux.TemplatePanel.superclass.initComponent.call(this);
            if (typeof this.tpl === 'string') {
                this.tpl = new Ext.XTemplate(this.tpl);
            }
        },
     
        // lors du rendu générer le contenu html.
        onRender: function(ct, position) {
            Ext.ux.TemplatePanel.superclass.onRender.call(this, ct, position);
            if (this.data) {
                this.update(this.data);
            }
        },
     
        //sur mise à jour régénérer le contenu html.
        update: function(data) {
            this.tpl.overwrite(this.body, data);
        }
    });
    Ext.reg('templatepanel', Ext.ux.TemplatePanel);
    utilisé ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      items: [
      {
          //titre de l'onglet fournis par les infos locales
          xtype: 'templatepanel',
          tpl: '<h1>demandes d\'accès à {name}</h1>',
          data: {name: info.text}
      },
    A+JYT

  8. #8
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    aaaaaah pas mal du tout ^^
    je testerais une fois fini ma partie car j'ai résolu "temporairement" mon problème de manière pas top du tout propre.

    Merci encore pour votre aide.
    # apt-get install freedom

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacer un panel avec la souris
    Par Harry dans le forum Delphi
    Réponses: 14
    Dernier message: 05/06/2006, 19h18
  2. génrer fichier html avec template
    Par ramir dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h30
  3. Appel recursif avec template
    Par Math75 dans le forum Langage
    Réponses: 24
    Dernier message: 13/10/2005, 11h57
  4. Centrage d'un Panel avec BorderLayout et FlowLayout
    Par smag dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 09/07/2005, 12h04
  5. Conversion avec template
    Par indy2 dans le forum Langage
    Réponses: 10
    Dernier message: 23/03/2005, 00h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo