PHP code example of yacoubalhaidari / organization-chart
1. Go to this page and download the library: Download yacoubalhaidari/organization-chart library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yacoubalhaidari / organization-chart example snippets
use App\Filament\Widgets\CompanyOrgChartWidget;
public function panel(Panel $panel): Panel
{
return $panel
->widgets([
CompanyOrgChartWidget::class,
]);
}
namespace App\Filament\Widgets;
use YacoubAlhaidari\OrganizationChart\OrganizationChartWidget;
use YacoubAlhaidari\OrganizationChart\OrganizationChartBuilder;
class CompanyOrgChart extends OrganizationChartWidget
{
protected string $view = 'organization-chart::widget-without-description';
public function mount(): void
{
$builder = OrganizationChartBuilder::make()
->title('Company Structure')
->height(700)
->inverted(true);
$builder->executiveLevel([
['CEO', 'CTO'],
['CEO', 'CFO'],
]);
$builder->executiveNodes([
[
'id' => 'CEO',
'title' => 'Chief Executive Officer',
'name' => 'Your Name',
'color' => '#6366f1',
],
[
'id' => 'CTO',
'title' => 'Chief Technology Officer',
'name' => 'Tech Director',
'color' => '#3b82f6',
],
[
'id' => 'CFO',
'title' => 'Chief Financial Officer',
'name' => 'Finance Director',
'color' => '#10b981',
],
]);
$this->builder($builder);
}
}
public function mount(): void
{
$builder = OrganizationChartBuilder::make()
->title('Our Company')
->height(600)
->inverted(true)
->executiveLevel([
['CEO', 'CTO'],
['CEO', 'CFO'],
['CEO', 'COO'],
])
->executiveNodes([
[
'id' => 'CEO',
'title' => 'Chief Executive Officer',
'name' => 'Sarah Johnson',
'image' => 'https://i.pravatar.cc/150?img=1',
'color' => '#6366f1',
],
[
'id' => 'CTO',
'title' => 'CTO',
'name' => 'Michael Chen',
'image' => 'https://i.pravatar.cc/150?img=2',
'color' => '#3b82f6',
],
[
'id' => 'CFO',
'title' => 'CFO',
'name' => 'Emily Davis',
'color' => '#10b981',
],
[
'id' => 'COO',
'title' => 'COO',
'name' => 'David Martinez',
'color' => '#f59e0b',
],
]);
$this->builder($builder);
}
public function mount(): void
{
$builder = OrganizationChartBuilder::make()
->title('Complete Organization')
->height(800)
// Executives
->executiveLevel([
['CEO', 'CTO'],
['CEO', 'VP Sales'],
])
->executiveNodes([
['id' => 'CEO', 'name' => 'CEO', 'title' => 'Chief Executive Officer'],
['id' => 'CTO', 'name' => 'CTO', 'color' => '#3b82f6'],
['id' => 'VP Sales', 'name' => 'VP Sales', 'color' => '#10b981'],
])
// Departments
->departments([
['CTO', 'Engineering Dept'],
['CTO', 'Product Dept'],
['VP Sales', 'Sales Dept'],
])
->departmentNodes([
['id' => 'Engineering Dept', 'name' => 'Engineering'],
['id' => 'Product Dept', 'name' => 'Product'],
['id' => 'Sales Dept', 'name' => 'Sales'],
])
// Teams
->teams([
['Engineering Dept', 'Frontend Team'],
['Engineering Dept', 'Backend Team'],
])
->teamNodes([
['id' => 'Frontend Team', 'name' => 'Frontend'],
['id' => 'Backend Team', 'name' => 'Backend'],
]);
$this->builder($builder);
}
public function mount(): void
{
$executives = Employee::where('level', 'executive')
->with('manager')
->get();
$builder = OrganizationChartBuilder::make()
->title('Company Hierarchy')
->height(700)
->executiveLevel(
$executives->map(fn($e) => [
$e->manager?->name ?? 'Board',
$e->name
])->toArray()
)
->executiveNodes(
$executives->map(fn($e) => [
'id' => $e->name,
'title' => $e->job_title,
'name' => $e->full_name,
'image' => $e->avatar_url,
'color' => $e->department_color,
])->toArray()
);
$this->builder($builder);
}
public function mount(): void
{
$builder = OrganizationChartBuilder::make()
->title('Horizontal Organization')
->height(500)
->inverted(false) // Horizontal layout
->executiveLevel([
['Board', 'President'],
['President', 'VP Operations'],
['President', 'VP Marketing'],
])
->executiveNodes([
['id' => 'Board', 'name' => 'Board of Directors'],
['id' => 'President', 'name' => 'President'],
['id' => 'VP Operations', 'name' => 'VP Operations'],
['id' => 'VP Marketing', 'name' => 'VP Marketing'],
]);
$this->builder($builder);
}
$builder->title('My Company')
->height(800)
->inverted(true);
$builder->executiveLevel([
['CEO', 'CTO'],
['CEO', 'CFO'],
])
->departments([
['CTO', 'Engineering Dept'],
['CFO', 'Finance Dept'],
]);
$builder->executiveNodes([
[
'id' => 'CEO',
'name' => 'John Smith',
'title' => 'Chief Executive Officer',
'image' => 'https://example.com/ceo.jpg',
'color' => '#6366f1',
],
]);
$builder = OrganizationChartBuilder::make()
->executiveLevel([['CEO', 'CTO']])
->executiveNodes([
['id' => 'CEO', 'name' => 'CEO'],
]);
$validation = $builder->validate();
// Returns: ['valid' => false, 'errors' => ['Missing node: CTO']]
$missing = $builder->getMissingNodes();
// Returns: ['CTO']
protected string $view = 'organization-chart::widget-without-description';
->executiveNodes([
['id' => 'CEO', 'name' => 'CEO', 'color' => '#6366f1'], // Indigo
['id' => 'CTO', 'name' => 'CTO', 'color' => '#3b82f6'], // Blue
['id' => 'CFO', 'name' => 'CFO', 'color' => '#10b981'], // Green
])
->executiveNodes([
[
'id' => 'CEO',
'name' => 'Sarah Johnson',
'image' => asset('storage/avatars/ceo.jpg'),
],
])
class CompanyOrgChart extends OrganizationChartWidget
{
protected int | string | array $columnSpan = 'full'; // Full width
// Or specific spans:
// protected int | string | array $columnSpan = 2;
}
$missing = $builder->getMissingNodes();
// Returns array of missing node IDs
bash
php artisan filament:assets
bash
php artisan make:organization-chart CompanyOrgChart
bash
php artisan make:organization-chart MyCompany
bash
php artisan vendor:publish --tag=organization-chart-translations
bash
# From your Laravel project root
php artisan filament:assets