forked from extern/egroupware
* Support export Gantt chart to PDF and PNG using DHMTLX's service
This commit is contained in:
parent
f099800b62
commit
ce65365049
32
etemplate/gantt_print.php
Normal file
32
etemplate/gantt_print.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Egroupware
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @package etemplate
|
||||||
|
* @subpackage api
|
||||||
|
* @link http://www.egroupware.org
|
||||||
|
* @author Nathan Gray
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
$GLOBALS['egw_info'] = array(
|
||||||
|
'flags' => array(
|
||||||
|
'currentapp' => 'projectmanager',
|
||||||
|
'noheader' => True,
|
||||||
|
'nonavbar' => True
|
||||||
|
));
|
||||||
|
include('../header.inc.php');
|
||||||
|
|
||||||
|
egw_framework::csp_script_src_attrs(array('https://export.dhtmlx.com/gantt/api.js'));
|
||||||
|
egw_framework::csp_connect_src_attrs('http://export.dhtmlx.com');
|
||||||
|
|
||||||
|
egw_framework::validate_file('/phpgwapi/js/dhtmlxtree/codebase/dhtmlxcommon.js');
|
||||||
|
egw_framework::validate_file('/phpgwapi/js/dhtmlxGantt/codebase/dhtmlxgantt.js');
|
||||||
|
|
||||||
|
egw_framework::includeCSS('/phpgwapi/js/dhtmlxGantt/codebase/dhtmlxgantt.css');
|
||||||
|
|
||||||
|
echo $GLOBALS['egw']->framework->header();
|
||||||
|
?>
|
||||||
|
<?php
|
||||||
|
?>
|
@ -591,6 +591,67 @@ var et2_gantt = et2_valueWidget.extend([et2_IResizeable,et2_IInput],
|
|||||||
return level;
|
return level;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports the gantt chart to an external service that generates a file.
|
||||||
|
*
|
||||||
|
* @param {string} to One of PDF or PNG
|
||||||
|
* @returns {undefined}
|
||||||
|
*/
|
||||||
|
_export: function(to) {
|
||||||
|
var w = egw.open_link(egw.link('/etemplate/gantt_print.php'),'_blank','400x400');
|
||||||
|
var self = this;
|
||||||
|
jQuery(w).load(function() {
|
||||||
|
w.egw_LAB.wait(function() {
|
||||||
|
w.gantt = jQuery.extend(true,{},self.gantt);
|
||||||
|
|
||||||
|
// Loading it twice breaks export
|
||||||
|
if(typeof w.gantt.exportToPNG == 'undefined')
|
||||||
|
{
|
||||||
|
w.egw_LAB.script("https://export.dhtmlx.com/gantt/api.js");
|
||||||
|
}
|
||||||
|
w.egw_LAB.wait(function() {
|
||||||
|
$j(w.gantt.$container).parent().clone().appendTo(w.document.body);
|
||||||
|
// Custom CSS - just send it all
|
||||||
|
var css = '';
|
||||||
|
$j("link[type='text/css']").each(function() {css += this.outerHTML;});
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
name: (w.gantt.getTask(w.gantt._order[0]).text||'gantt').replace(/ /g,'_')+'.'+to.toLowerCase(),
|
||||||
|
header: css + egw.config('site_title','phpgwapi'),
|
||||||
|
footer: $j('#egw_fw_footer',w.opener).html(),
|
||||||
|
// Doesn't work, export never happens:
|
||||||
|
// callback: function() {w.setTimeout(function() {w.close();}, 5000);}
|
||||||
|
};
|
||||||
|
console.log(options);
|
||||||
|
switch(to)
|
||||||
|
{
|
||||||
|
case 'PNG':
|
||||||
|
w.gantt.exportToPNG(options);
|
||||||
|
break;
|
||||||
|
case 'PDF':
|
||||||
|
w.gantt.exportToPDF(options);
|
||||||
|
}
|
||||||
|
w.setTimeout(function() {w.close();}, 5000);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports the gantt chart do dhtmlx's external service, and makes a PDF
|
||||||
|
*/
|
||||||
|
exportToPDF: function() {
|
||||||
|
this._export('PDF');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports the gantt chart do dhtmlx's external service, and makes a PNG
|
||||||
|
*/
|
||||||
|
exportToPNG: function() {
|
||||||
|
this._export('PNG');
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bind all the internal gantt events for nice widget actions
|
* Bind all the internal gantt events for nice widget actions
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user