ExportResultStep.js 3.05 KB
Ext.define('treps.controller.Steps.ExportResultStep', {
	extend: 'treps.controller.Steps.BaseStep',

	hiddenForm: null,

	views: [
		'Steps.ExportResult.ExportResultPanel'
	],

	refs: [
		{
			ref: 'downloadButton',
			selector: 'exportresult_panel > #downloadBtn'
                },
		{
			ref: 'sampButton',
			selector: 'exportresult_panel > sampsend_button'
		}
        ],

	init: function() {
		var me = this;

		this.control(
			{
				'exportresult_panel > #downloadBtn' : {
					click: me.onDownload
				}
			}
		);

		me.getSampButton().onUpdateMenu = me.onUpdateSAMPMenu;
	},
	
	onDownload: function()
	{
		var me = this;

		var session = treps.model.Session;

		if (this.hiddenForm == null)
			this.hiddenForm = Ext.create('Ext.form.Panel', {
				title:'hiddenForm',
				renderTo: Ext.getBody(),
				standardSubmit: true,
				url: treps.Constants.PHP_DIR+'DownloadExport.php',
				timeout: 120000,
				height:100,
				width: 100,
				hidden:true,
				items:[
				]
			});
		
		this.hiddenForm.getForm().submit({
			params: {
				id: session.get('id'),
				filename: session.get('in_filenameBase')
			},
			success: function(form, action) {
			},
			failure: function(form, action) {
			}
		});
	},

	getSAMPClientMenuItem : function(name,id,icon,format)
	{
		var sampManager = treps.controller.SAMP.SAMPManager;

		var me = this;
   
		var href = window.location.href;
	
		return {
			text     : name+' ('+id+')',
			clientId : id,
			handler  : function ()
			{
				if (!sampManager.isConnected())
    					return;
    				sampManager.sendFile(id,format,href+treps.Constants.PHP_DIR+'DownloadExport.php?id='+treps.model.Session.get('id'));
			},
			icon     : icon
		};
	},

	onUpdateSAMPMenu: function(button)
	{
		var sampManager = treps.controller.SAMP.SAMPManager;

		var exportController = treps.app.getController('Steps.ExportResultStep');

		if (!sampManager.isConnected())
		{
			sampManager.connect();
			return false;
		}

		var clientsStore = sampManager.getClientsStore();

		var exportFormat = treps.model.Session.get('exportFormat');

		button.menu.removeAll();

		var me = this;

		clientsStore.each(function(client)
			{
				if (((exportFormat == 'votable') && client.get('acceptVOTable')) ||
					((exportFormat == 'cdf') && client.get('acceptCDF')) ||
					((exportFormat == 'netcdf') && client.get('acceptNetCDF')))
					button.menu.add(exportController.getSAMPClientMenuItem(client.get('name'),client.get('id'),client.get('icon'),exportFormat));
			}
		);

		if (clientsStore.count() > 0)
		{
			button.menu.add('-');
			button.menu.add(exportController.getSAMPClientMenuItem('all clients','hub','',exportFormat));
    		}

		return true;
	},

	isValidStep: function() {
		return false;
	},
	
	doRequest: function(afterrequest) {
	},
	
	doInitStep: function() {
		this.getSampButton().onUpdateMenu = this.onUpdateSAMPMenu;

		var exportFormat = treps.model.Session.get('exportFormat');
		this.getSampButton().setDisabled(exportFormat == 'ascii');
	}
});