4 changed files with 296 additions and 176 deletions
-
228public/css/tree.css
-
103public/css/tree2.css
-
64resources/views/users/tree.blade.php
-
63resources/views/users/tree2.blade.php
@ -1,173 +1,107 @@ |
|||
/*Now the CSS*/ |
|||
* {margin: 0; padding: 0;} |
|||
|
|||
.tree ul { |
|||
padding-top: 20px; position: relative; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
*, *:before, *:after { |
|||
-webkit-box-sizing: border-box; |
|||
-moz-box-sizing: border-box; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
.tree ul.branch-2 { |
|||
padding-top: 0; |
|||
left: 10%; |
|||
border-left: 1px solid #ccc; |
|||
body { |
|||
padding-bottom: 50px; |
|||
} |
|||
|
|||
.tree li { |
|||
float: left; text-align: center; |
|||
list-style-type: none; |
|||
#wrapper { |
|||
position: relative; |
|||
padding: 20px 5px 0 5px; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
} |
|||
|
|||
.tree .branch-1 > li { |
|||
text-align: left; |
|||
/*border-left: 1px solid #ccc;*/ |
|||
.branch { |
|||
position: relative; |
|||
margin-left: 230px; |
|||
} |
|||
|
|||
.tree .branch-2 li { |
|||
float: none; |
|||
text-align: left; |
|||
padding-left: 10px; |
|||
/*.branch .lv3 { |
|||
margin-left: 150px; |
|||
} |
|||
|
|||
/*We will use ::before and ::after to draw the connectors*/ |
|||
|
|||
.tree li::before, .tree li::after{ |
|||
content: ''; |
|||
position: absolute; top: 0; right: 50%; |
|||
border-top: 1px solid #ccc; |
|||
width: 50%; height: 20px; |
|||
.branch .lv4 { |
|||
margin-left: 150px; |
|||
} |
|||
|
|||
.tree li::after{ |
|||
right: auto; left: 50%; |
|||
border-left: 1px solid #ccc; |
|||
#wrapper .branch .lv2 span.label { |
|||
width: 30px; |
|||
}*/ |
|||
.branch:before { |
|||
content: ""; |
|||
width: 30px; |
|||
border-top: 2px solid #ccc; |
|||
position: absolute; |
|||
left: -60px; |
|||
top: 50%; |
|||
margin-top: 1px; |
|||
} |
|||
|
|||
.tree .branch-2 li::after{ |
|||
border-left: none; |
|||
.entry { |
|||
position: relative; |
|||
min-height: 30px; |
|||
} |
|||
|
|||
.tree .branch-2 li::before, .tree .branch-2 li::after{ |
|||
content: ''; |
|||
.entry:before { |
|||
content: ""; |
|||
height: 100%; |
|||
border-left: 2px solid #ccc; |
|||
position: absolute; |
|||
top: 30px; |
|||
right: 50%; |
|||
border-bottom: 1px solid #ccc; |
|||
border-top: none; |
|||
width: 10px; |
|||
height: 5px; |
|||
left: -30px; |
|||
} |
|||
|
|||
.tree .branch-2 li::before { |
|||
display: none; |
|||
.entry:after { |
|||
content: ""; |
|||
width: 30px; |
|||
border-top: 2px solid #ccc; |
|||
position: absolute; |
|||
left: -30px; |
|||
top: 50%; |
|||
margin-top: 1px; |
|||
} |
|||
|
|||
.tree .branch-2 li::after{ |
|||
right: auto; |
|||
left: 0%; |
|||
/*border-left: 1px solid #ccc;*/ |
|||
.entry:first-child:before { |
|||
width: 10px; |
|||
height: 50%; |
|||
top: 50%; |
|||
margin-top: 2px; |
|||
border-radius: 10px 0 0 0; |
|||
} |
|||
|
|||
/*We need to remove left-right connectors from elements without any siblings*/ |
|||
.tree li:only-child::after, .tree li:only-child::before { |
|||
display: block; |
|||
.entry:first-child:after { |
|||
height: 10px; |
|||
border-radius: 10px 0 0 0; |
|||
} |
|||
|
|||
/*Remove space from the top of single children*/ |
|||
.tree .branch-0 > li:only-child{ padding-top: 0; } |
|||
|
|||
/*Remove left connector from first child and right connector from last child*/ |
|||
.tree li:first-child::before, .tree li:last-child::after{ |
|||
border: 0 none; |
|||
.entry:last-child:before { |
|||
width: 10px; |
|||
height: 50%; |
|||
border-radius: 0 0 0 10px; |
|||
} |
|||
|
|||
.tree .branch-2 li:first-child::before, .tree .branch-2 li:last-child::after { |
|||
right: auto; |
|||
left: 0%; |
|||
/*border-left: 1px solid #ccc;*/ |
|||
border-bottom: 1px solid #ccc; |
|||
.entry:last-child:after { |
|||
height: 10px; |
|||
border-top: none; |
|||
border-bottom: 2px solid #ccc; |
|||
border-radius: 0 0 0 10px; |
|||
margin-top: -9px; |
|||
} |
|||
|
|||
/*Adding back the vertical connector to the last nodes*/ |
|||
.tree .branch-1 li:last-child::before{ |
|||
border-right: 1px solid #ccc; |
|||
border-radius: 0 5px 0 0; |
|||
-webkit-border-radius: 0 5px 0 0; |
|||
-moz-border-radius: 0 5px 0 0; |
|||
} |
|||
.tree li:first-child::after{ |
|||
border-radius: 5px 0 0 0; |
|||
-webkit-border-radius: 5px 0 0 0; |
|||
-moz-border-radius: 5px 0 0 0; |
|||
.entry.sole:before { |
|||
display: none; |
|||
} |
|||
|
|||
/*.tree .branch-2 li:first-child::after{ |
|||
.entry.sole:after { |
|||
width: 30px; |
|||
height: 0; |
|||
margin-top: 1px; |
|||
border-radius: 0; |
|||
top: 0; |
|||
height: 35px; |
|||
} |
|||
|
|||
.tree .branch-2 li:last-child::after{ |
|||
border-radius: 0 0 0 5px; |
|||
-webkit-border-radius: 0 0 0 5px; |
|||
-moz-border-radius: 0 0 0 5px; |
|||
}*/ |
|||
|
|||
/*Time to add downward connectors from parents*/ |
|||
.tree ul ul::before{ |
|||
content: ''; |
|||
position: absolute; top: 0; left: 50%; |
|||
/*border-left: 1px solid #ccc;*/ |
|||
width: 0; height: 20px; |
|||
} |
|||
|
|||
.tree ul.branch-1::before{ |
|||
border-left: 1px solid #ccc; |
|||
} |
|||
|
|||
.tree ul ul.branch-2::before{ |
|||
#wrapper span.label { |
|||
display: block; |
|||
font-size: 12px; |
|||
/*min-width: 150px;*/ |
|||
width: 170px; |
|||
overflow-x: hidden; |
|||
padding: 4px 8px; |
|||
line-height: 14px; |
|||
text-align: center; |
|||
border: 2px solid #ccc; |
|||
/*border: 1px solid #2e6ba7;*/ |
|||
border-radius: 6px; |
|||
position: absolute; |
|||
left: 0; |
|||
top: 50%; |
|||
margin-top: -10px; |
|||
} |
|||
|
|||
.tree li a { |
|||
min-width: 100px; |
|||
border: 1px solid #ccc; |
|||
padding: 5px 10px; |
|||
text-decoration: none; |
|||
color: #666; |
|||
font-family: arial, verdana, tahoma; |
|||
font-size: 11px; |
|||
display: inline-block; |
|||
|
|||
border-radius: 5px; |
|||
-webkit-border-radius: 5px; |
|||
-moz-border-radius: 5px; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
} |
|||
|
|||
/*Time for some hover effects*/ |
|||
/*We will apply the hover effect the the lineage of the element also*/ |
|||
.tree li a:hover, .tree li a:hover+ul li a { |
|||
background: #c8e4f8; color: #000; border: 1px solid #94a0b4; |
|||
} |
|||
/*Connector styles on hover*/ |
|||
.tree li a:hover+ul li::after, |
|||
.tree li a:hover+ul li::before, |
|||
.tree li a:hover+ul::before, |
|||
.tree li a:hover+ul ul::before{ |
|||
border-color: #94a0b4; |
|||
} |
|||
|
|||
/*Thats all. I hope you enjoyed it. |
|||
Thanks :)*/ |
|||
@ -0,0 +1,103 @@ |
|||
/*Now the CSS*/ |
|||
* {margin: 0; padding: 0;} |
|||
|
|||
.tree ul { |
|||
padding-top: 20px; position: relative; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
} |
|||
|
|||
.tree li { |
|||
float: left; text-align: center; |
|||
list-style-type: none; |
|||
position: relative; |
|||
padding: 20px 5px 0 5px; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
} |
|||
|
|||
/*We will use ::before and ::after to draw the connectors*/ |
|||
|
|||
.tree li::before, .tree li::after{ |
|||
content: ''; |
|||
position: absolute; top: 0; right: 50%; |
|||
border-top: 1px solid #ccc; |
|||
width: 50%; height: 20px; |
|||
} |
|||
.tree li::after{ |
|||
right: auto; left: 50%; |
|||
border-left: 1px solid #ccc; |
|||
} |
|||
|
|||
/*We need to remove left-right connectors from elements without |
|||
any siblings*/ |
|||
.tree li:only-child::after, .tree li:only-child::before { |
|||
display: none; |
|||
} |
|||
|
|||
/*Remove space from the top of single children*/ |
|||
.tree li:only-child{ padding-top: 0;} |
|||
|
|||
/*Remove left connector from first child and |
|||
right connector from last child*/ |
|||
.tree li:first-child::before, .tree li:last-child::after{ |
|||
border: 0 none; |
|||
} |
|||
/*Adding back the vertical connector to the last nodes*/ |
|||
.tree li:last-child::before{ |
|||
border-right: 1px solid #ccc; |
|||
border-radius: 0 5px 0 0; |
|||
-webkit-border-radius: 0 5px 0 0; |
|||
-moz-border-radius: 0 5px 0 0; |
|||
} |
|||
.tree li:first-child::after{ |
|||
border-radius: 5px 0 0 0; |
|||
-webkit-border-radius: 5px 0 0 0; |
|||
-moz-border-radius: 5px 0 0 0; |
|||
} |
|||
|
|||
/*Time to add downward connectors from parents*/ |
|||
.tree ul ul::before{ |
|||
content: ''; |
|||
position: absolute; top: 0; left: 50%; |
|||
border-left: 1px solid #ccc; |
|||
width: 0; height: 20px; |
|||
} |
|||
|
|||
.tree li a{ |
|||
border: 1px solid #ccc; |
|||
padding: 4px 6px; |
|||
text-decoration: none; |
|||
color: #666; |
|||
font-family: arial, verdana, tahoma; |
|||
font-size: 11px; |
|||
display: inline-block; |
|||
|
|||
border-radius: 5px; |
|||
-webkit-border-radius: 5px; |
|||
-moz-border-radius: 5px; |
|||
|
|||
transition: all 0.2s; |
|||
-webkit-transition: all 0.2s; |
|||
-moz-transition: all 0.2s; |
|||
} |
|||
|
|||
/*Time for some hover effects*/ |
|||
/*We will apply the hover effect the the lineage of the element also*/ |
|||
.tree li a:hover, .tree li a:hover+ul li a { |
|||
background: #c8e4f8; color: #000; border: 1px solid #94a0b4; |
|||
} |
|||
/*Connector styles on hover*/ |
|||
.tree li a:hover+ul li::after, |
|||
.tree li a:hover+ul li::before, |
|||
.tree li a:hover+ul::before, |
|||
.tree li a:hover+ul ul::before{ |
|||
border-color: #94a0b4; |
|||
} |
|||
|
|||
/*Thats all. I hope you enjoyed it. |
|||
Thanks :)*/ |
|||
@ -0,0 +1,63 @@ |
|||
@extends('layouts.app') |
|||
|
|||
@section('content') |
|||
</div> |
|||
<div class="container-fluid"> |
|||
<h1 class="page-header"> |
|||
<div class="pull-right"> |
|||
{{ link_to_route('users.show', 'Lihat Profil '.$user->name, [$user->id], ['class' => 'btn btn-default']) }} |
|||
</div> |
|||
{{ $user->name }} <small>Pohon Keluarga</small> |
|||
</h1> |
|||
|
|||
<div class="tree"> |
|||
<ul> |
|||
<li> |
|||
{{ link_to_route('users.tree', $user->name, [$user->id], ['title' => $user->name.' ('.$user->gender.')']) }} |
|||
@if ($user->childs->count()) |
|||
<ul> |
|||
@foreach($user->childs as $child) |
|||
<li> |
|||
{{ link_to_route('users.tree', $child->id, [$child->id], ['title' => $child->name.' ('.$child->gender.')']) }} |
|||
@if ($child->childs->count()) |
|||
<ul> |
|||
@foreach($child->childs as $grand) |
|||
<li> |
|||
{{ link_to_route('users.tree', $grand->id, [$grand->id], ['title' => $grand->name.' ('.$grand->gender.')']) }} |
|||
@if ($grand->childs->count()) |
|||
<ul> |
|||
@foreach($grand->childs as $gg) |
|||
<li> |
|||
{{ link_to_route('users.tree', $gg->id, [$gg->id], ['title' => $gg->name.' ('.$gg->gender.')']) }} |
|||
<?php /* |
|||
@if ($gg->childs->count()) |
|||
<ul> |
|||
@foreach($gg->childs as $ggc) |
|||
<li> |
|||
{{ link_to_route('users.tree', $ggc->id, [$ggc->id], ['title' => $ggc->name.' ('.$ggc->gender.')']) }} |
|||
</li> |
|||
@endforeach |
|||
</ul> |
|||
@endif |
|||
*/ ?>
|
|||
</li> |
|||
@endforeach |
|||
</ul> |
|||
@endif |
|||
</li> |
|||
@endforeach |
|||
</ul> |
|||
@endif |
|||
</li> |
|||
@endforeach |
|||
</ul> |
|||
@endif |
|||
</li> |
|||
</ul> |
|||
<div class="clearfix"></div> |
|||
</div> |
|||
@endsection |
|||
|
|||
@section ('ext_css') |
|||
<link rel="stylesheet" href="{{ asset('css/tree2.css') }}"> |
|||
@endsection |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue