[dumb girl asking] fermer des onglets et détruire des choses

fermer des onglets et détruire des choses [dumb girl asking] - HTML/CSS - Programmation

Marsh Posté le 28-03-2008 à 10:03:19    

Vu que j'ai toujours des questions connes à laquelle n'importe quel programmeur digne de ce nom a déjà la réponse, mais que je perds une demi-journée voire plus à trouver la réponse et que je ne vais pas faire un topic pour chaque merdouille, je me permets d'ouvrir ma FAQ perso sur JS, ExtJS et prochainement les CSS ...
 
----
 
Précision : je bosse sous firefox avec firebug, l'appli devra être supportée par IE6et+
et ma BDD, c'est une base de document Domino, donc pas de PHP.
 
Question du jour :
 
dans un fichier abruti.js je définis une fonction cretinToDebile

Code :
  1. var cretinToDebile;
  2. function GestionCretin(){
  3. ...
  4. cretinToDebile = function(){
  5. ...
  6. }
  7. ...
  8. }


 
dans un fichier cuisine.js j'appelle la fonction cretinToDebile()
et j'obtiens l'erreur :  
"CretinToDebile is not a function"
 
mais pourquoi donc ?
 
les RTFM sont mal accueillis [:mullet]


Message édité par stitch+ le 19-05-2008 à 16:06:50

---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 28-03-2008 à 10:03:19   

Reply

Marsh Posté le 28-03-2008 à 10:13:19    

T'as bien appellé la fonction GestionCretin pour initialiser cretinToDebile() ?

Reply

Marsh Posté le 28-03-2008 à 10:34:37    

je ne sais pas ...
 
 
je vais essayer d'être plus claire :
d'un côté, j'ai la gestion des crétins et de l'autre la gestion des débiles
je souhaite transformer des crétins en débiles
et passer du panneau crétin au panneau débile en "transportant" des données (nom, profession, palmarès de crétinitude qui devient palmarès de débilitude, ...)
la fonction faisant la transformation utilise pas mal d'éléments de GestionCretin()
 
mais dans cuisine.js, quand j'appelle cretinToDebile() je n'appelle pas GestionCretin() ... c'est ça le problème ?


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 28-03-2008 à 10:56:00    

dis comme ça, c'est évident.
Bon, comment je fais alors ?
 
parce que si je sors cretinToDebile de GestionDebile, ça va gueuler que plein de trucs ne sont pas définis ...


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 28-03-2008 à 11:09:14    

Faut juste appeller GestionDebile.
 
Genre :

Code :
  1. function GestionCretin(){
  2.  
  3.  ....
  4.  
  5. };
  6.  
  7. GestionCretin();

Reply

Marsh Posté le 28-03-2008 à 11:25:19    

youpi ya \o/
 
me voilà au problème suivant : mapper un xml pour passer du masque cretin au masque debile
mais bon, ça, je peux le vaincre


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 02-04-2008 à 15:14:28    

question du jour, un panel dans un panel,
ça se fait ?
c'est mal ?
j'ai rien compris à la prog ?

 

---
je suppose que je n'ai rien compris et que je m'exprime mal mais que ça existe.


Message édité par stitch+ le 02-04-2008 à 15:49:47

---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 02-04-2008 à 16:05:14    

Reply

Marsh Posté le 02-04-2008 à 16:12:05    

un div dans un div ?  
 
c'est tout a fait légal


---------------

Reply

Marsh Posté le 02-04-2008 à 16:27:34    

