Blame view

js/app/views/CatalogUI.js 19.4 KB
f792a3de   elena   catalog ihm
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * Project       AMDA-NG
 * Name          CatalogUI.js
 * @class 	 amdaUI.catalogUI
 * @extends      Ext.container.Container
 * @brief	 Catalog Module UI definition (View)
 * @author 	 elena
 */

Ext.define('amdaUI.CatalogUI', {
	extend: 'Ext.container.Container',
	alias: 'widget.panelCatalog',
f9c8b272   elena   edit catalog
13
14
15
16
17
	
	requires: [
		'Ext.grid.plugin.BufferedRenderer'
	],
	
d18b535d   elena   catalog draft + c...
18
	isCatalog : true,
f792a3de   elena   catalog ihm
19
	
1340621c   Elena.Budnik   error msg when up...
20
	constructor: function(config) {
70aabdee   elena   catalog draft
21
		this.init(config);
f9c8b272   elena   edit catalog
22
23
		this.callParent(arguments);
		this.toReconfigure = true;
07650d8e   Elena.Budnik   create empty catalog
24
25
26
27
		
		if (this.object) {
			this.loadObject();
		}
f792a3de   elena   catalog ihm
28
29
	},
	
1340621c   Elena.Budnik   error msg when up...
30
	setObject : function (object, toReconfigure) {	
f9c8b272   elena   edit catalog
31
32
33
34
		if (toReconfigure) 
			this.toReconfigure = true;
		// set object	        
		this.object = object;		 
048b4d77   elena   catalogs +
35
36
37
		// load object into view
		this.loadObject();
	},
f792a3de   elena   catalog ihm
38
	
d18b535d   elena   catalog draft + c...
39
40
41
	/**
	 * set params description into this.object
	 */
1340621c   Elena.Budnik   error msg when up...
42
	setParamInfo : function(parameters) {
70aabdee   elena   catalog draft
43
44
45
46
47
48
		var params = [];
		Ext.Array.each(parameters, function(item, index) {
			params[index] = item;	     	  
		}, this);
		
		this.object.set('parameters', params);	  
f792a3de   elena   catalog ihm
49
50
51
52
	},
	
	/**
	 * update this.object from form
1340621c   Elena.Budnik   error msg when up...
53
54
	 */	 
	updateObject : function(){  
d18b535d   elena   catalog draft + c...
55
	// get the basic form	
1340621c   Elena.Budnik   error msg when up...
56
57
		var basicForm = this.formPanel.getForm();        
		var updateStatus = true;
d18b535d   elena   catalog draft + c...
58

1340621c   Elena.Budnik   error msg when up...
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
		var fieldsWithoutName = basicForm.getFields().items;
		Ext.Array.each(fieldsWithoutName, function(item, index,allItems){
			if(item !== this.fieldName) { 		     
				if (!item.isValid()) {
					// set update isn't allowed
					updateStatus = false;    
				}
			}
		}, this);
			// if the update is allowed
		if (updateStatus) {
		/// real object update
		// update TimeTable object with the content of form
			basicForm.updateRecord(this.object);	
		}
		// return the update status  
		return updateStatus;	    
d18b535d   elena   catalog draft + c...
76
	},
f792a3de   elena   catalog ihm
77
	
1340621c   Elena.Budnik   error msg when up...
78
	updateCount : function() {
d18b535d   elena   catalog draft + c...
79
80
		this.object.set('nbIntervals',this.TTGrid.getStore().getTotalCount());		
		this.formPanel.getForm().findField('nbIntervals').setValue(this.object.get('nbIntervals'));
1340621c   Elena.Budnik   error msg when up...
81
	}, 
f9c8b272   elena   edit catalog
82
	
1340621c   Elena.Budnik   error msg when up...
83
84
	onAfterInit:  function(result, e) 
	{
70aabdee   elena   catalog draft
85
		var me = this;
1340621c   Elena.Budnik   error msg when up...
86
87
88
89
		if (!result) {			
			myDesktopApp.errorMsg(e.message);
			Ext.defer(function(){Ext.Msg.toFront()},10);
			 
3768c8a8   Elena.Budnik   RowNumberer catalofs
90
			return;
1340621c   Elena.Budnik   error msg when up...
91
92
		}
		else if (!result.success)
f9c8b272   elena   edit catalog
93
94
95
96
97
		{
			if (result.message)
				myDesktopApp.errorMsg(result.message);
			else
				myDesktopApp.errorMsg('Unknown error during catalog cache initialisation');
1340621c   Elena.Budnik   error msg when up...
98
99

			Ext.defer(function(){Ext.Msg.toFront()},10);
f9c8b272   elena   edit catalog
100
101
			return;
		}
1340621c   Elena.Budnik   error msg when up...
102
		
f9c8b272   elena   edit catalog
103
104
		if (me.toReconfigure) 
		{          	
70aabdee   elena   catalog draft
105
106
107
108
			var fields = [], columns = [], i = 3, width, index;

			var fieldsConfig =  [{ name : 'start' },{ name : 'stop' },{ name: 'cacheId', type : 'int'},
				{ name: 'isNew', type : 'boolean', defaultValue: false },
f9c8b272   elena   edit catalog
109
				{ name: 'isModified', type : 'boolean', defaultValue: false}
70aabdee   elena   catalog draft
110
111
112
113
			];
			
			for (var j = 0; j < 5; j++) fields[j] =  Ext.create('Ext.data.Field', fieldsConfig[j]);
				
3768c8a8   Elena.Budnik   RowNumberer catalofs
114
115
			columns[0] = Ext.create('Ext.grid.column.RowNumberer', { width: 50,
								renderer: function(value, metaData, record){
e2acb540   Elena.Budnik   redmine #6397 : ...
116
									var msg = record.index + 1;
3768c8a8   Elena.Budnik   RowNumberer catalofs
117
118
119
120
121
122
123
									if (record.get('isNew') || record.get('isModified')) {
										msg += ' *';
										metaData.style = 'font-weight: bold'
									}
									return msg;
								}
							});
d18b535d   elena   catalog draft + c...
124

3768c8a8   Elena.Budnik   RowNumberer catalofs
125
			columns[1] = Ext.create('Ext.grid.column.Column', { text: 'Start Time', sortable : true, dataIndex: 'start',  
6b5180de   Elena.Budnik   menu enable
126
						width : 120, menuDisabled: false, editor : { xtype:'datefield', allowBlank:false, hideTrigger: true, format : 'Y-m-d\\TH:i:s'}});
3768c8a8   Elena.Budnik   RowNumberer catalofs
127
			columns[2] = Ext.create('Ext.grid.column.Column', { text: 'Stop Time', sortable : true,  dataIndex: 'stop',  
6b5180de   Elena.Budnik   menu enable
128
						width : 120, menuDisabled: false, editor : { xtype:'datefield', allowBlank:false, hideTrigger: true,  format : 'Y-m-d\\TH:i:s'}});
70aabdee   elena   catalog draft
129
130
		
			Ext.Array.each(result.parameters, function(obj) 
c865df36   Elena.Budnik   dateTime datatype...
131
132
			{			 
				index = 'param'+(i-1).toString();
3768c8a8   Elena.Budnik   RowNumberer catalofs
133

70aabdee   elena   catalog draft
134
				fields[i+2] = Ext.create('Ext.data.Field',{ name : index });
1340621c   Elena.Budnik   error msg when up...
135
			
c865df36   Elena.Budnik   dateTime datatype...
136
137
				if (obj.type == 1) // dateTime
				{
3768c8a8   Elena.Budnik   RowNumberer catalofs
138
					columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : true,  dataIndex: index,  
6b5180de   Elena.Budnik   menu enable
139
						width : 120, menuDisabled: false, editor : { xtype:'datefield', allowBlank:false, hideTrigger: true,  format : 'Y-m-d\\TH:i:s'}});
c865df36   Elena.Budnik   dateTime datatype...
140
141
142
143
144
				}
				else
				{					 
					width = 50. *  parseInt(obj.size);				
					columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false,  dataIndex: index,  
6b5180de   Elena.Budnik   menu enable
145
						width : width, menuDisabled: false, editor: 'textfield' });
c865df36   Elena.Budnik   dateTime datatype...
146
				}
70aabdee   elena   catalog draft
147
148
				i++;
			});
