PlotNode.js 3.88 KB
/** 
 * Project  : AMDA-NG4
 * Name     : PlotNode.js
 * @class   amdaModel.PlotNode
 * @extends amdaModel.ExecutableNode
 * @brief   Basic Model of Node corresponding to a plot request
 * @author  Benjamin Renard
 */

Ext.define('amdaModel.PlotNode', {
	extend: 'amdaModel.ExecutableNode',

    fields : [
        {name : 'tabs', type:'auto', defaultValue:false,  persist:  false}
    ],

    statics: {
        nodeType: 'request' 
    },

    requires:[
        'amdaModel.PlotTabNode'
    ],

    constructor : function(config){
        this.callParent(arguments);
        this.set('moduleId',myDesktopApp.dynamicModules.plot.id);
        this.set('objectDataModel','amdaPlotObj.PlotRequestObject');
        this.set('nodeType',this.self.nodeType);
	if (this.get('leaf')) {
		this.updateTabs(this.get('tabs'));
	}
    },

    updateTabs : function(tabs) {
	if (tabs) {
		var oneTab = (tabs.length == 1);
        	this.set('leaf', oneTab); 
		this.set('iconCls', oneTab ? 'icon-plot-page' : 'icon-plot-pages');
		this.removeAll();
		if (tabs.length > 1) {
			var me = this;
			Ext.Array.each(tabs, function(tab) {
				var tabNode = new amdaModel.PlotTabNode({text: tab.name, tabid: tab.id});
              			me.appendChild(tabNode);
			});
		}
		this.set('tabs', tabs);
	}
    },

    specialUpdate : function(res) {
	this.updateTabs(res.tabs);
    },

    allMenuItems : function() {
        var menuItems =
         [{
             fnId : 'root-createDir',
             text : 'Create Folder'
         }, {
             fnId : 'dire-createDir',
             text : 'Create Folder'
         }, {
             fnId : 'dire-renameNode',
             text : 'Rename Folder'
         }, {
             fnId : 'dire-deleteNode',
             text : 'Delete Folder'
         }, {
            fnId : 'leaf-editPlot',
            text : 'Plot By Request'
         }, {
             fnId : 'leaf-renameNode',
             text : 'Rename Request'
         }, {
             fnId : 'leaf-deleteNode',
             text : 'Delete Request'
         }, {
             fnId : 'leaf-insertTabs',
             text : 'Insert in current Plot Request'

         }];

        return menuItems;
    }, 
    
    allMenuMultiItems : function() {
        var menuMulti = [
            {
                fnId : 'mult-deleteMulti',
                text : 'Delete selected Requests'
            }
        ];
        return menuMulti;
    },
    
    getAllContextMenuItems: function(){
        return this.allMenuItems();
    },
    
    getMultiContextMenuItems: function(){
        return this.allMenuMultiItems();
    },
    
    onMenuItemClick : function(menu,item,event) {
		 
        var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length);

        switch (fnId) {

        case 'createDir':
            this.createDir(); 
            break;

        case 'deleteNode':
            this.deleteNode(); 
            break;

        case 'renameNode':
            this.renameNode(); 
            break;

        case 'editPlot':     
            this.editLeaf(); 
            break;
	    
        case 'deleteMulti':
            this.deleteMulti();
            break;
        case 'insertTabs':
	    this.insertPlotTabsRequest();
        default:
            break;
        }
    },

    isRealLeaf: function()
    {
	var isFolder = (!this.isLeaf()) && (this.get('tabs') === false);
        return !isFolder;
    },

    insertPlotTabsRequest: function() {
	var me = this;
	AmdaAction.getObject(me.get('id'), me.get('nodeType'), function (result,remoteEvent) {
		var paramObj = Ext.create(me.get('objectDataModel'), result);
		myDesktopApp.getLoadedModule(me.get('moduleId'), true, function (module) {
			module.createWindow(function () {
				var uiContent = module.getUiContent();
				if (uiContent != null) {
					paramObj.tabs().each(function (tab) {
						var tabData = tab.getJsonValues();
						uiContent.insertPlotTab(tabData);
					});
				}
			});
		});
	});
    }
   
});