/** * Project  : AMDA-NG * Name : FeedbackUI.js * @plugin amdaUI.FeedbackUI * @extends Ext.panel.Panel * @brief Feedback view * @author Benjamin * @version $Id: FeedbackUI.js 2031 2014-01-22 11:28:34Z elena $ ******************************************************************************** * FT Id : Date : Name - Description ******************************************************************************* * : */ Ext.define('amdaUI.FeedbackUI', { extend: 'Ext.form.Panel', alias: 'widget.panelFeedback', constructor: function(config) { this.init(config); this.callParent(arguments); }, getInfoMsg : function() { return '

Welcome,

' + 'You have problems/comments
'+ 'Please select an item[s] from a list below and describe the problem...

'; }, getBrowserInfo : function() { return Ext.browser.name+' - '+Ext.browser.engineName+' - '+Ext.browser.engineVersion; }, getUser : function() { return sessionID; }, getInterfaceList : function() { return [ ['General','General'], ['Plot_Data','Plot Data'], ['Data_mining','Data mining'], ['My_Parameters','Parameters'], ['My_Time_Tables','Time Tables'], ['Download_Data','Download Data'], ['Upload_Data','Upload Data'], ['Interoperability','Interoperability'], ['Add_External_Data','External Data'] ]; }, onSendFinish : function(result, e){ var t = e.getTransaction(); if (e.status) { if (result && result == 'none') { // SUCCESS var win = myDesktopApp.desktop.getWindow(myDesktopApp.dynamicModules.feedback.id); Ext.MessageBox.show({ title: 'Feedback sended', msg: 'Thanks for your feedback', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.INFO, fn: function (btn){ win.close(); } }); } else { //ERROR var msgErr = 'Unknown error'; switch (result) { case 'err_user' : msgErr = 'User not defined'; break; case 'err_file' : msgErr = 'Feedback file error'; break; } Ext.Msg.show({title:'Error', msg: msgErr, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); } } else { // FAILURE Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); } }, onSendIssue : function(b,e){ //get links to components var fieldset = this.getComponent('feedback_fieldset'); var fieldsubject = fieldset.getComponent('subject_checkboxgroup'); var fielduser = fieldset.getComponent('user_displayfield'); var fieldbrowser = fieldset.getComponent('browser_displayfield'); var fieldattach = fieldset.getComponent('attach_filefield'); var fieldinterface = fieldset.getComponent('interface_combo'); var fielddes = fieldset.getComponent('desc_textarea'); //test if some fields are valid if (!fieldsubject.isValid() || !fielddes.isValid()) { Ext.Msg.show({title:'Error', msg: 'Some field are required', icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); return; } //generate subject message (a list of all checked boxes) var subjectMsg = ''; fieldsubject.items.each(function (item){ if (!item.checked) return; if (subjectMsg != '') subjectMsg += ' - '; subjectMsg += item.boxLabel; },this); //make the object to send var feed = {user : fielduser.getValue(), interface : fieldinterface.getValue(), subject : subjectMsg, userText : fielddes.getValue(), userAgent : fieldbrowser.getValue(), attach : fieldattach.getValue()}; if (feed.attach != '') { this.submit({ scope : this, url: 'php/uploadFile.php', waitMsg: 'Uploading your file...', success: function(form, o) { feed.attach = o.result.file; //call action AmdaAction.sendFeedback(feed,this.onSendFinish,this); }, failure: function(form, o) { Ext.Msg.show( { title : 'Feedback - Upload attachment', msg : 'Error '+o.result.error, modal : true, icon : Ext.Msg.ERROR, buttons : Ext.Msg.OK }); } }); } else //call action AmdaAction.sendFeedback(feed,this.onSendFinish,this); }, init : function(config) { var myConf = { layout: 'fit', bodyStyle: { background: '#ddecfe'}, items : [ { xtype: 'fieldset', itemId: 'feedback_fieldset', layout: 'anchor', anchor: '100%', items : [ { xtype: 'displayfield', itemId: 'info_displayfield', name: 'information', fieldLabel: '', anchor: '100%', value: this.getInfoMsg() }, { xtype: 'checkboxgroup', itemId: 'subject_checkboxgroup', fieldLabel: 'Subject', anchor: '100%', columns : 3, vertical: true, allowBlank: false, items: [ {boxLabel: 'Bug', inputValue: 'bug', checked: true}, {boxLabel: 'Question', inputValue: 'question'}, {boxLabel: 'Data', inputValue: 'data'}, {boxLabel: 'Comment', inputValue: 'comment'}, {boxLabel: 'Other', inputValue: 'other'} ] }, { xtype: 'displayfield', itemId: 'user_displayfield', fieldLabel: 'User', anchor: '100%', name: 'user', value: this.getUser() }, { xtype: 'displayfield', itemId: 'browser_displayfield', fieldLabel: 'Browser', anchor: '100%', name: 'browser', value: this.getBrowserInfo() }, { xtype: 'filefield', itemId: 'attach_filefield', anchor: '100%', name: 'attachment', fieldLabel: 'Attachment', buttonText: 'Select File...', emptyText : 'none' }, { xtype: 'combo', itemId: 'interface_combo', fieldLabel: 'Interface', name: 'interface', store: this.getInterfaceList(), value: 'General', forceSelection: true, anchor: '100%', autoSelect: true, allowBlanck: false }, { xtype : 'textareafield', itemId: 'desc_textarea', anchor: '100%', height : 200, name: 'description', fieldLabel: 'Description', allowBlank: false }, { xtype : 'hiddenfield', name: 'MAX_FILE_SIZE', value: '3000000' // 3MB } ] }], dockedItems: [{ xtype: 'toolbar', dock: 'bottom', items: [ '->', { iconCls: 'icon-feedback', text: 'Send', scope: this, tooltip: 'Send feeback', handler: this.onSendIssue }] } ] } Ext.apply (this , Ext.apply (arguments, myConf)); } });