1340621c   Elena.Budnik   error msg when up...
149

70aabdee   elena   catalog draft
150
151
152
153
154
155
156
157
158
			var store = Ext.create('Ext.data.Store', {
				fields: fields,
				autoDestroy: false,
				pageSize : 200,
				buffered : true, 
				purgePageCount: 0,
				remoteSort: true,
				proxy: {
					type: 'direct',
1340621c   Elena.Budnik   error msg when up...
159
					api : { read   :  AmdaAction.readTTCacheIntervals },
70aabdee   elena   catalog draft
160
161
162
163
164
165
166
167
168
169
170
171
172
					// remplir automatiquement tt, sharedtt , catalog, shared catalog
					extraParams : {'typeTT' : 'catalog'},
					reader:
					{
						type: 'json',
						root: 'intervals',
						totalProperty : 'totalCount'
					}
				},
				listeners: {
					scope : me,
					load: function(store,records) {        
						// myDesktopApp.EventManager.fireEvent('refresh');
1340621c   Elena.Budnik   error msg when up...
173
174
175
							me.TTGrid.getView().refresh();
							me.TTGrid.getSelectionModel().refresh();
							me.updateCount();
70aabdee   elena   catalog draft
176
177
						//Statistical plugin
						//   	this.fireEvent("refresh");
dc702c6d   Elena.Budnik   sort without save
178
					} 
70aabdee   elena   catalog draft
179
				}
dc702c6d   Elena.Budnik   sort without save
180
			});
