/** * Project : AMDA-NG4 * Name : MyDataNode.js * @class amdaModel.MyDataNode * @extends amdaModel.InteractiveNode * @brief * @author * @version $Id: MyDataParamNode.js 2683 2014-12-02 10:58:53Z elena */ Ext.define('amdaModel.MyDataParamNode', { extend: 'amdaModel.InteractiveNode', fields : [ // { name : 'linkedFile', persist: false}, { name : 'linkedMask', persist: false}, { name : 'fileObject', persist: false}, { name : 'size', persist: false}, { name : 'isSpectra', type: 'boolean', defaultValue: false, persist: false } ], statics:{ nodeType: 'myDataParam', objectName : 'Parameter' }, constructor : function(config) { this.callParent(arguments); this.set('moduleId',myDesktopApp.dynamicModules.my_data.id); this.set('objectDataModel','amdaModel.FileParamObject'); if (this.get('isParameter')) { if (this.get('size') == 1) this.set('iconCls', 'icon-scalar'); else if(this.get('size') == 3) this.set('iconCls', 'icon-vector'); else this.set('iconCls', 'icon-unknowntype'); } if (this.get('isSpectra')) this.set('iconCls', 'icon-spectra'); }, localMenuItems : function() { var menuItems = [{ fnId : 'root-upload', text : 'Upload File', hidden : true }, { fnId : 'dire-upload', text : 'Upload File', hidden : true }, { fnId : 'leaf-upload', text : 'Upload File', hidden : true },{ fnId : 'leaf-plotParam', text : 'Plot Parameter', hidden : true }, { fnId : 'leaf-downParam', text : 'Download Parameter', hidden : true }, { fnId : 'para-plotParam', text : 'Plot Parameter', hidden : true }, { fnId : 'para-downParam', text : 'Download Parameter', hidden : true }]; return menuItems; }, getAllContextMenuItems: function() { var menuItems = this.allMenuItems('Parameter'); var locMenuItems = this.localMenuItems(); return Ext.Array.merge(menuItems,locMenuItems); }, onMenuItemClick : function(menu,item,event) { var fnId = Ext.util.Format.substr(item.fnId, 5, item.fnId.length); switch (fnId) { case 'deleteNode': this.deleteNode(); break; case 'createDir': this.createDir(); break; case 'createLeaf': this.createLeaf(this); break; case 'renameNode': this.renameNode(); break; case 'editLeaf': this.editLeaf(); break; case 'upload': this.uploadFile(); break; case 'plotParam': this.createPlot(this); break; case 'downParam': this.createDownload(this); break; default: break; } // switch end }, uploadFile: function() { myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.upload.id, true, function (module) { module.createWindow(); }); }, editLeaf: function() { // load the rootNode and recursively all its child nodes // to know all names of DerivedParameters var me = this; amdaModel.InteractiveNode.preloadNodes(this.getRootNode(), function() { if (me.get('object')) { if (me.get('fileObject')) // launch edition of parameter into parameter module me.editInModule(); else AmdaAction.getObject(me.get('object').get('file'), amdaModel.MyDataNode.nodeType, me.getFileObjectCallback, me); } else { // call the ext method to get the details of parameter // the edition of real parameter is done into callback method getObjectCallback AmdaAction.getObject(me.get('id'), me.get('nodeType'), me.getObjectCallback, me); } }); }, // special case file object should be also loaded getObjectCallback : function(result,remoteEvent){//result, e) { var t = remoteEvent.getTransaction(); if (result) { if (result.id) { var paramObj = Ext.create(this.get('objectDataModel'), result); // set parameter into node this.set('object',paramObj); paramObj.set('tableDef', result['tableDef']); if (paramObj.get('mask')) var file = paramObj.get('mask'); else var file = paramObj.get('file'); AmdaAction.getObject(file, amdaModel.MyDataNode.nodeType, this.getFileObjectCallback, this); } else { myDesktopApp.errorMsg(result.error); } } else { // EXCEPTION : parameter not found !? myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '" +this.get('name')+"' found!"); //TODO: adding an error log } }, getFileObjectCallback : function(result,remoteEvent){//result, e) { var t = remoteEvent.getTransaction(); if (result) { if (result.success) { var paramObj = Ext.create('amdaModel.FileObject', result); this.set('fileObject', paramObj); // Edition of parameter into parameter Module this.editInModule(); } else { myDesktopApp.errorMsg(result.error); } } else { // EXCEPTION : parameter not found !? myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '" +this.get('name')+"' found!"); } }, /* * Mask was possibly changed update this info */ updateMask : function(mask) { var myParamRootNode = this.getRootNode(); if (myParamRootNode.isExpanded) { Ext.Array.each(myParamRootNode.childNodes, function(node) { if (node.get('linkedMask') && node.get('linkedMask').indexOf(mask) != -1 ) { node.set('linkedMask',mask); if (node.get('info')) { var info = node.get('info').split("
"); node.set('info',info[0] + "
" + info[1] + "
Mask: " + mask); } } }); } }, updateMyData : function(){ // reload myFiles Tree in explorer var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); if (explorerTree) { var explorerTreeStore = explorerTree.getStore(); var explorerRoot = explorerTreeStore.getRootNode().findChild('text','My Files'); var explorerPath = '/root/myData-treeRootNode/'; explorerTreeStore.reload({node : explorerRoot, params : { nodeType: 'myData'}, callback : function(){ explorerTree.selectPath(explorerPath); } }); } }, isParameter : function(){ return this.get('isParameter'); }, specialUpdate : function(res, timeUpdate) { if (timeUpdate && res.info) { var startStop = res.info.split("
"); var globalStart = startStop[1].substr(0,19); var globalStop = startStop[1].substr(20); this.set('globalStart', globalStart); this.set('globalStop', globalStop); if (res.mask) this.set('linkedMask', res.mask); if (res.size) this.set('size', res.size); } if (res.isSpectra) { this.set('iconCls', 'icon-spectra'); } else if (res.size == 3) { this.set('iconCls', 'icon-vector'); } else if (res.size > 1) { this.set('iconCls', 'icon-unknowntype'); } // update my data on possible mask change if (res.updateMyData) { this.updateMyData(); this.updateMask(res.mask); } } });