/** * Project  : AMDA-NG * Name : PlotPreviewUI.js * @class amdaPlotComp.PlotPreviewUI * @extends Ext. panel.Panel * @brief Plot Preview UI definition (View) * @author * @version $Id: PlotPreviewUI.js benjamin $ ******************************************************************************** * FT Id : Date : Name - Description ******************************************************************************* * */ Ext.define('amdaPlotComp.PlotPreviewUI', { extend: 'Ext.panel.Panel', alias: 'widget.plotPreview', requires: [ 'amdaPlotComp.PlotContextManager', 'amdaPlotComp.PlotResultImage' ], panelImage : null, crtContext : null, sliderPage : null, contextualMenu : null, hiddenForm: null, constructor: function(config) { this.init(config); this.callParent(arguments); }, getImageSize : function() { if (!this.crtContext) return { width : 0, height : 0 }; return { width : this.crtContext.page.width * this.sliderPage.getValue()/100., height : this.crtContext.page.height * this.sliderPage.getValue()/100. } }, getImageUrl: function(resultFolder, plotFile) { return 'data/'+sessionID +'/RES/'+resultFolder+ '/' + plotFile; }, createPlotImage: function(resultFolder, plotFile) { var me = this; var size = this.getImageSize(); this.panelImage = Ext.create('amdaPlotComp.PlotResultImage', { src : this.getImageUrl(resultFolder, plotFile), width : size.width, height : size.height, onContextMenu : function(absoluteX, absoluteY, imageX, imageY) { me.contextualMenu.showAt(absoluteX, absoluteY); } }); return this.panelImage; }, updatePlotImage: function(configResult, newPlot) { this.crtContext = configResult.context; this.panelImage.setSrc(this.getImageUrl(configResult.folder, configResult.plotFile)); var size = this.getImageSize(); this.panelImage.setSize(size.width, size.height); this.panelImage.refreshMe(); }, init: function(configResult){ var me = this; this.crtContext = configResult.context; this.interactiveId = configResult.interactiveId; this.sliderPage = new Ext.slider.Single({ width: 130, value: 75, increment: 5, minValue: 50, maxValue: 100, fieldLabel : 'Resize', labelWidth : 40, listeners: { scope : this, changecomplete: function(s, v) { var size = this.getImageSize(); this.panelImage.width = size.width; this.panelImage.height = size.height; this.panelImage.doComponentLayout(); } } }); var bottomToolbar = { xtype: 'toolbar', height: 25, dock: 'bottom', items:[ '->', this.sliderPage ] }; this.contextualMenu = Ext.create('Ext.menu.Menu', { width: 200, plain: true, items: [ { text: 'Save Plot', handler : function () { if (me.hiddenForm == null) me.hiddenForm = Ext.create('Ext.form.Panel', { title:'hiddenForm', renderTo: Ext.getBody(), standardSubmit: true, url: 'php/downloadPlot.php', timeout: 120000, height:100, width: 100, hidden:true, items:[] }); me.hiddenForm.getForm().submit({ params: { sessionId: sessionID, interactiveId : me.interactiveId, preview: true }, success: function(form, action) {}, failure: function(form, action) {} }); } } ] }); var plotPreviewPanelConfig = { preventHeader : true, autoScroll: true, items: [ this.createPlotImage(configResult.folder, configResult.plotFile) ], dockedItems: [bottomToolbar] }; Ext.apply(this , plotPreviewPanelConfig); } });