f9c8b272   elena   edit catalog
181
			
70aabdee   elena   catalog draft
182
			me.TTGrid.reconfigure(store, columns);
dc702c6d   Elena.Budnik   sort without save
183
		}
f9c8b272   elena   edit catalog
184
		me.TTGrid.getSelectionModel().deselectAll();
70aabdee   elena   catalog draft
185
186
187
188
	//         	        	
	//         	// clear filters
	//         	me.TTGrid.getStore().clearFilter(true);
	//         
dc702c6d   Elena.Budnik   sort without save
189
190
191
192
		// clear sort
		me.TTGrid.getStore().sorters.clear();
		// me.TTGrid.getStore().sorters = new Ext.util.MixedCollection();
			
1340621c   Elena.Budnik   error msg when up...
193
		//set cache token to the Catalog object
f9c8b272   elena   edit catalog
194
		me.object.set('cacheToken', result.token);
e1fd05b4   Elena.Budnik   visu from cacheCat
195
		me.setParamInfo(result.parameters);	
f9c8b272   elena   edit catalog
196
		me.TTGrid.getStore().load();
70aabdee   elena   catalog draft
197
			
f9c8b272   elena   edit catalog
198
199
200
201
202
203
		me.status = result.status;
	},
	
	/**
	 * load object catalog into this view
	 */
1340621c   Elena.Budnik   error msg when up...
204
	loadObject : function(){ 	  
f9c8b272   elena   edit catalog
205
206
207
208
209
		// load object into form
		this.formPanel.getForm().loadRecord(this.object);
	
		this.status = null;
		
1340621c   Elena.Budnik   error msg when up...
210
211
		if (this.object.get('fromPlugin')){			
			if (this.object.get('objFormat') && this.object.get('objFormat') != ''){
70aabdee   elena   catalog draft
212
				//From uploaded file
901ba3f3   Elena.Budnik   upload catalog
213
				AmdaAction.initTTCacheFromUploadedFile(this.object.get('objName'), this.object.get('objFormat'), this.isCatalog, this.onAfterInit, this);
70aabdee   elena   catalog draft
214
			}
1340621c   Elena.Budnik   error msg when up...
215
			else {
f9c8b272   elena   edit catalog
216
217
				//From tmp object (ie Statistics result)		    
				AmdaAction.initTTCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), this.isCatalog, this.onAfterInit, this);
70aabdee   elena   catalog draft
218
219
			}
		}
1340621c   Elena.Budnik   error msg when up...
220
		else {
169f14d2   Benjamin Renard   Add shared object...
221
			var typeTT = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id).linkedNode.data.nodeType;