je n'écris pas de div :'(
 
dans mon panneau central j'affiche les données issues d'un fichier XML dans un formulaire
 
une partie des données est "non modifiable" mais a besoin d'être affichée
le panel qui englobe le formulaire c'est demandeForm
la liste des éléments de mon formulaire c'est demandeItems

Code :
  1. var demandeForm = new Ext.FormPanel({
  2.  title : 'Gnagnagna',
  3.  header : false,
  4.  layout : 'table',
  5.  region : 'center',
  6.  autoScroll : true,
  7.  reader : demandeReader,
  8.  monitorValid : true,
  9.  defaults : {
  10.   bodyStyle : 'border: 0px; padding:5 5 5 5;font-size: 11px;background-color: #eee'
  11.  },
  12.  layoutConfig : {
  13.   columns : 4
  14.  },
  15.  items : demandeItems
  16. });


 
c'est la liste demandeItems que j'aimerais "scinder"
mais je bloque


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 02-04-2008 à 16:27:34   

Reply

Marsh Posté le 02-04-2008 à 16:43:42    

oui je pense que ca doit etre possible de faire un panel dans un panel ...
 
 
je comprends pas trop ton problème avec demandeItems.
 
si tu ecris avant ta fonctio demandeForm :  
var demandeItems = new Ext.FormPanel({
}
 
J'ai quelques doutes que ce soit ca que tu demandes :)

Reply

Marsh Posté le 02-04-2008 à 16:57:30    

je veux remplacer demandeItems qui a cette gueule :

Code :
  1. var DemandeItems = [{
  2.  html : 'c1'
  3. }, formuleCalculBox, {
  4.  html : 'C2'
  5. }, {
  6.  xtype : 'textarea',
  7.  name : 'c2',
  8.  id : 'c2',
  9.  width : 400,
  10.  height : 100,
  11.  colspan : 3
  12. }, {
  13.  html : 'F1'
  14. }, comboFormuleBox, {
  15.  html : 'F2'
  16. }, comboFormuleAutreBox, {
  17.  xtype : 'hidden',
  18.  id : 'Unid',
  19.  name : 'unid'
  20. }]


 
par [demandeNonModifiableItems, demandeVariableItems]
où demandeNonModifiableItems rassemble par exemple  

Code :
  1. [{
  2.  html : 'c1'
  3. }, formuleCalculBox, {
  4.  html : 'C2'
  5. }, {
  6.  xtype : 'textarea',
  7.  name : 'c2',
  8.  id : 'c2',
  9.  width : 400,
  10.  height : 100,
  11.  colspan : 3
  12. }]


 
et c'est là que se trouve mon problème, si je mets les deux listes à la suite ça ne me sort rien,  ça mouline dans le vent


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 03-04-2008 à 11:11:36    

problème contourné par plein de lignes machin.enable() ou machin.disable() selon les besoins (ya une vingtaine de machin ...)

 

----

 

new question :

 

pas d'erreur sous FF
plein d'erreurs sous IE

 

je pars à la recherche des virgules en fin de liste, et d'autres fantaisies.
toute indication, conseil sur ce pénible chemin est le bienvenue


Message édité par stitch+ le 03-04-2008 à 11:13:20

---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-04-2008 à 10:21:45    

je déteste IE [:sisicaivrai]
 
ligne : 17
caractère : 3
erreur : objet requis
 
...si je vais à la ligne 17 du source :
 
return false;
 
 
[:kneu] je suppose que ce n'est pas de cette ligne qu'il parle
il y a moyen de savoir où se trouve concrètement l'erreur ?


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-04-2008 à 12:24:47    

installer le microsoft script debugger
et en aussi companionJS et là tu auras la vraie ligne

Reply

Marsh Posté le 04-04-2008 à 12:32:41    

je regarde ça :jap:
 
pour le moment je n'avais mis que IE web developper toolbar et euh ... ça ne m'aidait pas


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-04-2008 à 12:40:41    

au hasard, ne sait on jamais ...
en relisant le code fait avant moi, j'ai une question : il ne faut pas forcément quelque chose derrière "return" ?

Code :
  1. if (traitementTab) {
  2.  centralTabPanel.activate(traitementTab);
  3.  if (option == oldOption)
  4.   return;
  5. }


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-04-2008 à 14:34:07    

ms script debugger > j'y pane rien ... ça fait plaisir


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-04-2008 à 14:34:14    

Nan, c'est bon comme ça

Reply

Marsh Posté le 15-04-2008 à 15:21:27    

I'm back \o/
 
je me casse les dents sur un borderlayout dans un border layout dans un border layout
qui n'a pas la gueule attendue (loin s'en faut)
 quelques conseils ? liens ?
 
(et l'api d'extjs est dans les choux)


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 16-04-2008 à 10:55:57    

http://img225.imageshack.us/img225/6983/20080416extjs000qo9.th.jpg
Pourquoi le layout ne prend pas toute la place ?
 
initialement, j'avais ce code :

Code :
  1. BiduleGrid = new Ext.grid.GridPanel({
  2.  header : false,
  3.  region : 'west',
  4.  split : true,
  5.  width : 245,
  6.  collapsible : true,
  7.  store : BiduleStore,
  8.  colModel : BiduleColModel,
  9.  stripeRows : true,
  10.  tbar : new Ext.PagingToolbar({
  11.   pageSize : 20,
  12.   store : BiduleStore,
  13.   displayInfo : false
  14.  })
  15. });
  16. var BiduleForm = new Ext.FormPanel({
  17.  title : 'Gestion des Bidules',
  18.  header : false,
  19.  layout : 'table',
  20.  region : 'center',
  21.  autoScroll : true,
  22.  reader : BiduleClassicReader,
  23.  monitorValid : true,
  24.  defaults : {
  25.   bodyStyle : 'border: 0px; padding:5 5 5 5;font-size: 11px;background-color: #eee'
  26.  },
  27.  layoutConfig : {
  28.   columns : 4
  29.  },
  30.  items : BiduleItems
  31. });
  32. BiduleTab = new Ext.Panel({
  33.  title : 'Bidules',
  34.  id : 'panneauIncidents',
  35.  hideMode : 'offsets',
  36.  autoWidth : true,
  37.  height : 450,
  38.  plain : true,
  39.  layout : 'border',
  40.  items : [BiduleGrid, BiduleForm]
  41. });


 
Dans la partie où il y a BiduleForm, j'ai besoin de mettre BiduleForm et autre chose
j'ai donc ajouté un layout où mettre BiduleForm :

Code :
  1. BiduleSupportForm = new Ext.Panel({
  2.  title : 'Fiche',
  3.  hideMode : 'offsets',
  4.  autoWidth : true,
  5.  region : 'center',
  6.  height : 450,
  7.  plain : true,
  8.  layout : 'border',
  9.  items : BiduleForm
  10. });
  11. BiduleTab = new Ext.Panel({
  12.  title : 'Bidules',
  13.  id : 'panneauBidules',
  14.  hideMode : 'offsets',
  15.  autoWidth : true,
  16.  height : 450,
  17.  plain : true,
  18.  layout : 'border',
  19.  items : [BiduleGrid, BiduleSupportForm]
  20. });


et c'est avec ce code que le problème d'affichage se fait


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 16-04-2008 à 11:10:47    

c'est un peu de la programmation spageti :)
 
sinon, les items de BiduleForm ne font référence à rien.  
c'est normal que BiduleItems ne vaut rien ?

Reply

Marsh Posté le 16-04-2008 à 11:16:07    

j'ai pas mis les 800lignes de code qui précèdent :o mais BiduleItems est défini et même complet :o
 
la première fournée de code que je donne me fait afficher tout ce que je veux où je veux comme je lui dis
 
c'est quand je veux mettre l'un des panels dans un layout (parce que je vais avoir besoin de mettre 2 panels là où il n'y en a qu'un) qu'il se recroqueville
 
pour la prog spaghetti, ça veut dire quoi ?
je ne suis pas contre m'améliorer :jap:


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 16-04-2008 à 11:34:59    

J'ai trouvé [:centsix]  
 
dans BiduleSupportForm, j'ai rajouté le paramètre suivant :
 

Code :
  1. fitToFrame: true


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 16-04-2008 à 12:28:53    

stitch+ a écrit :


je souhaite transformer des crétins en débiles


débile = (débile)crétin;
 
[:neowen]

Reply

Marsh Posté le 18-04-2008 à 10:09:27    

la programmation spagetti, j'entends un peu le meme principe que les goto label que tous bon programmeur conseille.... En fait, je veut dire que je trouve que tu passes un peu trop par des variables. Ce n'est pas évident de suivre. Mais d'un autre coté si c'est mal indenté dans les balise [cpp], c'est pas plus mal de passer par des variables....
 
 
Sinon merci pour ta réponse. Ta solution te permet d'utiliser la region "center" et de remplir toute la région.  
Je t'aurais répondu d'essayer de passer ton panel fitlayout mais le problème c'est que tu n'aurais pas pu mettre "center". Bref pas une réponse terrible :)
 
 
Sinon as tu remarqué que lorsque mon mets un combobox en enable dans les options, la fléche est tronqué MAIS uniquement sous IE. :(
 
 
http://img238.imageshack.us/img238/2779/disable2fn4.jpg
 

Reply

Marsh Posté le 18-04-2008 à 10:55:44    

weed a écrit :

la programmation spagetti, j'entends un peu le meme principe que les goto label que tous bon programmeur conseille.... En fait, je veut dire que je trouve que tu passes un peu trop par des variables. Ce n'est pas évident de suivre. Mais d'un autre coté si c'est mal indenté dans les balise [cpp], c'est pas plus mal de passer par des variables....

ma yé né lé fé pas exprés, yé pouss, yé pouss é pi ça passe
 
ou pas.
 
J'ai jamais programmé aussi cradement, à mon goût.

weed a écrit :


Sinon as tu remarqué que lorsque mon mets un combobox en enable dans les options, la fléche est tronqué MAIS uniquement sous IE. :(
http://img238.imageshack.us/img238 [...] le2fn4.jpg


nan, j'ai pas remarqué :??:
 
http://img74.imageshack.us/img74/8939/20080418extjs000hz0.jpg
chezmoiçacoupepas


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 24-04-2008 à 16:35:06    

stitch+, utilises tu JsonView ?  
 
Mon petit problème c'est que je n'arrive pas à filtrer des données d'un JsonView.  
 
Lorsqu'il s'agit de filtrer des données d'un grid normal, pas de problème venant d'un Data.Store.
 
J'utilise la méthode filterBy. Le 2ème argument est un fonction qui est appelé à chaque record et cette fonction recoit comme argument le record courant. Donc dans mon filter, il m'est possible de filtrer avec un truc du genre :
 
ds.filterBy(function(r){
     if (r.data.id == 1)
           return true;
    else
           return false;
}
 
 
Il existe aussi un filterBy pour le jsonView mais la fonction "fn" a l'air de rien recevoir comme argument ...
 

Citation :


Filter by a function. The passed function will be called with each object in the current dataset. If the function returns true the value is kept, otherwise it is filtered.
Parameters:
    * fn : Function
    * scope : Object
      (optional) The scope of the function (defaults to this JsonView)
Returns:
    * void


 
 
As tu deja eu l'occasion de filtrer un JsonView ?
 
Je me permet de poster dans ton thread pour concentrer les sujet sur ExtJS

Reply

Marsh Posté le 24-04-2008 à 18:12:59    

je n'utilise pas JsonView ou alors à l'insu de mon plein gré
 
et fais comme chez toi ;)


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 02-05-2008 à 15:28:41    

la question du jour :  
peut on faire un tabpanel dans lequel on ne voit pas les onglets ?


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 04-05-2008 à 23:46:59    

j'ai trouvé au fait pour mon pb de filtre sur un jview. Je te mettrais la réponse :).
Malheuresement pour toi, je n'ai jamais créé des tabulations. Donc je peux pas pour le moment t'aider.

Reply

Marsh Posté le 14-05-2008 à 09:52:05    

Dumb girl is back [:mossieurpropre]

 

j'ai un form, priereForm :

Code :
  1. priereForm = new Ext.FormPanel({
  2.  title : 'Prière',
  3.  layout : 'table',
  4.  region : 'center',
  5.  autoScroll : true,
  6.  reader : proerClassicReader,
  7.  monitorValid : true,
  8.  defaults : {
  9.   bodyStyle : 'border: 0px; padding:5 5 5 5;font-size: 11px;background-color: #eee'
  10.  },
  11.  layoutConfig : {
  12.   columns : 4
  13.  },
  14.  items : priereItems
  15. });


mais j'ai plusieurs versions de priereItems, qui ont des champs en commun.

Code :
  1. priereRapideItems = [{
  2.  html : 'Sujet'
  3. }, sujetField, {
  4.  html : 'Description'
  5. }, descriptionField]
 
Code :
  1. priereLotoItems = [{
  2.  html : 'Quel jeu ?'
  3. }, comboJeux, {
  4.  html : 'Pourquoi t'aider ?'
  5. }, descriptionField, {
  6.  html : 'Combien donneras tu ?'
  7. }, donField]
 
Code :
  1. suppliqueItems = [{
  2.  html : 'Sujet'
  3. }, sujetField, {
  4.  html : 'Bénéficiaires'
  5. }, comboPersonnes, {
  6.  html : 'Quelle est ta supplique ?'
  7. }, descriptionField, {
  8.  html : 'Quel sera ton sacrifice ?'
  9. }, donField]
 

Selon une action de l'utilisateur (clique d'un bouton) que je sais reconnaitre, il faut que je change la liste d'items de mon formulaire

 

actuellement, une fois que priereForm a été définie, je n'arrive pas à modifier priereItems

 

Si quelqu'un avait une piste, je suis preneuse :o


Message édité par stitch+ le 14-05-2008 à 10:01:46

---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 19-05-2008 à 16:15:54    

Nouveau problème : je veux fermer mes onglets et bien détruire les objets en fermant
 
mon problème est l'objet TestATab : il n'est pas détruit, ni vidé, ni réduit à indéfini et ça,  
ça me pose des problèmes quand je veux réouvrir l'onglet.
 
J'ai tenté de mettre des listeners mais ça semble sans succès. Des idées ?
 

Code :
  1. var TestATab; // mon onglet
  2. function testAbracadabra() {
  3. // si mon onglet est ouvert, je le rends actif
  4. if (TestATab) {
  5.  centralTabPanel.activate(TestATab);
  6.  return;
  7. }
  8. //là je fais tout mon bordel : déclaration de grid, form, fonction, ...  
  9. //tout ce petit monde est correctement détruit à la fermeture de l'onglet
  10. // voici la déclaration de mon panel  
  11. TestATab = new Ext.Panel({
  12.  title : 'TestAbracadabra',
  13.  hideMode : 'offsets',
  14.  autoWidth : true,
  15.  height : 450,
  16.  closable : true, // il est "fermable"
  17.  plain : true,
  18.  layout : 'border',
  19.  items : TestAForm
  20. });
  21. // je veux ajouter ce listener
  22. TestATab.on('beforeclose', function(p) {
  23.   TestATab.destroy();
  24.   var TestATab;
  25.  })
  26. // j'ai aussi tenté ma chance avec ce listener
  27. TestATab.on('close', function(p) {
  28.   TestATab.destroy();
  29.   var TestATab;
  30.  })
  31. //mon panel est ajouté en tant qu'onglet à mon panneau central
  32. Ext.getCmp('panneauCentral').add(TestATab);
  33. Ext.getCmp('panneauCentral').doLayout();
  34. centralTabPanel.activate(TestATab);
  35. };


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 19-05-2008 à 16:26:27    

stitch+ a écrit :

Nouveau problème : je veux fermer mes onglets et bien détruire les objets en fermant
 
mon problème est l'objet TestATab : il n'est pas détruit, ni vidé, ni réduit à indéfini et ça,  
ça me pose des problèmes quand je veux réouvrir l'onglet.
 
J'ai tenté de mettre des listeners mais ça semble sans succès. Des idées ?
 


 
 
Es tu sur que tes evenements ne sont pas déclenchés ?  
As tu essayés ceci ?  
 

Code :
  1. // je veux ajouter ce listener
  2. TestATab.on('beforeclose', function(p) {
  3.   TestATab.destroy();
  4.   var TestATab;
  5.                         alert ('coucou c est moi');
  6.  })
  7. // j'ai aussi tenté ma chance avec ce listener
  8. TestATab.on('close', function(p) {
  9.   TestATab.destroy();
  10.   var TestATab;
  11.                         alert ('coucou c est moi');
  12.  })


 
Si mon coucou n'est pas affiché ca serait plutot les evenements (termes utilisé de ExtJS  :o )...
Par contre si c'est reellement la destruction avec ton destroy qui ne fonctionne pas, je te sugere de cacher ton onglet dans ce cas. Ce n'est pas tres propre j'avoue.

Reply

Marsh Posté le 19-05-2008 à 16:43:06    

weed a écrit :


Es tu sur que tes evenements ne sont pas déclenchés ?  
As tu essayés ceci ?  


effectivement, contrairement à ce que laisse croire la doc, le panel n'a rien à foutre de close et beforeclose ...

Code :
  1. TestATab = new Ext.Panel({
  2.  title : 'TestAs',
  3.  hideMode : 'offsets',
  4.  autoWidth : true,
  5.  height : 450,
  6.  closable : true,
  7.  plain : true,
  8.  layout : 'border',
  9.  items : TestAForm,
  10.  listeners : {
  11.   'destroy' : function(p) {
  12.    alert('destroy !'); // appelé à la fermeture de l'onglet
  13.   },
  14.   'beforeclose' : function(p) {
  15.    alert('beforeclose !'); // jamais appelé
  16.   },
  17.   'close' : function(p) {
  18.    alert('close !'); // jamais appelé
  19.   }
  20.  }
  21. });


je vais voir si j'arrive à mes fins avec le destroy


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le 19-05-2008 à 16:47:05    

tu n'as pas aimé mes "coucou c moi"  :----)
oki, c'est un bon début pour trouver une solution à ton pb

Reply

Marsh Posté le 19-05-2008 à 17:07:38    

Code :
  1. TestATab = new Ext.Panel({
  2.  title : 'TestAs',
  3.  hideMode : 'offsets',
  4.  autoWidth : true,
  5.  height : 450,
  6.  closable : true,
  7.  plain : true,
  8.  layout : 'border',
  9.  items : TestAForm,
  10.  listeners : {
  11.   'destroy' : function(p) {
  12.    alert('destroy !');
  13.    TestATab.destroy();
  14.   }
  15.  }
  16. });


je tâtonne, et je découvre que ce listener là, ben ça fait soit une boucle infine de messagebox, soit firefox le détecte et pan "too much recursion" :D


---------------
viendez broder, mon blog et à écouter : la Pause Bad, parlons badminton
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed