/** * 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); }); } }); }); }); } });