07650d8e   Elena.Budnik   create empty catalog
222
223
224
			
			if (this.object.get('id') == '') {
				AmdaAction.initTTCache(this.isCatalog, 1, this.onAfterInit,this); 
70aabdee   elena   catalog draft
225
			}	
1340621c   Elena.Budnik   error msg when up...
226
			else {
70aabdee   elena   catalog draft
227
				//From existing TT file
169f14d2   Benjamin Renard   Add shared object...
228
				AmdaAction.initTTCacheFromTT(this.object.get('id'), typeTT, this.onAfterInit, this);
70aabdee   elena   catalog draft
229
230
			}
		}
d18b535d   elena   catalog draft + c...
231
	},
70aabdee   elena   catalog draft
232
	
d18b535d   elena   catalog draft + c...
233
	checkIntervalsStatusForSave : function(onStatusOk) {
70aabdee   elena   catalog draft
234
		onStatusOk();
d18b535d   elena   catalog draft + c...
235
236
237
238
239
	},
	
	/*	    
	 * save method called by Save button
	 */
70aabdee   elena   catalog draft
240
241
	saveProcess : function(toRename)
	{
f9c8b272   elena   edit catalog
242
243
244
		var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
		//  store / columns are the same - not needed to reconfigure grid
		this.toReconfigure = false;
efdeca25   Elena.Budnik   Anomalie #6181 : ...
245
246
247
248
249
250
251
252
253
254
255
256
257
258
		
		// if save shared catalog
		if (module.contextNode &&  (module.contextNode.get('id') == 'sharedcatalog-treeRootNode'))
		{ 
			module.linkedNode = null;	    		      
			module.createLinkedNode();
			module.createObject(this.object.getJsonValues());     
			var obj = module.linkedNode.get('object');                                                    
			// synchronisation of objects
			this.object = obj;
			module.linkedNode.create();
		}
		// if the name has been modified this is a creation
		else if (this.fclose()) {         
70aabdee   elena   catalog draft
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
			if (this.object.isModified('name') || this.object.get('fromPlugin')) {				
				// if object already has an id : it's a 'rename' of an existing  
				if (this.object.get('id')){
					// the context Node is the parent node of current edited one
					var contextNode = module.linkedNode.parentNode;
					// link a new node to the TimeTableModule
					module.createLinkedNode();
					// set the contextNode
					module.linkedNode.set('contextNode',contextNode);
					// create a new object linked
					module.createObject(this.object.getJsonValues());
					
					var obj = module.linkedNode.get('object');                                                    
					// synchronisation of objects
					this.object = obj;
					if (toRename) module.linkedNode.toRename = true;
				} 
c5984b95   elena   dblclk catalog
276
				module.linkedNode.create(/*{callback : function() {module.linkedNode.update();}, scope : this}*/);
70aabdee   elena   catalog draft
277
			} else {
f9c8b272   elena   edit catalog
278
				//update				
70aabdee   elena   catalog draft
279
				module.linkedNode.update();
1340621c   Elena.Budnik   error msg when up...
280
			}	
70aabdee   elena   catalog draft
281
		}
f792a3de   elena   catalog ihm
282
283
	},
	
d18b535d   elena   catalog draft + c...
284
	/**
f9c8b272   elena   edit catalog
285
286
	 * overwrite metod called by Save button
	 */
1340621c   Elena.Budnik   error msg when up...
287
	overwriteProcess : function(btn) {	
f9c8b272   elena   edit catalog
288
289
290
		if (btn == 'cancel') return;
               
		this.fieldName.clearInvalid();
07650d8e   Elena.Budnik   create empty catalog
291
		this.saveProcess(true);
f9c8b272   elena   edit catalog
292
293
294
	},
	
	/**
d18b535d   elena   catalog draft + c...
295
296
297
	 * Check if changes were made before closing window 
	 * @return true if changes
	 */	
1340621c   Elena.Budnik   error msg when up...
298
	fclose : function() {
d18b535d   elena   catalog draft + c...
299
300
301
302
		if (this.status == null)
			return false;
		
		var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
1340621c   Elena.Budnik   error msg when up...
303
		return isDirty;
d18b535d   elena   catalog draft + c...
304
	},
