CatalogNode.js 3.99 KB
/**
 * Project  : AMDA-NG
 * Name     : CatalogNode.js
 * @class   amdaModel.CatalogNode
 * @extends amdaModel.TimeTableNode
 * @brief   Basic Model of Node corresponding to a amda catalog
 * @author  elena
 */

Ext.define('amdaModel.CatalogNode', {

	extend: 'amdaModel.TimeTableNode',

	statics: {
		nodeType: 'catalog',
		objectName: 'Catalog'
	},

	constructor : function(config)
	{
		this.callParent(arguments)
		this.set('moduleId',myDesktopApp.dynamicModules.catalog.id);
		this.set('objectDataModel',amdaModel.Catalog.$className);
		if (this.get('leaf')) this.set('iconCls', 'icon-catalog');
	},

	localMenuItems : function() {
		var menuItems =
		[
		{
			fnId : 'leaf-shareLeaf',
			text : 'Share '+this.self.objectName,
			hidden : true
		},{
			fnId : 'leaf-download',
			text : 'Download '+ this.self.objectName,
			hidden : true
		},{
			fnId : 'leaf-visu',
			text : 'Visualize '+ this.self.objectName,
			hidden : true
		},{
			fnId : 'leaf-generateTT',
			text : 'Generate Time Table ',
			hidden : true
		}
            ];

		return menuItems;
	},

	localMultiMenuItems : function() {
		var menuItems =
		[{
			fnId : 'mult-shareMulti',
			text : 'Share selected '+this.self.objectName+'s'
		},{
			fnId : 'mult-downloadMulti',
			text : 'Download selected '+this.self.objectName+'s'
		}];

		return menuItems;
	},

	shareNode: function(node) {
		myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id, true, function (module) {
			module.shareCatalog({'name' : node.get('text'), 'id' : node.get('id')});
		});
	},

	visu : function(node) {
    var me = this;

    var visuWinFunc = function(object) {
      myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.visu.id, true, function (module) {
        module.visualize(object);
      });
    };

    amdaModel.InteractiveNode.preloadNodes(this.getRootNode(),
		function()
		{
      if (me.get('object')) {
        visuWinFunc(me.get('object'));
			}
			else
			{
				AmdaAction.getObject(me.get('id'), me.get('nodeType'), function (result,remoteEvent) {
          var t = remoteEvent.getTransaction();

      		if (result) {
      			var paramObj = Ext.create(me.get('objectDataModel'), result);
      			// set parameter into node
      			me.set('object',paramObj);
      			// Edition of parameter into parameter Module
      			visuWinFunc(me.get('object'));
      		}
      		else {
      			myDesktopApp.errorMsg(t.action + "." + t.method + " : No catalog '"
      			+ this.get('name') + "' found!");
      		}
      	}, me);
			}
		});


		//var me = this;
		//myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.visu.id, true, function (module) {
    //  module.visualize(me);
			// Catalog & TimeTable nodes normally use no objects in the tree
/*			var obj = {'id' : me.get('id'), 'name' : me.get('text') };
			object = Ext.create(me.get('objectDataModel'), obj);
			me.set('object',object);
			module.setLinkedNode(me);
			module.createWindow();*/
		//});
	},
                   generateTT: function(node){
                       var catObj = Ext.create('amdaModel.TimeTable');
                              var timeTabNode = Ext.create('amdaModel.TimeTableNode',{leaf : true});
                              catObj.set('relatedCatalogId', node.get('id'));
                              desc =   'Generated by CDPP/Amda Catalog Module \n';
                              if (node.get('description'))
                                  desc = desc + node.get('description');
                              catObj.set('description', desc);
                              timeTabNode.set('object',catObj);
                              var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
                                        var ttRootNode = explorerTree.getRootNode().findChild('id', 'timeTable-treeRootNode', true);
                                        amdaModel.InteractiveNode.preloadNodes(ttRootNode.getRootNode(),
			function()
			{
				// edit newNode into Parameter Module with node as contextNode
				timeTabNode.editInModule();
			});


                   }
});