composer create-project laravel/laravel example-app
cd example-app
php artisan serve |
DB_DATABASE=laravel_api
DB_USERNAME=root
DB_PASSWORD= |
php artisan make:model KanbanTask -m |
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateKanbanTasksTable extends Migration
{
public function up()
{
Schema::create('kanban_tasks', function (Blueprint $table) {
$table->id();
$table->string('title', 500);
$table->string('status', 500);
$table->string('assignee', 500);
$table->string('summary');
$table->timestamps();
});
}
….
}
|
php artisan migrate |
php artisan make:controller KanbanTaskController |
// Get all Kanban tasks
Route::get('kanban_tasks', 'App\Http\Controllers\KanbanTaskController@getKanbanTask'); |
class KanbanTask extends Model
{
use HasFactory;
public $timestamps = false;
protected $fillable = ['title', 'status', 'assignee', 'summary'];
}
|
use App\Models\KanbanTask;
class KanbanTaskController extends Controller
{
public function getKanbanTask() {
return response()->json(KanbanTask::all(), 200);
}
}
|
npm install -g @angular/cli
ng new syncfusion-app
cd syncfusion-app |
npm install @syncfusion/ej2-angular-kanban –save |
import { KanbanAllModule } from '@syncfusion/ej2-angular-kanban';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
KanbanAllModule,
HttpClientModule,
],
})
export class AppModule { }
|
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-layouts/styles/material.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-angular-kanban/styles/material.css'; |
<ejs-kanban #kanbanObj cssClass="kanban-swimlane" keyField="status" [dataSource]="KanbanData"
[cardSettings]="cardSettings">
<e-columns>
<e-column headerText="To Do" keyField="Open"></e-column>
<e-column headerText="In Progress" keyField="InProgress"></e-column>
<e-column headerText="Done" keyField="Close"></e-column>
</e-columns>
</ejs-kanban>
|
import { HttpClient } from "@angular/common/http";
import { CardSettingsModel } from "@syncfusion/ej2-angular-kanban";
….
export class AppComponent {
KanbanData: Object;
public cardSettings: CardSettingsModel = {
contentField: "summary",
headerField: "id"
};
constructor(private http: HttpClient) { }
ngOnInit() {
this.http.get('http://127.0.0.1:8000/api/kanban_tasks').subscribe(result => {
this.KanbanData = result;
})
}
} |
app.component.ts
public dataManger: DataManager = new DataManager({
url: 'http://localhost:8080/KanbanPHP/GetData.php', // Triggered server for initial Kanban loading
updateUrl: 'http://localhost:8080/KanbanPHP/KanbanCrud.php', // Triggered server when update action perform
removeUrl: 'http://localhost:8080/KanbanPHP/KanbanCrud.php',// Triggered server when delete action perform
insertUrl: 'http://localhost:8080/KanbanPHP/KanbanCrud.php', // Triggered server when add action perform
adaptor: new UrlAdaptor(),
crossDomain: true
})
app.component.html
<ejs-kanban #kanbanObj [dataSource]="dataManger">
…….
</ejs-kanban>
|
<?php
// used to connect to the database
$host = "localhost";
$db_name = "laravel_api"; /* Put your database name */
$username = "root";
$password = ""; /* Put your password */
header('Content-Type: application/json');
//create connection
$link = mysqli_connect($host,$username,$password,$db_name);
// SQL query for retrieve all the column data from a table
$query =$sql = "SELECT * FROM kanban_datas";
$result = $link->query($query);
$json=array();
while ($row = mysqli_fetch_assoc($result)) {
$json[]=$row;
}
echo json_encode($json);
?>
|
<?php
………..
// Insert new data into database table
if ($params['action'] == "insert") {
$value=$params['value'];
$id=$value['Id'];
$status =$value["Status"];
$summary =$value["Summary"];
$retval = mysqli_query($link,"INSERT INTO kanban_datas (Id,Status,Summary)
VALUES ('$id','$status','$summary')");
}
// Update modified data into database table
if ($params['action'] == "update") {
$value=$params['value'];
$id=$value['Id'];
$status =$value["Status"];
$summary =$value["Summary"];
$assignee =$value["Assignee"];
$retval = mysqli_query($link,"UPDATE kanban_datas SET Status='$status',Assignee='$assignee',Summary='$summary' WHERE Id=$id");
}
// Delete data into database table
if ($params['action'] == "remove") {
$value=$params['key'];
$res1 = $link->query("DELETE FROM `kanban_datas` WHERE Id=$value");
$success=array("Deleted"=>$value);
}
……….
echo json_encode($json);
?>
|
public dataManger: DataManager = new DataManager({
url: 'http://localhost:8080/Laravel/example-app/routes/KanbanPHP/GetData.php',
updateUrl: 'http://localhost:8080/laravel/example-app/routes/KanbanPHP/KanbanCrud.php',
removeUrl: 'http://localhost:8080/laravel/example-app/routes/KanbanPHP/KanbanCrud.php',
insertUrl: 'http://localhost:8080/laravel/example-app/routes/KanbanPHP/KanbanCrud.php',
adaptor: new UrlAdaptor(),
crossDomain: true
}) |
'http://localhost:8080/Laravel/example-app/routes/KanbanPHP/GetData.php'
|