f9c8b272   elena   edit catalog
305
 	    
70aabdee   elena   catalog draft
306
307
308
	init : function (config) 
	{	  
		this.object =   config.object;
f792a3de   elena   catalog ihm
309
	  
70aabdee   elena   catalog draft
310
311
312
313
314
315
316
317
318
		this.fieldName = new Ext.form.field.Text({
			fieldLabel: 'Name',
			allowBlank : false,
			stripCharsRe: /(^\s+|\s+$)/g,
			emptyText: 'Please no spaces!',
			name: 'name',
			validateOnChange: false,
			validateOnBlur: false,
			validFlag: false,
1340621c   Elena.Budnik   error msg when up...
319
320
321
			validator : function() {
				return this.validFlag;
			}
70aabdee   elena   catalog draft
322
		});
f9c8b272   elena   edit catalog
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
		
		var cellEditing = Ext.create('Ext.grid.plugin.CellEditing',{
//			clicksToEdit: 2,
			onEditComplete : function(ed, value, startValue) {
				var me = this,
				activeColumn = me.getActiveColumn(),
				context = me.context,
				record;

				if (activeColumn) {
					record = context.record;

					me.setActiveEditor(null);
					me.setActiveColumn(null);
					me.setActiveRecord(null);
				
					context.value = value;
					if (!me.validateEdit()) {
						me.editing = false;
						return;
					}

					// Only update the record if the new value is different than the
					// startValue. When the view refreshes its el will gain focus
					if (!record.isEqual(value, startValue)) {
dc702c6d   Elena.Budnik   sort without save
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
						var obj = {};					
						
						obj['cacheId']  = record.get('cacheId');
						obj['isCatalog'] = true;
						obj[activeColumn.dataIndex] = value;								  
						
						//Interval is modified on the server side
						me.editing = true;
						
						AmdaAction.modifyTTCacheInterval(obj, function (result, e) {						
							var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
							if (module)
								module.getUiContent().status = result.status;
							if (!context.store.loading) {
								context.grid.getSelectionModel().deselectAll();
								context.store.reload({
									callback : function(records, options, success) {
										context.view.bufferedRenderer.scrollTo(context.rowIdx, true, function() {
											me.fireEvent('edit', me, context);
											me.editing = false;
										}, me);
									}
								});
							}
							else {
								me.editing = false;
f9c8b272   elena   edit catalog
374
							}
f9c8b272   elena   edit catalog
375
376
377
						}, this);
					}
					else
1340621c   Elena.Budnik   error msg when up...
378
						me.editing = false;
dc702c6d   Elena.Budnik   sort without save
379
					}
f9c8b272   elena   edit catalog
380
381
			}	
		});
d18b535d   elena   catalog draft + c...
382

70aabdee   elena   catalog draft
383
384
385
386
		this.TTGrid =  Ext.create('Ext.grid.Panel', { 
			height: 530,
			columns: [ ],
			frame: true,
dc702c6d   Elena.Budnik   sort without save
387
388
			columnLines: true,	
			selModel: {pruneRemoved: false},
1340621c   Elena.Budnik   error msg when up...
389
			//	selType: 'cellmodel',
f9c8b272   elena   edit catalog
390
			plugins: [ cellEditing, { ptype : 'bufferedrenderer'} ],
70aabdee   elena   catalog draft
391
392
393
			dockedItems: [{
				xtype: 'toolbar', 
				items: [{
1340621c   Elena.Budnik   error msg when up...
394
395
396
397
398
399
400
401
402
403
					iconCls: 'icon-add',
					scope: this,
					handler: function(){ 
						cellEditing.cancelEdit();
						var store = this.TTGrid.getStore();
							
						var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
						var row = 0;
						if (selection)
							row = store.indexOf(selection) + 1;
70aabdee   elena   catalog draft
404
						this.TTGrid.getSelectionModel().deselectAll();
1340621c   Elena.Budnik   error msg when up...
405
406
407
									
						var me = this;
						AmdaAction.addTTCacheInterval({'index' : row, 'isCatalog' : true}, function (result, e) {
70aabdee   elena   catalog draft
408
							this.status = result.status;
dc702c6d   Elena.Budnik   sort without save
409
410
411
412
413
414
415
416
417
418
							if (!this.TTGrid.getStore().loading) {
								this.TTGrid.getStore().reload({
									callback : function(records, options, success) {
										me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function() {
											me.TTGrid.getView().select(row);
											cellEditing.startEditByPosition({row: row, column: 1});	
										}, me);
									}
								});
							}
70aabdee   elena   catalog draft
419
420
						}, this);
					}
1340621c   Elena.Budnik   error msg when up...
421
422
423
424
425
426
427
428
429
430
431
432
433
				},{
					iconCls: 'icon-delete',
					disabled: true,
					itemId: 'delete',
					scope: this,
					handler:  function(){
						var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
						if (selection) 
						{
							var rowId = selection.get('cacheId');						
							this.TTGrid.getSelectionModel().deselectAll();
							AmdaAction.removeTTCacheIntervalFromId(rowId, this.isCatalog, function (result, e) {
								this.status = result.status;
dc702c6d   Elena.Budnik   sort without save
434
435
436
								if (!this.TTGrid.getStore().loading) {
									this.TTGrid.getStore().reload();
								}
1340621c   Elena.Budnik   error msg when up...
437
438
439
							}, this);
						}
					}
70aabdee   elena   catalog draft
440
441
442
				}]
			}]
		});
f792a3de   elena   catalog ihm
443
 
1340621c   Elena.Budnik   error msg when up...
444
		this.formPanel =  Ext.create('Ext.form.Panel', { 
f13f0bd4   Elena.Budnik   New Catalog creation
445
446
447
448
449
			region : 'center',
			layout:  'hbox', 
			bodyStyle: {background : '#dfe8f6'},
			defaults: { border : false, align: 'stretch', bodyStyle: {background : '#dfe8f6'},  padding: '3'},
			fieldDefaults: { labelWidth: 80, labelAlign : 'top' },
1340621c   Elena.Budnik   error msg when up...
450
			items: [{            
f13f0bd4   Elena.Budnik   New Catalog creation
451
452
453
				xtype: 'form',		            
				flex: 1,
				buttonAlign: 'left',
1340621c   Elena.Budnik   error msg when up...
454
				// title : 'Information',		   
f13f0bd4   Elena.Budnik   New Catalog creation
455
456
457
458
459
460
				layout: {type: 'vbox', pack: 'start', align: 'stretch'},
				items : [
					this.fieldName,
					{
						xtype: 'fieldcontainer',
						layout: 'hbox',		      
1340621c   Elena.Budnik   error msg when up...
461
						items: [{
f13f0bd4   Elena.Budnik   New Catalog creation
462
463
464
465
466
								xtype:'datefield', fieldLabel:'Creation date',
								name: 'created', disabled: true, 
								hideTrigger: true, format: 'Y/m/d H:i:s'
							},			  
							{ xtype: 'splitter' },			 			 
1340621c   Elena.Budnik   error msg when up...
467
							{ xtype:'textfield', fieldLabel: 'Intervals', name: 'nbIntervals', disabled: true }
f13f0bd4   Elena.Budnik   New Catalog creation
468
469
470
471
472
473
474
475
476
477
478
479
						]                                                                       
					},
					{
						xtype: 'textarea',
						name: 'description',
						fieldLabel: 'Description',
						height: 200
					},
					{
						xtype: 'component',
						height: 180
					}], 
1340621c   Elena.Budnik   error msg when up...
480
					dockedItems:[{
f13f0bd4   Elena.Budnik   New Catalog creation
481
482
483
						xtype: 'toolbar',
						dock: 'bottom', 
						ui: 'footer',
1340621c   Elena.Budnik   error msg when up...
484
						items: [{
f13f0bd4   Elena.Budnik   New Catalog creation
485
486
487
488
489
490
491
492
							type: 'button',
							text: 'Create New Catalog',
							scope : this,
							handler: function () 
							{ 											
								var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);	
										
								if (!module) return;
07650d8e   Elena.Budnik   create empty catalog
493
494
495
496
											  
								module.createLinkedNode();
 								module.createObject();
								
f13f0bd4   Elena.Budnik   New Catalog creation
497
498
								var obj = module.linkedNode.get('object');
								
1340621c   Elena.Budnik   error msg when up...
499
500
									var me = this;
									
f13f0bd4   Elena.Budnik   New Catalog creation
501
502
503
504
									Ext.Msg.prompt('Define Parameters', 'Please enter parameters number:', function(btn, text){
										if (btn == 'ok'){
											AmdaAction.initTTCache(me.isCatalog, text, me.onAfterInit, me); 
										}
07650d8e   Elena.Budnik   create empty catalog
505
506
507
										else {
											AmdaAction.initTTCache(me.isCatalog, 0, me.onAfterInit, me);
										}
f13f0bd4   Elena.Budnik   New Catalog creation
508
									}, this);
07650d8e   Elena.Budnik   create empty catalog
509
									
f13f0bd4   Elena.Budnik   New Catalog creation
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
							}
						}]
					},
					{  
						xtype: 'toolbar',
						dock: 'bottom', 
						ui: 'footer',
						items: [
						{
							type: 'button',
							text: 'Save',
							scope : this,
							handler: function () 
							{
								if (this.updateObject())
								{
									var basicForm = this.formPanel.getForm();      
									// if there's at least one record in the store of TTGrid
									if (this.TTGrid.getStore().getTotalCount() > 0) 
									{
										// update TimeTable object which the content of form
										basicForm.updateRecord(this.object);
d18b535d   elena   catalog draft + c...
532

f13f0bd4   Elena.Budnik   New Catalog creation
533
										var me = this;
1340621c   Elena.Budnik   error msg when up...
534
										this.checkIntervalsStatusForSave(function () {
f13f0bd4   Elena.Budnik   New Catalog creation
535
536
537
538
539
540
											//Name validation
											var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);	
											
											if (!module) return;
											module.linkedNode.isValidName(me.fieldName.getValue(), function (res) 
											{
1340621c   Elena.Budnik   error msg when up...
541
												if (!res) {
f13f0bd4   Elena.Budnik   New Catalog creation
542
543
544
545
546
547
													me.fieldName.validFlag = 'Error during object validation';
													myDesktopApp.errorMsg(me.fieldName.validFlag);
													me.fieldName.validate();
													return;
												}
												
1340621c   Elena.Budnik   error msg when up...
548
549
550
												if (!res.valid) {
													if (res.error) {
														if (res.error.search('subtree') != -1) {  							
f13f0bd4   Elena.Budnik   New Catalog creation
551
552
553
554
555
556
557
558
559
560
561
562
563
															Ext.MessageBox.show({title:'Warning', 
																msg: res.error+'<br/>Do you want to overwrite it?',
																width: 300,
																buttons: Ext.MessageBox.OKCANCEL, 
																fn : me.overwriteProcess,
																icon: Ext.MessageBox.WARNING,
																scope : me
															});
															me.fieldName.validFlag = true;
														}
														else
															me.fieldName.validFlag = res.error;
													}
1340621c   Elena.Budnik   error msg when up...
564
													else {
f13f0bd4   Elena.Budnik   New Catalog creation
565
566
567
568
569
570
571
572
573
574
575
576
577
														me.fieldName.validFlag = 'Invalid object name';
														myDesktopApp.errorMsg(me.fieldName.validFlag);
													}
													me.fieldName.validate();
													return;
												}
												
												me.fieldName.validFlag = true;
												me.fieldName.validate();
												me.saveProcess(false);
											});
										});                            
									} 
1340621c   Elena.Budnik   error msg when up...
578
									else {
f13f0bd4   Elena.Budnik   New Catalog creation
579
580
581
582
										Ext.Msg.alert('No intervals', 'Your time table is invalid, <br>you must have at least one interval');
									}
								}
							} 
1340621c   Elena.Budnik   error msg when up...
583
						},{
f13f0bd4   Elena.Budnik   New Catalog creation
584
							type: 'button',
08eee02f   Elena.Budnik   reset catalogUI
585
586
							text: 'Reset',
							scope : this,
1340621c   Elena.Budnik   error msg when up...
587
							handler: function() {
398e3bf2   Elena.Budnik   redmine 6507 : ca...
588
								var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);			
08eee02f   Elena.Budnik   reset catalogUI
589
590
// 								module.createLinkedNode();
// 								module.createObject();
398e3bf2   Elena.Budnik   redmine 6507 : ca...
591
								this.setObject(module.getLinkedNode().get('object'), true);                           
08eee02f   Elena.Budnik   reset catalogUI
592
							} 
f13f0bd4   Elena.Budnik   New Catalog creation
593
						},	
398e3bf2   Elena.Budnik   redmine 6507 : ca...
594
595
596
597
598
599
600
601
602
603
604
605
// 						{   
// 							type: 'button',
// 							text: 'Share',
// 							scope : this,
// 							handler: function() {	
// 								var me = this;	
// 								myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id, true, function (module) {
// 									var catalog = module.getLinkedNode().get('object');
// 									module.shareCatalog({'name' : catalog.get('text'), 'id' : catalog.get('id')});
// 								});
// 							}
// 						},
f13f0bd4   Elena.Budnik   New Catalog creation
606
607
608
609
						{   
							type: 'button',
							text: 'Visualize',
							scope: this,
1340621c   Elena.Budnik   error msg when up...
610
							handler: function() {
f13f0bd4   Elena.Budnik   New Catalog creation
611
								var me = this;
1340621c   Elena.Budnik   error msg when up...
612
								myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.visu.id, true, function (module) {	 	 							
f13f0bd4   Elena.Budnik   New Catalog creation
613
									//temporary linked node - as  Visu module is 'pseudo' interactive - no 'save', no 'execute'
e1fd05b4   Elena.Budnik   visu from cacheCat
614
									var temporaryNode = Ext.create('amdaModel.CatalogNode', { leaf : true });
f13f0bd4   Elena.Budnik   New Catalog creation
615
616
617
									if (temporaryNode) temporaryNode.set('object',me.object); 
									module.setLinkedNode(temporaryNode);
									
1340621c   Elena.Budnik   error msg when up...
618
									module.createWindow(); 
f13f0bd4   Elena.Budnik   New Catalog creation
619
620
								});     
							}
1340621c   Elena.Budnik   error msg when up...
621
						}]
f13f0bd4   Elena.Budnik   New Catalog creation
622
623
624
625
626
627
628
					}]
				},
				{
					xtype: 'form',               
					bodyStyle: {background : '#dfe8f6'},
					//padding: '3',
					flex: 2,
1340621c   Elena.Budnik   error msg when up...
629
					items : [ this.TTGrid ] 
f13f0bd4   Elena.Budnik   New Catalog creation
630
631
				}]  
			}); 
