Hi there,
I wanna to put this to the codeigniter: Anyway Can you please tell me what I should prepare in the codeigniter to show this:
This is one file gantt.php (I can add gantt do controller but there is some problem to show data. Of course gantt.php works good outside the Codeigniter structure... Can I force codeigniter that all the files (gantt) have to be show in the view in codeigniter?
Code:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="styles/kendo.common.min.css" />
<link rel="stylesheet" href="styles/kendo.default.min.css" />
<link rel="stylesheet" href="styles/kendo.default.mobile.min.css" />
<script src="js/jquery.min.js"></script>
<script src="js/kendo.all.min.js"></script>
</head>
<body>
<?php
require_once '../lib/DataSourceResult.php';
require_once '../lib/Kendo/Autoload.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
header('Content-Type: application/json');
$request = json_decode(file_get_contents('php://input'));
$result = new DataSourceResult('sqlite:..//sample.db');
$type = $_GET['type'];
$operation = $_GET['operation'];
if ($type == "dependency") {
$columns = array('ID', 'PredecessorID', 'SuccessorID', 'Type');
$table = "GanttDependencies";
} else {
$columns = array('ID', 'ParentID', 'OrderID', 'Title', 'Start', 'End', 'PercentComplete', 'Expanded', 'Summary');
$table = "GanttTasks";
}
switch($operation) {
case 'create':
$result = $result->create($table, $columns, $request, 'ID');
break;
case 'update':
$result = $result->update($table, $columns, $request, 'ID');
break;
case 'destroy':
$result = $result->destroy($table, $request, 'ID');
break;
default:
$result = $result->read($table, $columns, $request);
break;
}
echo json_encode($result, JSON_NUMERIC_CHECK);
exit;
}
// tasks datasource
$transport = new \Kendo\Data\DataSourceTransport();
$create = new \Kendo\Data\DataSourceTransportCreate();
$create->url('gantt.php?type=task&operation=create')
->contentType('application/json')
->type('POST');
$read = new \Kendo\Data\DataSourceTransportRead();
$read->url('gantt.php?type=task&operation=read')
->contentType('application/json')
->type('POST');
$update = new \Kendo\Data\DataSourceTransportUpdate();
$update->url('gantt.php?type=task&operation=update')
->contentType('application/json')
->type('POST');
$destroy = new \Kendo\Data\DataSourceTransportDestroy();
$destroy->url('gantt.php?type=task&operation=destroy')
->contentType('application/json')
->type('POST');
$transport->create($create)
->read($read)
->update($update)
->destroy($destroy)
->parameterMap('function(data) {
return kendo.stringify(data);
}');
$taskModel = new \Kendo\Data\DataSourceSchemaModel();
$idField = new \Kendo\Data\DataSourceSchemaModelField('id');
$idField->type('number')
->from('ID')
->nullable(true);
$orderIdField = new \Kendo\Data\DataSourceSchemaModelField('orderId');
$orderIdField->from('OrderID')
->type('number');
$parentIdField = new \Kendo\Data\DataSourceSchemaModelField('parentId');
$parentIdField->from('ParentID')
->defaultValue(null)
->type('number');
$startField = new \Kendo\Data\DataSourceSchemaModelField('start');
$startField->from('Start')
->type('date');
$endField = new \Kendo\Data\DataSourceSchemaModelField('end');
$endField->from('End')
->type('date');
$titleField = new \Kendo\Data\DataSourceSchemaModelField('title');
$titleField->from('Title')
->defaultValue('')
->type('string');
$percentCompleteField = new \Kendo\Data\DataSourceSchemaModelField('percentComplete');
$percentCompleteField->from('PercentComplete')
->type('number');
$summaryField = new \Kendo\Data\DataSourceSchemaModelField('summary');
$summaryField->from('Summary')
->type('boolean');
$expandedField = new \Kendo\Data\DataSourceSchemaModelField('expanded');
$expandedField->from('Expanded')
->defaultValue(true)
->type('boolean');
$taskModel->id('id')
->addField($idField)
->addField($parentIdField)
->addField($orderIdField)
->addField($startField)
->addField($endField)
->addField($titleField)
->addField($percentCompleteField)
->addField($summaryField)
->addField($expandedField);
$schema = new \Kendo\Data\DataSourceSchema();
$schema->model($taskModel)
->data("data");
$tasks = new \Kendo\Data\DataSource();
$tasks->transport($transport)
->schema($schema)
->batch(false);
// dependencies datasource
$transport = new \Kendo\Data\DataSourceTransport();
$create = new \Kendo\Data\DataSourceTransportCreate();
$create->url('gantt.php?type=dependency&operation=create')
->contentType('application/json')
->type('POST');
$read = new \Kendo\Data\DataSourceTransportRead();
$read->url('gantt.php?type=dependency&operation=read')
->contentType('application/json')
->type('POST');
$update = new \Kendo\Data\DataSourceTransportUpdate();
$update->url('gantt.php?type=dependency&operation=update')
->contentType('application/json')
->type('POST');
$destroy = new \Kendo\Data\DataSourceTransportDestroy();
$destroy->url('gantt.php?type=dependency&operation=destroy')
->contentType('application/json')
->type('POST');
$transport->create($create)
->read($read)
->update($update)
->destroy($destroy)
->parameterMap('function(data) {
return kendo.stringify(data);
}');
$dependenciesModel = new \Kendo\Data\DataSourceSchemaModel();
$idField = new \Kendo\Data\DataSourceSchemaModelField('id');
$idField->from('ID')
->type('number');
$typeField = new \Kendo\Data\DataSourceSchemaModelField('type');
$typeField->from('Type')
->type('number');
$predecessorIdField = new \Kendo\Data\DataSourceSchemaModelField('predecessorId');
$predecessorIdField->from('PredecessorID')
->type('number');
$successorIdField = new \Kendo\Data\DataSourceSchemaModelField('successorId');
$successorIdField->from('SuccessorID')
->type('number');
$dependenciesModel->id('id')
->addField($idField)
->addField($typeField)
->addField($predecessorIdField)
->addField($successorIdField);
$schema = new \Kendo\Data\DataSourceSchema();
$schema->model($dependenciesModel)
->data("data");
$dependencies = new \Kendo\Data\DataSource();
$dependencies->transport($transport)
->schema($schema)
->batch(false);
// columns
$idColumn = new \Kendo\UI\GanttColumn();
$idColumn->field("id")
->title("ID")
->width(50);
$titleColumn = new \Kendo\UI\GanttColumn();
$titleColumn->field("title")
->title("Title")
->editable(true)
->sortable(true);
$startColumn = new \Kendo\UI\GanttColumn();
$startColumn->field("start")
->title("Start Time")
->format("{0:MM/dd/yyyy}")
->width(100)
->editable(true)
->sortable(true);
$endColumn = new \Kendo\UI\GanttColumn();
$endColumn->field("end")
->title("End Time")
->format("{0:MM/dd/yyyy}")
->width(100)
->editable(true)
->sortable(true);
// gantt
$gantt = new \Kendo\UI\Gantt('gantt');
$gantt->dataSource($tasks)
->dependencies($dependencies)
->height(700)
->addView(
'day',
array('type' => 'week', 'selected' => true),
'month'
)
->addColumn($idColumn, $titleColumn, $startColumn, $endColumn)
->showWorkHours(false)
->showWorkDays(false)
->snap(false);
?>
<?php
echo $gantt->render();
?>
</body>
</html>
http://demos.telerik.com/php-ui/gantt/index