Commit 70aabdee119dcbbff6eea4e508b0fe51f0528022

Authored by elena
1 parent 3a5f60a1

catalog draft

js/app/views/CatalogUI.js
... ... @@ -13,13 +13,15 @@ Ext.define('amdaUI.CatalogUI', {
13 13  
14 14 isCatalog : true,
15 15  
16   - constructor: function(config) {
17   - this.init(config);
  16 + constructor: function(config)
  17 + {
  18 + this.init(config);
18 19 this.callParent(arguments);;
19   - if (this.object) this.loadObject();
  20 + if (this.object) this.loadObject();
20 21 },
21 22  
22   - setObject : function (object) {
  23 + setObject : function (object)
  24 + {
23 25 // set object
24 26 this.object = object;
25 27  
... ... @@ -30,21 +32,21 @@ Ext.define('amdaUI.CatalogUI', {
30 32 /**
31 33 * set params description into this.object
32 34 */
33   - setParamInfo : function(parameters) {
34   -
35   - var params = [];
36   - Ext.Array.each(parameters, function(item, index) {
37   - params[index] = item;
38   - }, this);
39   -
40   - this.object.set('parameters', params);
41   -
  35 + setParamInfo : function(parameters)
  36 + {
  37 + var params = [];
  38 + Ext.Array.each(parameters, function(item, index) {
  39 + params[index] = item;
  40 + }, this);
  41 +
  42 + this.object.set('parameters', params);
42 43 },
43 44  
44 45 /**
45 46 * update this.object from form
46 47 */
47   - updateObject : function(){
  48 + updateObject : function()
  49 + {
48 50 // get the basic form
49 51 var basicForm = this.formPanel.getForm();
50 52 var updateStatus = true;
... ... @@ -69,7 +71,8 @@ Ext.define('amdaUI.CatalogUI', {
69 71 },
70 72  
71 73  
72   - updateCount : function() {
  74 + updateCount : function()
  75 + {
73 76 this.object.set('nbIntervals',this.TTGrid.getStore().getTotalCount());
74 77 this.formPanel.getForm().findField('nbIntervals').setValue(this.object.get('nbIntervals'));
75 78 },
... ... @@ -77,258 +80,263 @@ Ext.define('amdaUI.CatalogUI', {
77 80 /**
78 81 * load object catalog into this view
79 82 */
80   - loadObject : function(){
81   - // load object into form
82   - this.formPanel.getForm().loadRecord(this.object);
83   -
84   - this.status = null;
  83 + loadObject : function()
  84 + {
  85 + // load object into form
  86 + this.formPanel.getForm().loadRecord(this.object);
85 87  
86   - var me = this;
87   -
88   - var onAfterInit = function(result, e) {
89   -
90   - if (!result || !result.success)
91   - {
92   - if (result.message)
93   - myDesktopApp.errorMsg(result.message);
94   - else
95   - myDesktopApp.errorMsg('Unknown error during catalog cache initialisation');
96   - return;
97   - }
98   -
99   -
100   - var fields = [], columns = [], i = 2, width, index;
101   -
102   - fields[0] = Ext.create('Ext.data.Field',{ name : 'start' });
103   - fields[1] = Ext.create('Ext.data.Field',{ name : 'stop' });
104   -
105   - columns[0] = Ext.create('Ext.grid.column.RowNumberer');
106   -
107   - columns[1] = Ext.create('Ext.grid.column.Column', { text: 'Start Time', sortable : false, dataIndex: 'start',
108   - width : 120, menuDisabled: true });
109   - columns[2] = Ext.create('Ext.grid.column.Column', { text: 'Stop Time', sortable : false, dataIndex: 'stop',
110   - width : 120, menuDisabled: true });
111   -
112   - Ext.Array.each(result.parameters, function(obj) {
113   - index = 'param'+i.toString();
114   - fields[i] = Ext.create('Ext.data.Field',{ name : index });
115   - width = 50. * parseInt(obj.size);
116   - columns[i+1] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false, dataIndex: index,
117   - width : width, menuDisabled: true });
118   - i++;
119   - });
120   -
121   -
122   - var store = Ext.create('Ext.data.Store', {
123   - fields: fields,
124   - autoDestroy: false,
125   - pageSize : 200,
126   - buffered : true,
127   - purgePageCount: 0,
128   - remoteSort: true,
129   - proxy: {
130   - type: 'direct',
131   - api :
132   - {
133   - read : AmdaAction.readTTCacheIntervals
134   - },
135   - // remplir automatiquement tt, sharedtt , catalog, shared catalog
136   - extraParams : {'typeTT' : 'catalog'},
137   - reader:
138   - {
139   - type: 'json',
140   - root: 'intervals',
141   - totalProperty : 'totalCount'
142   - }
143   - },
144   - listeners: {
145   - scope : me,
146   - load: function(store,records) {
147   - // myDesktopApp.EventManager.fireEvent('refresh');
148   - me.TTGrid.getView().refresh();
149   - me.TTGrid.getSelectionModel().refresh();
150   - me.updateCount();
151   - //Statistical plugin
152   - // this.fireEvent("refresh");
153   - }
154   - }
155   - });
156   -
157   - me.TTGrid.reconfigure(store, columns);
158   -
159   -//
160   -// me.TTGrid.getSelectionModel().deselectAll();
161   -//
162   -// // clear filters
163   -// me.TTGrid.getStore().clearFilter(true);
164   -//
165   -// //clear sort
166   -// me.TTGrid.getStore().sorters.clear();
167   -// //me.TTGrid.getStore().sorters = new Ext.util.MixedCollection();
168   -//
169   - //set cache token to the Catalog object
170   - me.object.set('cacheToken', result.token);
171   - me.setParamInfo(result.parameters);
172   -
173   - me.TTGrid.getStore().load();
  88 + this.status = null;
  89 +
  90 + var me = this;
174 91  
175   - me.status = result.status;
  92 + var onAfterInit = function(result, e)
  93 + {
  94 + if (!result || !result.success)
  95 + {
  96 + if (result.message)
  97 + myDesktopApp.errorMsg(result.message);
  98 + else
  99 + myDesktopApp.errorMsg('Unknown error during catalog cache initialisation');
  100 + return;
  101 + }
  102 +
  103 + var fields = [], columns = [], i = 3, width, index;
  104 +
  105 + var fieldsConfig = [{ name : 'start' },{ name : 'stop' },{ name: 'cacheId', type : 'int'},
  106 + { name: 'isNew', type : 'boolean', defaultValue: false },
  107 + { name: 'isModified', type : 'boolean', defaultValue: false}
  108 + ];
  109 +
  110 + for (var j = 0; j < 5; j++) fields[j] = Ext.create('Ext.data.Field', fieldsConfig[j]);
  111 +
  112 + columns[0] = Ext.create('Ext.grid.column.RowNumberer');
176 113  
177   - };
  114 + columns[1] = Ext.create('Ext.grid.column.Column', { text: 'Start Time', sortable : false, dataIndex: 'start',
  115 + width : 120, menuDisabled: true });
  116 + columns[2] = Ext.create('Ext.grid.column.Column', { text: 'Stop Time', sortable : false, dataIndex: 'stop',
  117 + width : 120, menuDisabled: true });
  118 +
  119 + Ext.Array.each(result.parameters, function(obj)
  120 + {
  121 + index = 'param'+(i-1).toString();
  122 + fields[i+2] = Ext.create('Ext.data.Field',{ name : index });
  123 + width = 50. * parseInt(obj.size);
  124 + columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false, dataIndex: index,
  125 + width : width, menuDisabled: true });
  126 + i++;
  127 + });
  128 +
  129 +
  130 +
  131 + var store = Ext.create('Ext.data.Store', {
  132 + fields: fields,
  133 + autoDestroy: false,
  134 + pageSize : 200,
  135 + buffered : true,
  136 + purgePageCount: 0,
  137 + remoteSort: true,
  138 + proxy: {
  139 + type: 'direct',
  140 + api :
  141 + {
  142 + read : AmdaAction.readTTCacheIntervals
  143 + },
  144 + // remplir automatiquement tt, sharedtt , catalog, shared catalog
  145 + extraParams : {'typeTT' : 'catalog'},
  146 + reader:
  147 + {
  148 + type: 'json',
  149 + root: 'intervals',
  150 + totalProperty : 'totalCount'
  151 + }
  152 + },
  153 + listeners: {
  154 + scope : me,
  155 + load: function(store,records) {
  156 + // myDesktopApp.EventManager.fireEvent('refresh');
  157 + me.TTGrid.getView().refresh();
  158 + me.TTGrid.getSelectionModel().refresh();
  159 + me.updateCount();
  160 + //Statistical plugin
  161 + // this.fireEvent("refresh");
  162 + }
  163 + }
  164 + });
  165 +
  166 + me.TTGrid.reconfigure(store, columns);
  167 +
  168 + me.TTGrid.getSelectionModel().deselectAll();
  169 + //
  170 + // // clear filters
  171 + // me.TTGrid.getStore().clearFilter(true);
  172 + //
  173 + // //clear sort
  174 + // me.TTGrid.getStore().sorters.clear();
  175 + // //me.TTGrid.getStore().sorters = new Ext.util.MixedCollection();
  176 + //
  177 + //set cache token to the Catalog object
  178 + me.object.set('cacheToken', result.token);
  179 + me.setParamInfo(result.parameters);
  180 +
  181 + me.TTGrid.getStore().load();
  182 +
  183 + me.status = result.status;
  184 + };
178 185  
179   - if (this.object.get('fromPlugin'))
180   - {
181   - if (this.object.get('objFormat') && this.object.get('objFormat') != '')
182   - {
183   - //From uploaded file
184   - //AmdaAction.initTTCacheFromUploadedFile(this.object.get('objName'), this.object.get('objFormat'), onAfterInit);
185   - }
186   - else
187   - {
188   - //From tmp object (ie Search result)
189   - AmdaAction.initTTCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), this.isCatalog, onAfterInit);
190   - }
191   - }
192   - else
193   - {
194   - var typeTT = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id).linkedNode.data.nodeType;
195   - if (this.object.get('id') == '')
196   - {
197   - //Init empty cache
198   - AmdaAction.initTTCache(this.isCatalog, onAfterInit);
199   - }
200   - else
201   - {
202   - //From existing TT file
203   - AmdaAction.initTTCacheFromTT(this.object.get('id'), 'catalog', onAfterInit);
204   - }
205   - }
  186 + if (this.object.get('fromPlugin'))
  187 + {
  188 + if (this.object.get('objFormat') && this.object.get('objFormat') != '')
  189 + {
  190 + //From uploaded file
  191 + //AmdaAction.initTTCacheFromUploadedFile(this.object.get('objName'), this.object.get('objFormat'), onAfterInit);
  192 + }
  193 + else
  194 + {
  195 + //From tmp object (ie Search result)
  196 + AmdaAction.initTTCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), this.isCatalog, onAfterInit);
  197 + }
  198 + }
  199 + else
  200 + {
  201 + var typeTT = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id).linkedNode.data.nodeType;
  202 + if (this.object.get('id') == '')
  203 + {
  204 + //Init empty cache
  205 + AmdaAction.initTTCache(this.isCatalog, onAfterInit);
  206 + }
  207 + else
  208 + {
  209 + //From existing TT file
  210 + AmdaAction.initTTCacheFromTT(this.object.get('id'), 'catalog', onAfterInit);
  211 + }
  212 + }
206 213 },
  214 +
207 215 checkIntervalsStatusForSave : function(onStatusOk) {
208   - onStatusOk();
  216 + onStatusOk();
209 217 },
210 218  
211 219 /*
212 220 * save method called by Save button
213 221 */
214   - saveProcess : function(toRename){
215   - var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
  222 + saveProcess : function(toRename)
  223 + {
  224 + var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
216 225  
217 226 // if the name has been modified this is a creation
218   - if (this.fclose()) {
219   -
220   - if (this.object.isModified('name') || this.object.get('fromPlugin')) {
221   -
222   - // if object already has an id : it's a 'rename' of an existing
223   - if (this.object.get('id')){
224   - // the context Node is the parent node of current edited one
225   - var contextNode = module.linkedNode.parentNode;
226   - // link a new node to the TimeTableModule
227   - module.createLinkedNode();
228   - // set the contextNode
229   - module.linkedNode.set('contextNode',contextNode);
230   - // create a new object linked
231   - module.createObject(this.object.getJsonValues());
232   -
233   - var obj = module.linkedNode.get('object');
234   - // synchronisation of objects
235   - this.object = obj;
236   - if (toRename) module.linkedNode.toRename = true;
237   - }
238   - module.linkedNode.create({callback : function() {module.linkedNode.update();}, scope : this});
239   - } else {
240   - //update
241   - module.linkedNode.update();
242   - }
243   - }
  227 + if (this.fclose())
  228 + {
  229 + if (this.object.isModified('name') || this.object.get('fromPlugin')) {
  230 + // if object already has an id : it's a 'rename' of an existing
  231 + if (this.object.get('id')){
  232 + // the context Node is the parent node of current edited one
  233 + var contextNode = module.linkedNode.parentNode;
  234 + // link a new node to the TimeTableModule
  235 + module.createLinkedNode();
  236 + // set the contextNode
  237 + module.linkedNode.set('contextNode',contextNode);
  238 + // create a new object linked
  239 + module.createObject(this.object.getJsonValues());
  240 +
  241 + var obj = module.linkedNode.get('object');
  242 + // synchronisation of objects
  243 + this.object = obj;
  244 + if (toRename) module.linkedNode.toRename = true;
  245 + }
  246 + module.linkedNode.create({callback : function() {module.linkedNode.update();}, scope : this});
  247 + } else {
  248 + //update
  249 + module.linkedNode.update();
  250 + }
  251 + }
244 252 },
245 253  
246 254 /**
247 255 * Check if changes were made before closing window
248 256 * @return true if changes
249 257 */
250   - fclose : function() {
  258 + fclose : function()
  259 + {
251 260 if (this.status == null)
252 261 return false;
253 262  
254 263 var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
255   - return isDirty;
  264 + return isDirty;
256 265 },
257 266  
258 267  
259   - init : function (config) {
  268 + init : function (config)
  269 + {
  270 + this.object = config.object;
260 271  
261   - this.object = config.object;
262   -
263   - this.fieldName = new Ext.form.field.Text({
264   - fieldLabel: 'Name',
265   - allowBlank : false,
266   - stripCharsRe: /(^\s+|\s+$)/g,
267   - emptyText: 'Please no spaces!',
268   - name: 'name',
269   - validateOnChange: false,
270   - validateOnBlur: false,
271   - validFlag: false,
272   - validator : function() {
273   - return this.validFlag;
274   - }
275   - });
  272 + this.fieldName = new Ext.form.field.Text({
  273 + fieldLabel: 'Name',
  274 + allowBlank : false,
  275 + stripCharsRe: /(^\s+|\s+$)/g,
  276 + emptyText: 'Please no spaces!',
  277 + name: 'name',
  278 + validateOnChange: false,
  279 + validateOnBlur: false,
  280 + validFlag: false,
  281 + validator : function() {
  282 + return this.validFlag;
  283 + }
  284 + });
276 285  
277 286  
278   - this.TTGrid = Ext.create('Ext.grid.Panel', {
279   -// title: 'Catalog',
280   - height: 530,
281   - columns: [
282   - { text: '', dataIndex: '' }
283   -
284   - ],
285   - frame: true,
286   - dockedItems: [{
287   - xtype: 'toolbar',
288   - items: [{
289   - iconCls: 'icon-add',
290   - scope: this,
291   - handler: function(){
292   -// cellEditing.cancelEdit();
293   -//
294   -// var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
295   -// var row = 0;
296   -// if (selection)
297   -// row = store.indexOf(selection) + 1;
298   -// this.TTGrid.getSelectionModel().deselectAll();
299   -//
300   -// var me = this;
301   -// AmdaAction.addTTCacheInterval({'index' : row}, function (result, e) {
302   -// this.status = result.status;
303   -// this.TTGrid.getStore().reload({
304   -// callback : function(records, options, success) {
305   -// me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function() {
306   -// me.TTGrid.getView().select(row);
307   -// cellEditing.startEditByPosition({row: row, column: 1});
308   -// }, me);
309   -// }
310   -// });
311   -// }, this);
312   - }
313   - }, {
314   - iconCls: 'icon-delete',
315   - disabled: true,
316   - itemId: 'delete',
317   - scope: this,
318   - handler: function(){
319   -// var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
320   -// if (selection) {
321   -// var rowId = selection.get('cacheId');
322   -// this.TTGrid.getSelectionModel().deselectAll();
323   -// AmdaAction.removeTTCacheIntervalFromId(rowId, function (result, e) {
324   -// this.status = result.status;
325   -// this.TTGrid.getStore().reload();
326   -// }, this);
327   -// }
328   - }
329   - }]
330   - }]
331   - });
  287 + this.TTGrid = Ext.create('Ext.grid.Panel', {
  288 + height: 530,
  289 + columns: [ ],
  290 + frame: true,
  291 + dockedItems: [{
  292 + xtype: 'toolbar',
  293 + items: [{
  294 + iconCls: 'icon-add',
  295 + scope: this,
  296 + handler: function(){
  297 + alert('NOT IMPLEMENTED YET');
  298 + // cellEditing.cancelEdit();
  299 + //
  300 + // var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
  301 + // var row = 0;
  302 + // if (selection)
  303 + // row = store.indexOf(selection) + 1;
  304 + // this.TTGrid.getSelectionModel().deselectAll();
  305 + //
  306 + // var me = this;
  307 + // AmdaAction.addTTCacheInterval({'index' : row}, function (result, e) {
  308 + // this.status = result.status;
  309 + // this.TTGrid.getStore().reload({
  310 + // callback : function(records, options, success) {
  311 + // me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function() {
  312 + // me.TTGrid.getView().select(row);
  313 + // cellEditing.startEditByPosition({row: row, column: 1});
  314 + // }, me);
  315 + // }
  316 + // });
  317 + // }, this);
  318 + }
  319 + },{
  320 + iconCls: 'icon-delete',
  321 + disabled: true,
  322 + itemId: 'delete',
  323 + scope: this,
  324 + handler: function(){
  325 + var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
  326 + if (selection)
  327 + {
  328 + var rowId = selection.get('cacheId');
  329 + console.log(selection);
  330 + this.TTGrid.getSelectionModel().deselectAll();
  331 + AmdaAction.removeTTCacheIntervalFromId(rowId, this.isCatalog, function (result, e) {
  332 + this.status = result.status;
  333 + this.TTGrid.getStore().reload();
  334 + }, this);
  335 + }
  336 + }
  337 + }]
  338 + }]
  339 + });
332 340  
333 341 this.formPanel = Ext.create('Ext.form.Panel', {
334 342 region : 'center',
... ... @@ -456,10 +464,10 @@ Ext.define(&#39;amdaUI.CatalogUI&#39;, {
456 464 ]
457 465 }
458 466 ]
459   - });
  467 + });
460 468  
461 469 this.TTGrid.getSelectionModel().on('selectionchange', function(selModel,selections){
462   - this.TTGrid.down('#delete').setDisabled(selections.length === 0);
  470 + this.TTGrid.down('#delete').setDisabled(selections.length === 0);
463 471 }, this);
464 472  
465 473 var myConf = {
... ... @@ -474,7 +482,7 @@ Ext.define(&#39;amdaUI.CatalogUI&#39;, {
474 482 height: 100,
475 483 autoHide: false,
476 484 bodyStyle: 'padding:5px',
477   - iconCls: 'icon-information',
  485 + iconCls: 'icon-information',
478 486 loader: {
479 487 autoLoad: true,
480 488 url: helpDir+'downloadHOWTO'
... ... @@ -483,7 +491,7 @@ Ext.define(&#39;amdaUI.CatalogUI&#39;, {
483 491 ]
484 492 };
485 493  
486   - Ext.apply (this, Ext.apply(arguments, myConf));
  494 + Ext.apply (this, Ext.apply(arguments, myConf));
487 495 }
488 496  
489 497 });
... ...
js/app/views/TimeTableUI.js
... ... @@ -2,14 +2,10 @@
2 2 * Projectย  : AMDA-NG
3 3 * Name : TimeTableUI.js
4 4 * @class amdaUI.TimeTableUI
5   - * @extends Ext.container.Container
  5 + * @extends Ext.container.Container
6 6 * @brief Time Table Module UI definition (View)
7 7 * @author Myriam
8 8 * @version $Id: TimeTableUI.js 2075 2014-02-11 11:30:14Z elena $
9   - ********************************************************************************
10   - * FT Id : Date : Name - Description
11   - *******************************************************************************
12   - * 08/06/2011: Myriam - Migration extjs4
13 9 */
14 10  
15 11 Ext.define('amdaUI.TimeTableUI', {
... ... @@ -17,20 +13,19 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
17 13 alias: 'widget.panelTimeTable',
18 14  
19 15 requires: [
20   - 'Ext.ux.grid.FiltersFeature',
21   - 'Ext.ux.grid.filter.DateFilter',
22   - 'Ext.ux.grid.filter.NumericFilter',
23   - 'amdaUI.OperationsTT',
24   - 'amdaUI.StatisticalPlug',
25   - 'Ext.grid.plugin.BufferedRenderer'
  16 + 'Ext.ux.grid.FiltersFeature',
  17 + 'Ext.ux.grid.filter.DateFilter',
  18 + 'Ext.ux.grid.filter.NumericFilter',
  19 + 'amdaUI.OperationsTT',
  20 + 'amdaUI.StatisticalPlug',
  21 + 'Ext.grid.plugin.BufferedRenderer'
26 22 ],
27 23  
28 24 statics: {
29   - COL_TO_HIDE : 'colToHide'
30   - },
  25 + COL_TO_HIDE : 'colToHide'
  26 + },
31 27  
32   - status: null,
33   - isCatalog : false,
  28 + status: null,
34 29  
35 30 constructor: function(config) {
36 31 this.init(config);
... ... @@ -43,7 +38,8 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
43 38 * set the current editing object
44 39 * this method will be used on timetable edition when this win is already opened
45 40 */
46   - setObject : function (object) {
  41 + setObject : function (object)
  42 + {
47 43 // set object
48 44 this.object = object;
49 45  
... ... @@ -117,7 +113,7 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
117 113 else
118 114 {
119 115 //From tmp object (ie Search result)
120   - AmdaAction.initTTCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), this.isCatalog, onAfterInit);
  116 + AmdaAction.initTTCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), onAfterInit);
121 117 }
122 118 }
123 119 else
... ... @@ -139,33 +135,35 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
139 135 /**
140 136 * update this.object from form
141 137 */
142   - updateObject : function(){
  138 + updateObject : function()
  139 + {
143 140 this.updateCount();
144 141  
145 142 // get the basic form
146   - var basicForm = this.formPanel.getForm();
147   - var updateStatus = true;
  143 + var basicForm = this.formPanel.getForm();
  144 + var updateStatus = true;
148 145  
149   - var fieldsWithoutName = basicForm.getFields().items;
150   - Ext.Array.each(fieldsWithoutName, function(item, index,allItems){
151   - if(item !== this.fieldName) {
152   - if (!item.isValid()) {
153   - // set update isn't allowed
154   - updateStatus = false;
155   - }
156   - }
157   - }, this);
  146 + var fieldsWithoutName = basicForm.getFields().items;
  147 + Ext.Array.each(fieldsWithoutName, function(item, index,allItems){
  148 + if(item !== this.fieldName) {
  149 + if (!item.isValid()) {
  150 + // set update isn't allowed
  151 + updateStatus = false;
  152 + }
  153 + }
  154 + }, this);
158 155 // if the update is allowed
159   - if (updateStatus) {
160   - /// real object update
161   - // update TimeTable object with the content of form
162   - basicForm.updateRecord(this.object);
163   - }
164   - // return the update status
165   - return updateStatus;
  156 + if (updateStatus) {
  157 + /// real object update
  158 + // update TimeTable object with the content of form
  159 + basicForm.updateRecord(this.object);
  160 + }
  161 + // return the update status
  162 + return updateStatus;
166 163 },
167 164  
168   - updateCount : function() {
  165 + updateCount : function()
  166 + {
169 167 this.object.set('nbIntervals',this.TTGrid.getStore().getTotalCount());
170 168 this.formPanel.getForm().findField('nbIntervals').setValue(this.object.get('nbIntervals'));
171 169 },
... ... @@ -173,7 +171,8 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
173 171 /*
174 172 * save method called by Save button
175 173 */
176   - saveProcess : function(toRename){
  174 + saveProcess : function(toRename)
  175 + {
177 176 var timeTableModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
178 177  
179 178 // if the name has been modified this is a creation
... ... @@ -182,8 +181,8 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
182 181 timeTableModule.createLinkedNode();
183 182 timeTableModule.createObject(this.object.getJsonValues());
184 183 var ttobj = timeTableModule.linkedNode.get('object');
185   - // synchronisation of objects
186   - this.object = ttobj;
  184 + // synchronisation of objects
  185 + this.object = ttobj;
187 186 timeTableModule.linkedNode.create();
188 187 }
189 188 else if (this.fclose() /*TimeTable object has been modified*/) {
... ... @@ -216,24 +215,26 @@ Ext.define(&#39;amdaUI.TimeTableUI&#39;, {
216 215 /**
217 216 * overwrite metod called by Save button
218 217 */
219   - overwriteProcess : function(btn){
  218 + overwriteProcess : function(btn)
  219 + {
220 220 if (btn == 'cancel') return;
221 221  
222   - this.fieldName.clearInvalid();
  222 + this.fieldName.clearInvalid();
223 223 this.saveProcess(true);
224 224  
225 225 },
226 226  
227   - addInterval : function(start, stop) {
  227 + addInterval : function(start, stop)
  228 + {
228 229 this.TTGrid.getSelectionModel().deselectAll();
229   - AmdaAction.addTTCacheInterval({'start' : start, 'stop' : stop},function (result, e) {
  230 + AmdaAction.addTTCacheInterval({'start' : start, 'stop' : stop},function (result, e) {
230 231 this.TTGrid.getStore().reload();
231 232 this.status = result.status;
232   - }, this);
  233 + }, this);
233 234 },
234 235  
235   - init : function(config) {
236   -
  236 + init : function(config)
  237 + {
237 238 this.object = config.object;
238 239  
239 240 this.fieldName = new Ext.form.field.Text({
... ...
php/classes/AmdaAction.php
... ... @@ -998,9 +998,11 @@ class AmdaAction {
998 998 return $cacheMgr->addInterval($o->index, $o->start, $o->stop);
999 999 }
1000 1000  
1001   - public function removeTTCacheIntervalFromId($id)
  1001 + public function removeTTCacheIntervalFromId($id, $isCatalog = false)
1002 1002 {
1003   - $cacheMgr = new TimeTableCacheMgr();
  1003 + if ($isCatalog) $cacheMgr = new CatalogCacheMgr();
  1004 + else $cacheMgr = new TimeTableCacheMgr();
  1005 +
1004 1006 return $cacheMgr->removeIntervalFromId($id);
1005 1007 }
1006 1008  
... ... @@ -1236,7 +1238,7 @@ class AmdaAction {
1236 1238 //AKKA - New action to clean user WS
1237 1239 public function cleanUserWS()
1238 1240 {
1239   - require_once(INTEGRATION_SRC_DIR."RequestManager.php");
  1241 + require_once(INTEGRATION_SRC_DIR."RequestManager.php");
1240 1242 return $this->executeRequest($obj, FunctionTypeEnumClass::PROCESSCLEAN);
1241 1243 }
1242 1244  
... ...
php/config.php
... ... @@ -251,12 +251,12 @@ $API = array(
251 251 'len'=>2
252 252 // 'formHandler'=>true
253 253 ),
254   - 'compilParam' => array(
255   - 'len'=>1
256   - ),
257   - 'compilParamDelete' => array(
258   - 'len'=>1
259   - ),
  254 + 'compilParam' => array(
  255 + 'len'=>1
  256 + ),
  257 + 'compilParamDelete' => array(
  258 + 'len'=>1
  259 + ),
260 260 'killPlotRequest' =>array(
261 261 'len'=>1
262 262 ),
... ... @@ -272,39 +272,39 @@ $API = array(
272 272 'saveTTCacheIntervalsInTT'=>array(
273 273 'len'=>1
274 274 ),
275   - 'initTTCache' => array (
276   - 'len'=>1
277   - ) ,
278   - 'initTTCacheFromTT' => array(
279   - 'len'=>2
280   - ),
281   - 'initTTCacheFromTmpObject' => array(
282   - 'len'=>3
283   - ),
284   - 'initTTCacheFromUploadedFile' => array(
285   - 'len'=>2
286   - ),
287   - 'readTTCacheIntervals'=>array(
288   - 'len'=>1
289   - ),
290   - 'addTTCacheInterval'=>array (
291   - 'len'=>1
292   - ),
293   - 'removeTTCacheIntervalFromId'=>array (
294   - 'len'=>1
295   - ),
296   - 'modifyTTCacheInterval' => array(
297   - 'len'=>1
298   - ),
299   - 'operationTTCacheIntervals' => array(
300   - 'len'=>2
301   - ),
302   - 'mergeTTCacheIntervals' => array (
303   - 'len'=>0
304   - ),
305   - 'getTTCacheStatistics' => array (
306   - 'len'=>0
307   - ),
  275 + 'initTTCache' => array (
  276 + 'len'=>1
  277 + ) ,
  278 + 'initTTCacheFromTT' => array(
  279 + 'len'=>2
  280 + ),
  281 + 'initTTCacheFromTmpObject' => array(
  282 + 'len'=>3
  283 + ),
  284 + 'initTTCacheFromUploadedFile' => array(
  285 + 'len'=>2
  286 + ),
  287 + 'readTTCacheIntervals'=>array(
  288 + 'len'=>1
  289 + ),
  290 + 'addTTCacheInterval'=>array (
  291 + 'len'=>1
  292 + ),
  293 + 'removeTTCacheIntervalFromId'=>array (
  294 + 'len'=>2
  295 + ),
  296 + 'modifyTTCacheInterval' => array(
  297 + 'len'=>1
  298 + ),
  299 + 'operationTTCacheIntervals' => array(
  300 + 'len'=>2
  301 + ),
  302 + 'mergeTTCacheIntervals' => array (
  303 + 'len'=>0
  304 + ),
  305 + 'getTTCacheStatistics' => array (
  306 + 'len'=>0
  307 + ),
308 308 'sendFeedback'=>array(
309 309 'len'=>1
310 310 ),
... ... @@ -356,23 +356,23 @@ $API = array(
356 356 'getUserInfo'=>array(
357 357 'len'=>0
358 358 ),
359   - 'convertWS'=>array(
360   - 'len'=>0
361   - ),
362   - 'getRun'=>array(
363   - 'len'=>1
364   - ),
365   - 'addRun'=>array(
366   - 'len'=>1
367   - ),
368   - //AKKA - New action to clean user WS
369   - 'cleanUserWS'=>array(
370   - 'len'=>0
371   - ),
372   - 'deleteSpecialInfo'=>array(
373   - 'len'=>1
374   - )
375   - )
  359 + 'convertWS'=>array(
  360 + 'len'=>0
  361 + ),
  362 + 'getRun'=>array(
  363 + 'len'=>1
  364 + ),
  365 + 'addRun'=>array(
  366 + 'len'=>1
  367 + ),
  368 + //AKKA - New action to clean user WS
  369 + 'cleanUserWS'=>array(
  370 + 'len'=>0
  371 + ),
  372 + 'deleteSpecialInfo'=>array(
  373 + 'len'=>1
  374 + )
  375 + )
376 376 )
377 377 );
378 378 ?>
... ...