Commit 37e81bff8402c049e9d6e4b5cd6bc5c47b2e28f2

Authored by Benjamin Renard
1 parent e84ed2cf

Direct save of plots in interactive session

Showing 2 changed files with 111 additions and 9 deletions   Show diff stats
js/app/views/PlotTabResultUI.js
... ... @@ -31,6 +31,8 @@ Ext.define('amdaUI.PlotTabResultUI', {
31 31 isTTNavBar : false,
32 32 crtTTFileIndex : 0,
33 33  
  34 + hiddenForm: null,
  35 +
34 36 constructor: function(config) {
35 37 this.addEvents({'pagesize':true});
36 38  
... ... @@ -285,15 +287,48 @@ Ext.define('amdaUI.PlotTabResultUI', {
285 287 if (me.contextualMenu.items.getCount() > 0)
286 288 me.contextualMenu.add('-');
287 289  
288   - me.contextualMenu.add({
289   - text:'Extend/Shift Time request',
290   - handler : function ()
291   - {
292   - var extendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
293   - extendShiftPlugin.show(me.tabId);
294   - },
295   - scope: me
296   - });
  290 + me.contextualMenu.add([
  291 + {
  292 + text:'Extend/Shift Time request',
  293 + handler : function ()
  294 + {
  295 + var extendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
  296 + extendShiftPlugin.show(me.tabId);
  297 + },
  298 + scope: me
  299 + },
  300 + '-',
  301 + {
  302 + text: 'Save Plot',
  303 + handler : function ()
  304 + {
  305 + if (me.hiddenForm == null)
  306 + me.hiddenForm = Ext.create('Ext.form.Panel', {
  307 + title:'hiddenForm',
  308 + renderTo: Ext.getBody(),
  309 + standardSubmit: true,
  310 + url: 'php/downloadPlot.php',
  311 + timeout: 120000,
  312 + height:100,
  313 + width: 100,
  314 + hidden:true,
  315 + items:[
  316 + ]
  317 + });
  318 +
  319 + me.hiddenForm.getForm().submit({
  320 + params: {
  321 + sessionId: sessionID,
  322 + tabId : me.tabId
  323 + },
  324 + success: function(form, action) {
  325 + },
  326 + failure: function(form, action) {
  327 + }
  328 + });
  329 + }
  330 + }
  331 + ]);
297 332  
298 333 me.contextualMenu.showAt(absoluteX, absoluteY);
299 334 }
... ...
php/downloadPlot.php 0 โ†’ 100644
... ... @@ -0,0 +1,67 @@
  1 +<?php
  2 +
  3 +require_once 'config.php';
  4 +
  5 +if (!isset($_POST['sessionId']))
  6 +{
  7 + header("HTTP/1.0 400 Bad Request");
  8 + echo json_encode(array("success" => false, "error" => "Unknown session Id"));
  9 + exit;
  10 +}
  11 +$sessionId = $_POST['sessionId'];
  12 +
  13 +if (!isset($_POST['tabId']))
  14 +{
  15 + header("HTTP/1.0 400 Bad Request");
  16 + echo json_encode(array("success" => false, "error" => "Unknown tab Id"));
  17 + exit;
  18 +}
  19 +$tabId = $_POST['tabId'];
  20 +
  21 +download_plot($sessionId, $tabId);
  22 +
  23 +function download_plot($sessionId, $tabId)
  24 +{
  25 + // Must be fresh start
  26 + if( headers_sent() )
  27 + {
  28 + header("HTTP/1.0 400 Bad Request");
  29 + echo json_encode(array("success" => false, "error" => "Headers Sent"));
  30 + return;
  31 + }
  32 +
  33 + // Required for some browsers
  34 + if(ini_get('zlib.output_compression'))
  35 + ini_set('zlib.output_compression', 'Off');
  36 +
  37 + //Build file path
  38 + $fullPath = USERPATH."/".$sessionId."/RES/Plot_/".$tabId.".png";
  39 + // File Exists?
  40 + if( file_exists($fullPath) ){
  41 +
  42 + // Parse Info / Get Extension
  43 + $fsize = filesize($fullPath);
  44 + $path_parts = pathinfo($fullPath);
  45 + $ctype="image/png";
  46 +
  47 + header("Pragma: public"); // required
  48 + header("Expires: 0");
  49 + header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  50 + header("Cache-Control: private",false); // required for certain browsers
  51 + header("Content-Type: $ctype");
  52 + header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" );
  53 + header("Content-Transfer-Encoding: binary");
  54 + header("Content-Length: ".$fsize);
  55 + ob_clean();
  56 + flush();
  57 + readfile( $fullPath );
  58 +
  59 + } else
  60 + {
  61 + header("HTTP/1.0 400 Bad Request");
  62 + echo json_encode(array("success" => false, "error" => "No existing plot"));
  63 + return;
  64 + }
  65 +}
  66 +
  67 +?>
0 68 \ No newline at end of file
... ...