/** * Project  : AMDA-NG * Name : AliasUI.js * @class amdaUI.AliasUI * @extends Ext.form.FieldSet * @brief Alias UI definition (View) * @author Myriam * @version $Id: AliasUI.js 966 2012-07-03 14:50:05Z elena $ ******************************************************************************** * FT Id : Date : Name - Description ******************************************************************************* * 08/06/2011: Myriam - Migration extjs4 */ Ext.define('amdaUI.AliasUI',{ extend: 'Ext.form.Panel', alias: 'widget.alias', /** * @cfg {String} data models * @required */ nodeDataModel : 'amdaModel.AliasNode', setAlias : function(obj) { var paramValue = obj ? obj.get('id') : null; var aliasValue = obj && obj.get('alias') ? obj.get('alias') : null; this.parameterField.setValue(paramValue); this.aliasField.setValue(aliasValue); }, setAliasJson : function(obj) { var paramValue = obj ? obj.id : null; var aliasValue = obj && obj.alias ? obj.alias : null; this.parameterField.setValue(paramValue); this.aliasField.setValue(aliasValue); }, setLinkedNode : function (myLinkedNode){ this.linkedNode = myLinkedNode; }, setParamNode : function (paramNode){ this.paramNode = paramNode; if (this.paramNode.get('alias') && amdaModel.AliasNode.deletedAliases) { this.checkDeleted(this.paramNode.get('id')); } }, // check if alias was deleted in this session => set param alias == null checkDeleted : function(paramId) { var itemIndex = -1; Ext.Array.each(amdaModel.AliasNode.deletedAliases, function(name, index, item) { if (name === paramId) { itemIndex = index; return false; } } ); if (itemIndex >= 0) { Ext.Array.erase(amdaModel.AliasNode.deletedAliases, itemIndex, 1); } }, createLinkedNode : function (){ var newNode = Ext.create(this.nodeDataModel, { leaf : true, contextNode : this.contextNode }); this.setLinkedNode(newNode); }, validate : function(alias,param) { var aliasNodeByName = this.linkedNode.get('rootNode').findChild('text', alias); if (aliasNodeByName) { //TODO process var paramId = aliasNodeByName.get('id').substr(6); Ext.Msg.alert('Alias','Alias '+ alias +' already exists for parameter\n' + paramId); return false; } return true; }, updateConstruct : function(oldval,newval) { Ext.Array.each(myDesktopApp.paramModulesID, function(id){ var targetModule = myDesktopApp.getLoadedModule(id); if (targetModule) targetModule.getUiContent().updateConstruct(oldval,newval); }); }, saveAlias: function() { if (this.parameterField.value.match(/[a-z,0-9]/gi) == null) { Ext.Msg.show({title:'No Parameter', msg: 'Please select parameter to create alias for', icon: Ext.Msg.WARNING, buttons: Ext.Msg.OK}); return; } var tree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); var rootNode = tree.getRootNode().findChild('id','alias-treeRootNode',true); if (!rootNode.isExpanded()) rootNode.expand(false); if (!this.paramNode.get('alias')) { this.createLinkedNode(); var isNew = true; } else { var aliasNode = rootNode.findChild('text', this.paramNode.get('alias')); if (!aliasNode) {//TODO error alert('NOT FOUND'); } this.setLinkedNode(aliasNode); var isNew = false; } this.linkedNode.set('rootNode', rootNode); var alias = this.aliasField.value; var param = this.parameterField.value; // now validation if (this.validate(alias,param)) { if (isNew) { if (alias.match(/[a-z,0-9]/gi) == null) { Ext.Msg.show({title:'No Alias', msg: 'No alias was created for parameter '+ param, icon: Ext.Msg.WARNING, buttons: Ext.Msg.OK}); } else { // create alias this.linkedNode.create(alias, param); this.updateConstruct(param,"#"+alias); } } else if (alias.match(/[a-z,0-9]/gi) == null) { var alias = this.paramNode.get('alias'); Ext.Msg.confirm('Delete', 'Are you sure you want to delete this alias ?', function(btn, text){ if (btn == 'yes'){ // remove alias this.updateConstruct("#"+alias,param); this.linkedNode.deleteNode(); } },this); } else { // rename alias this.linkedNode.renameNode(this.paramNode.get('alias'),alias, param); this.updateConstruct("#"+this.paramNode.get('alias'),"#"+alias); } // Delete alias from array of deleted aliases this.checkDeleted(this.paramNode.get('id')); this.paramNode.set('alias',alias); } var win = myDesktopApp.getDesktop().getWindow('alias-win'); if (win) win.close(); }, initComponent : function (){ if (this.initialConfig.paramNode) this.setParamNode(this.initialConfig.paramNode); this.parameterField = new Ext.form.field.Text({ fieldLabel: 'AMDA Parameter', name:'param', labelAlign: 'top', disabled: true, width : '90%', padding : '10px 0 0 10px', allowBlank: false }); this.aliasField = new Ext.form.field.Text({ fieldLabel: 'Your Alias', padding : '10px 0 0 10px', width : '90%', labelWidth: 70, allowBlank: false }); this.setAlias(this.paramNode); var config = { defaultType: 'textfield', bodyStyle: 'background:#ddecfe;', items: [ this.parameterField, this.aliasField ], fbar: [ { text: 'Save Alias', scope: this, handler: this.saveAlias } ] }; Ext.apply (this , Ext.apply(this.initialConfig, config)); this.callParent(arguments); } });