f792a3de   elena   catalog ihm
632
	 
1340621c   Elena.Budnik   error msg when up...
633
		this.TTGrid.getSelectionModel().on('selectionchange', function(selModel,selections) {
f13f0bd4   Elena.Budnik   New Catalog creation
634
635
			this.TTGrid.down('#delete').setDisabled(selections.length === 0); 
		}, this); 
f792a3de   elena   catalog ihm
636
	
1340621c   Elena.Budnik   error msg when up...
637
		var myConf = {
f13f0bd4   Elena.Budnik   New Catalog creation
638
639
640
641
642
643
644
645
			layout: 'border',
			items: [		   
				this.formPanel, 		     
				{
					xtype: 'panel', 
					region: 'south',
					title: 'Information',
					collapsible: true,
42863f42   Elena.Budnik   collapseMode: "he...
646
					collapseMode: 'header',
f13f0bd4   Elena.Budnik   New Catalog creation
647
648
649
650
651
652
653
654
655
656
657
					height: 100,
					autoHide: false,
					bodyStyle: 'padding:5px',
					iconCls:  'icon-information',
					loader: 
					{
						autoLoad: true,
						url: helpDir+'catalogHOWTO'
					} 
				}
			] 
1340621c   Elena.Budnik   error msg when up...
658
		};	    
f13f0bd4   Elena.Budnik   New Catalog creation
659
		Ext.apply (this, Ext.apply(arguments, myConf));	
1340621c   Elena.Budnik   error msg when up...
660
	}	 
f792a3de   elena   catalog ihm
661
});