Project

General

Profile

Modif de la vue des preview » History » Version 3

Anonymous, 06/03/2012 11:40

1 1 Anonymous
h1.  Modif de la vue des preview
2 1 Anonymous
3 3 Anonymous
h2. Première étape :
4 1 Anonymous
5 1 Anonymous
Dans le fichier viewDataDetails.js qui se trouve dans workspace/client-user/js/components/ : 
6 1 Anonymous
7 1 Anonymous
Modification faite pour qu'on ne voit pas le panneau prévu pour les preview et les datasetLink si on n'en a pas dans le dataset. Et ré arrangement de la vu pour que le panel de la preview soit plus grande et au center et celui des données soit à l'ouest quand il a une preview de définie.
8 1 Anonymous
9 1 Anonymous
Tout d'abord j'ai mis en commentaire la ligne (vers les 118) : sitools.component.users.viewDataDetail.superclass.initComponent.call(this) car je l'appelle dans une autre fonction. 
10 1 Anonymous
11 1 Anonymous
Dans la fonction getCmDefAndbuildForm :
12 1 Anonymous
13 1 Anonymous
Je regarde dans le datasetColumnModel si on a une colonne qui est une preview ou un lien vers d'autres dataset (si c'est le cas je passe un boolean à true). Pour cela j’insère le code suivant juste après this.datasetColumnModel = Json.dataset.columnModel dans le success de la requete Ajax :
14 1 Anonymous
<pre><code class="javascript">
15 1 Anonymous
16 1 Anonymous
var booleanPanelImg = false;
17 1 Anonymous
Ext.each(this.datasetColumnModel, function(item) {
18 1 Anonymous
if(item.columnRenderer == "displayImage" || item.columnRenderer == "datasetIconLink" || item.columnRenderer == "datasetLink"){
19 1 Anonymous
booleanPanelImg = true;
20 1 Anonymous
}
21 1 Anonymous
});
22 1 Anonymous
this.changeDisplayColumn(booleanPanelImg); 
23 1 Anonymous
24 1 Anonymous
</code></pre>
25 1 Anonymous
26 1 Anonymous
27 1 Anonymous
La fonction changeDisplayColumn va appliquer les changements de vues selon le booleanPanelImg, qui est a true si on a une preview ou un lien et false dans le cas contraire.
28 1 Anonymous
29 1 Anonymous
Voici le code de cette fonction, que j'ai mis à la fin juste aprés la fonction findColumn:
30 1 Anonymous
31 1 Anonymous
32 1 Anonymous
<pre><code class="javascript">
33 1 Anonymous
34 1 Anonymous
changeDisplayColumn : function(bool){
35 1 Anonymous
if(bool){
36 1 Anonymous
this.formPanel.region = "west";
37 1 Anonymous
this.formPanelImg.region = "center";
38 1 Anonymous
39 1 Anonymous
this.formPanelImg.collasped = true;
40 1 Anonymous
41 1 Anonymous
}else{
42 1 Anonymous
43 1 Anonymous
this.formPanel.collapsible = false;
44 1 Anonymous
this.formPanel.split = false;
45 1 Anonymous
this.formPanel.width = 775;
46 1 Anonymous
this.items = [this.formPanel];
47 1 Anonymous
48 1 Anonymous
}
49 1 Anonymous
50 1 Anonymous
sitools.component.users.viewDataDetail.superclass.initComponent.call(this);
51 1 Anonymous
52 1 Anonymous
}
53 1 Anonymous
</code></pre>
54 1 Anonymous
55 3 Anonymous
h2. Deuxième étape :
56 1 Anonymous
57 1 Anonymous
Pour redimensionner le conteneur des 2 panels du viewDataDetail, il faut ouvrir le fichier client-user/js/desktop/desktop.js.
58 1 Anonymous
59 1 Anonymous
Dans la fonction addWinData
60 1 Anonymous
61 1 Anonymous
Il faut creer une variable qui va pouvoir nous dire quel type de fenetre est ouverte :
62 1 Anonymous
<pre><code class="javascript">
63 1 Anonymous
var moduleName = windowSettings.title.substring(0,12);
64 1 Anonymous
</code></pre>
65 1 Anonymous
Puis avec un test, voir si c'est une fenetre de type "Data details" et si c'est le cas redefnir ma taille de la fenetre comme cela par exemple :
66 1 Anonymous
<pre><code class="javascript">
67 1 Anonymous
68 1 Anonymous
if(moduleName == "Data details"){
69 1 Anonymous
var winWidth = 800;
70 1 Anonymous
}else{
71 1 Anonymous
72 1 Anonymous
var winWidth = DEFAULT_WIN_WIDTH;
73 1 Anonymous
74 1 Anonymous
}
75 1 Anonymous
</code></pre>