<?php
require_once '../lib/Kendo/Autoload.php';
require_once '../include/diagram_data.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$type = $_GET['type'];
if ($type == 'save') {
$fileName = $_POST['fileName'];
$contentType = $_POST['contentType'];
$base64 = $_POST['base64'];
$data = base64_decode($base64);
header('Content-Type:' . $contentType);
header('Content-Length:' . strlen($data));
header('Content-Disposition: attachment; filename=' . $fileName);
echo $data;
} else {
header('Content-Type: application/json');
$result = orgchart_items();
echo json_encode($result);
}
exit;
}
?>
<div class="box wide">
<h4>Export diagram content</h4>
<div class="box-col">
<button class='export-pdf k-button'>Export as PDF</button>
</div>
<div class="box-col">
<button class='export-img k-button'>Export as Image</button>
</div>
<div class="box-col">
<button class='export-svg k-button'>Export as SVG</button>
</div>
</div>
<script>
$(".export-pdf").click(function() {
var diagram = $("#diagram").getKendoDiagram();
diagram.exportPDF({ paperSize: "auto", margin: { left: "1cm", top: "1cm", right: "1cm", bottom: "1cm" } }).done(function(data) {
kendo.saveAs({
dataURI: data,
fileName: "diagram.pdf",
proxyURL: "export.php?type=save"
});
});
});
$(".export-img").click(function() {
var diagram = $("#diagram").getKendoDiagram();
diagram.exportImage().done(function(data) {
kendo.saveAs({
dataURI: data,
fileName: "diagram.png",
proxyURL: "export.php?type=save"
});
});
});
$(".export-svg").click(function() {
var diagram = $("#diagram").getKendoDiagram();
diagram.exportSVG().done(function(data) {
kendo.saveAs({
dataURI: data,
fileName: "diagram.svg",
proxyURL: "export.php?type=save"
});
});
});
</script>
<script>
function visualTemplate(options) {
var dataviz = kendo.dataviz;
var g = new dataviz.diagram.Group();
var dataItem = options.dataItem;
g.append(new dataviz.diagram.Rectangle({
width: 210,
height: 75,
stroke: {
width: 0
},
fill: dataItem.colorScheme
}));
g.append(new dataviz.diagram.TextBlock({
text: dataItem.firstName + " " + dataItem.lastName,
x: 85,
y: 20,
color: "#fff"
}));
g.append(new dataviz.diagram.TextBlock({
text: dataItem.title,
x: 85,
y: 40,
color: "#fff"
}));
g.append(new dataviz.diagram.Image({
source: "../content/dataviz/diagram/people/" + dataItem.image,
x: 3,
y: 3,
width: 68,
height: 68
}));
return g;
}
function onDataBound() {
this.bringIntoView(this.shapes);
}
</script>
<div class="demo-section k-content wide">
<?php
$read = new \Kendo\Data\DataSourceTransportRead();
$read->url('index.php')
->contentType('application/json')
->type('POST');
$transport = new \Kendo\Data\DataSourceTransport();
$transport->read($read);
$model = new \Kendo\Data\HierarchicalDataSourceSchemaModel();
$model->children("items");
$schema = new \Kendo\Data\HierarchicalDataSourceSchema();
$schema->model($model);
$dataSource = new \Kendo\Data\HierarchicalDataSource();
$dataSource->transport($transport)
->schema($schema);
$layout = new \Kendo\Dataviz\UI\DiagramLayout();
$layout->type('layered');
$shape_defaults = new \Kendo\Dataviz\UI\DiagramShapeDefaults();
$shape_defaults->visual(new \Kendo\JavaScriptFunction('visualTemplate'));
$stroke = new \Kendo\Dataviz\UI\DiagramConnectionDefaultsStroke();
$stroke->color('#979797')
->width(2);
$connection_defaults = new \Kendo\Dataviz\UI\DiagramConnectionDefaults();
$connection_defaults->stroke($stroke);
$diagram = new \Kendo\Dataviz\UI\Diagram('diagram');
$diagram->dataSource($dataSource)
->dataBound('onDataBound')
->layout($layout)
->shapeDefaults($shape_defaults)
->connectionDefaults($connection_defaults);
echo $diagram->render();
?>
</div>