Merge pull request #689 from madd15/feat/more-tables

Convert to Datatables - Models, Categories and Accessories
This commit is contained in:
snipe
2015-03-24 18:45:34 -07:00
13 changed files with 442 additions and 269 deletions
@@ -389,5 +389,22 @@ class AccessoriesController extends AdminController
->make();
}
public function getDataView($accessoryID)
{
$accessory = Accessory::find($accessoryID);
$accessory_users = $accessory->users;
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions',function($accessory_users){
return '<a href="'.route('checkin/accessory', $accessory_users->pivot->id).'" class="btn-flat info">Checkin</a>';
});
return Datatable::collection($accessory_users)
->addColumn('name',function($accessory_users)
{
return link_to('/admin/users/'.$accessory_users->id.'/view', $accessory_users->fullName());
})
->addColumn($actions)
->make();
}
}
@@ -1030,13 +1030,4 @@ class AssetsController extends AdminController
->make();
}
public function checkModel($id = null) {
if(Input::get('id')) {
$id = e(Input::get('id'));
}
$model = DB::table('models')->select('id','show_mac_address')->where('id','=',$id)->whereNull('deleted_at')->first();
return $model->show_mac_address;
}
}
+60 -4
View File
@@ -11,6 +11,7 @@ use Sentry;
use Str;
use Validator;
use View;
use Datatable;
class CategoriesController extends AdminController
{
@@ -22,11 +23,8 @@ class CategoriesController extends AdminController
public function getIndex()
{
// Grab all the categories
$categories = Category::orderBy('created_at', 'DESC')->get();
// Show the page
return View::make('backend/categories/index', compact('categories'));
return View::make('backend/categories/index');
}
@@ -215,7 +213,65 @@ class CategoriesController extends AdminController
}
public function getDatatable()
{
// Grab all the categories
$categories = Category::orderBy('created_at', 'DESC')->get();
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function($categories) {
return '<a href="'.route('update/category', $categories->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/category', $categories->id).'" data-content="'.Lang::get('admin/categories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($categories->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
});
return Datatable::collection($categories)
->showColumns('name')
->addColumn('category_type', function($categories) {
return ucwords($categories->category_type);
})
->addColumn('count', function($categories) {
return ($categories->category_type=='asset') ? link_to('/admin/settings/categories/'.$categories->id.'/view', $categories->assetscount()) : $categories->accessoriescount();
})
->addColumn('acceptance', function($categories) {
return ($categories->require_acceptance=='1') ? '<i class="fa fa-check" style="margin-right:50%;margin-left:50%;"></i>' : '';
})
->addColumn('eula', function($categories) {
return ($categories->getEula()) ? '<i class="fa fa-check" style="margin-right:50%;margin-left:50%;"></i></a>' : '';
})
->addColumn($actions)
->searchColumns('name','category_type','count','acceptance','eula','actions')
->orderColumns('name','category_type','count','acceptance','eula','actions')
->make();
}
public function getDataView($categoryID) {
$category = Category::find($categoryID);
$categoryassets = $category->assets;
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($categoryassets)
{
if (($categoryassets->assigned_to !='') && ($categoryassets->assigned_to > 0)) {
return '<a href="'.route('checkin/hardware', $categoryassets->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
} else {
return '<a href="'.route('checkout/hardware', $categoryassets->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
}
});
return Datatable::collection($categoryassets)
->addColumn('name', function ($categoryassets) {
return link_to('/hardware/'.$categoryassets->id.'/view', $categoryassets->name);
})
->addColumn('asset_tag', function ($categoryassets) {
return link_to('/hardware/'.$categoryassets->id.'/view', $categoryassets->asset_tag);
})
->addColumn('assigned_to', function ($categoryassets) {
if ($categoryassets->assigned_to) {
return link_to('/admin/users/'.$categoryassets->assigned_to.'/view', $categoryassets->assigneduser->fullName());
}
})
->addColumn($actions)
->searchColumns('name','asset_tag','assigned_to','actions')
->orderColumns('name','asset_tag','assigned_to','actions')
->make();
}
}
+76 -9
View File
@@ -14,6 +14,7 @@ use Manufacturer;
use Str;
use Validator;
use View;
use Datatable;
class ModelsController extends AdminController
{
@@ -24,16 +25,8 @@ class ModelsController extends AdminController
*/
public function getIndex()
{
// Grab all the models
$models = Model::orderBy('created_at', 'DESC');
if (Input::get('Deleted')) {
$models->withTrashed()->Deleted();
}
$models = $models->with('category','assets','depreciation')->get();
// Show the page
return View::make('backend/models/index', compact('models'));
return View::make('backend/models/index');
}
/**
@@ -315,6 +308,80 @@ class ModelsController extends AdminController
return $view;
}
public function getDatatable($status = null)
{
$models = Model::orderBy('created_at', 'DESC')->with('category','assets','depreciation');
($status != 'Deleted') ?: $models->withTrashed()->Deleted();;
$models = $models->get();
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function($models) {
if($models->deleted_at=='') {
return '<a href="'.route('update/model', $models->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/model', $models->id).'" data-content="'.Lang::get('admin/models/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($models->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
} else {
return '<a href="'.route('restore/model', $models->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>';
}
});
return Datatable::collection($models)
->addColumn('name', function ($models) {
return link_to('/hardware/models/'.$models->id.'/view', $models->name);
})
->showColumns('modelno')
->addColumn('asset_count', function($models) {
return $models->assets->count();
})
->addColumn('depreciation', function($models) {
return (($models->depreciation)&&($models->depreciation->id > 0)) ? $models->depreciation->name.' ('.$models->depreciation->months.')' : Lang::get('general.no_depreciation');
})
->addColumn('category', function($models) {
return ($models->category) ? $models->category->name : '';
})
->addColumn('eol', function($models) {
return ($models->eol) ? $models->eol.' '.Lang::get('general.months') : '';
})
->addColumn($actions)
->searchColumns('name','modelno','asset_count','depreciation','category','eol','actions')
->orderColumns('name','modelno','asset_count','depreciation','category','eol','actions')
->make();
}
public function checkModel($modelId) {
$model = Model::find($modelId);
return $model->show_mac_address;
}
public function getDataView($modelID)
{
$model = Model::withTrashed()->find($modelID);
$modelassets = $model->assets;
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($modelassets)
{
if (($modelassets->assigned_to !='') && ($modelassets->assigned_to > 0)) {
return '<a href="'.route('checkin/hardware', $modelassets->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
} else {
return '<a href="'.route('checkout/hardware', $modelassets->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
}
});
return Datatable::collection($modelassets)
->addColumn('name', function ($modelassets) {
return link_to('/hardware/'.$modelassets->id.'/view', $modelassets->name);
})
->addColumn('asset_tag', function ($modelassets) {
return link_to('/hardware/'.$modelassets->id.'/view', $modelassets->asset_tag);
})
->showColumns('serial')
->addColumn('assigned_to', function ($modelassets) {
if ($modelassets->assigned_to) {
return link_to('/admin/users/'.$modelassets->assigned_to.'/view', $modelassets->assigneduser->fullName());
}
})
->addColumn($actions)
->searchColumns('name','asset_tag','serial','assigned_to','actions')
->orderColumns('name','asset_tag','serial','assigned_to','actions')
->make();
}
}
+14 -1
View File
@@ -14,6 +14,7 @@ Route::group(array('prefix' => 'api', 'namespace' => 'Controllers\Admin', 'befor
Route::group(array('prefix'=>'accessories'), function () {
Route::resource('/', 'AccessoriesController');
Route::get('list', array('as'=>'api.accessories.list', 'uses'=>'AccessoriesController@getDatatable'));
Route::get('{accessoryID}/view', array('as'=>'api.accessories.view', 'uses'=>'AccessoriesController@getDataView'));
});
/*---Users API---*/
Route::group(array('prefix'=>'users'), function() {
@@ -25,6 +26,19 @@ Route::group(array('prefix' => 'api', 'namespace' => 'Controllers\Admin', 'befor
Route::resource('/', 'LicensesController');
Route::get('list', array('as'=>'api.licenses.list', 'uses'=>'LicensesController@getDatatable'));
});
/*---Models API---*/
Route::group(array('prefix'=>'models'), function() {
Route::resource('/', 'ModelsController');
Route::get('list/{status?}', array('as'=>'api.models.list', 'uses'=>'ModelsController@getDatatable'));
Route::get('{modelId}/check', array('as' => 'api.models.check', 'uses' => 'ModelsController@checkModel'));
Route::get('{modelID}/view', array('as'=>'api.models.view', 'uses'=>'ModelsController@getDataView'));
});
/*--- Categories API---*/
Route::group(array('prefix'=>'categories'), function() {
Route::resource('/', 'CategoriesController');
Route::get('list', array('as'=>'api.categories.list', 'uses'=>'CategoriesController@getDatatable'));
Route::get('{categoryID}/view', array('as'=>'api.categories.view', 'uses'=>'CategoriesController@getDataView'));
});
});
/*
@@ -74,7 +88,6 @@ Route::group(array('prefix' => 'hardware', 'namespace' => 'Controllers\Admin', '
Route::get('{assetId}/deletefile/{fileId}', array('as' => 'delete/assetfile', 'uses' => 'AssetsController@getDeleteFile'));
Route::get('{assetId}/showfile/{fileId}', array('as' => 'show/assetfile', 'uses' => 'AssetsController@displayFile'));
Route::post('{assetId}/edit', 'AssetsController@postEdit');
Route::get('check/model', array('as' => 'check.model', 'uses' => 'AssetsController@checkModel'));
Route::post('bulkedit',
array('as' => 'hardware/bulkedit',
+30 -17
View File
@@ -24,9 +24,9 @@
Lang::get('admin/accessories/general.total'),
Lang::get('admin/accessories/general.remaining'),
Lang::get('table.actions'))
->setUrl(route('api.accessories.list')) // this is the route where data will be retrieved
->setOptions(
array(
'sAjaxSource'=>route('api.accessories.list'),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
@@ -35,36 +35,49 @@
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
array(
'sExtends'=>'copy',
'mColumns'=> array(0,1,2),
),
'print',
'sExtends'=>'copy',
'sButtonText'=>'Copy',
'mColumns'=>array(0,1,2),
'bFooter'=>false,
),
array(
'sExtends'=>'print',
'sButtonText'=>'Print',
'mColumns'=>array(0,1,2),
'bShowAll'=>true,
'bFooter'=>true,
),
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
array(
'sExtends'=>'csv',
'mColumns'=> array(0,1,2),
),
'sExtends'=>'csv',
'sButtonText'=>'csv',
'mColumns'=>array(0,1,2),
'bFooter'=>false,
),
array(
'sExtends'=>'xls',
'mColumns'=> array(0,1,2),
),
'sExtends'=>'xls',
'sButtonText'=>'XLS',
'mColumns'=>array(0,1,2),
'bFooter'=>false,
),
array(
'sExtends'=>'pdf',
'mColumns'=> array(0,1,2),
),
),
'sExtends'=>'pdf',
'sButtonText'=>'PDF',
'mColumns'=>array(0,1,2),
'bFooter'=>false,
)
)
),
)
),
'columnDefs'=> array(
array('bSortable'=>false,'targets'=>array(3)),
array('width'=>'20%','targets'=>array(3)),
),
'order'=>array(array(0,'asc')),
'bProcessing'=>true,
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
+46 -29
View File
@@ -31,35 +31,52 @@
<!-- checked out accessories table -->
@if ($accessory->users->count() > 0)
<table id="example">
<thead>
<tr role="row">
<th class="col-md-11">@lang('general.user')</th>
<th class="col-md-1">@lang('table.actions')</th>
</tr>
</thead>
<tbody>
@foreach ($accessory->users as $accessory_users)
<tr>
<td>
<a href="{{ route('view/user', $accessory_users->id) }}">
{{{ $accessory_users->fullName() }}}
</a>
</td>
<td>
<a href="{{ route('checkin/accessory', $accessory_users->pivot->id) }}" class="btn-flat info">Checkin</a>
</td>
</tr>
@endforeach
</tbody>
</table>
{{ Datatable::table()
->addColumn(Lang::get('general.user'),
Lang::get('table.actions'))
->setOptions(
array(
'sAjaxSource'=>route('api.accessories.view', $accessory->id),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
'dom' =>'T<"clear">lfrtip',
'tableTools' => array(
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
array(
'sExtends'=>'copy',
),
'print',
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
array(
'sExtends'=>'csv',
),
array(
'sExtends'=>'xls',
),
array(
'sExtends'=>'pdf',
),
),
),
)
),
'columnDefs'=> array(
array('bSortable'=>false,'targets'=>array(1)),
array('width'=>'auto','targets'=>array(1)),
),
'order'=>array(array(0,'asc')),
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
)
)
->render() }}
@else
<div class="col-md-9">
+50 -52
View File
@@ -17,59 +17,57 @@
</div>
<div class="user-profile">
<div class="row profile">
<div class="col-md-9 bio">
<div class="table-responsive">
<table id="example">
<thead>
<tr role="row">
<th class="col-md-5" bSortable="true">@lang('admin/categories/table.title')</th>
<th class="col-md-2" bSortable="true">@lang('general.type')</th>
<th class="col-md-2" bSortable="true">@lang('general.assets')</th>
<th class="col-md-3" bSortable="true">@lang('admin/categories/table.require_acceptance')</th>
<th class="col-md-2" bSortable="true">@lang('admin/categories/table.eula_text')</th>
<th class="col-md-2 actions" bSortable="true">@lang('table.actions')</th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr>
<td>{{{ $category->name }}}</td>
<td>{{{ ucwords($category->category_type) }}}</td>
<td>
@if ($category->category_type=='asset')
<a href="{{ route('view/category',$category->id) }}">{{ $category->assetscount() }}</a>
@elseif ($category->category_type=='accessory')
{{ $category->accessoriescount() }}
@endif
</td>
<td>{{ ($category->require_acceptance=='1') ? '<i class="fa fa-check"></i>' : ''}}</td>
<td>{{ ($category->getEula()) ? '<i class="fa fa-check"></i>' : ''}}</td>
<td>
<a href="{{ route('update/category', $category->id) }}" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a>
<a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="{{ route('delete/category', $category->id) }}" data-content="@lang('admin/categories/message.delete.confirm')"
data-title="@lang('general.delete')
{{{ htmlspecialchars($category->name) }}}?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="row profile">
<div class="col-md-9 bio">
{{ Datatable::table()
->addColumn(Lang::get('admin/categories/table.title'),
Lang::get('general.type'),
Lang::get('general.assets'),
Lang::get('admin/categories/table.require_acceptance'),
Lang::get('admin/categories/table.eula_text'),
Lang::get('table.actions'))
->setOptions(
array(
'sAjaxSource'=> route('api.categories.list'),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
'dom' =>'CT<"clear">lfrtip',
'tableTools' => array(
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
'copy',
'print',
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
'csv',
'xls',
'pdf'
)
)
)
),
'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(5),'activate'=>'mouseover'),
'columnDefs'=> array(array('bSortable'=>false,'targets'=>array(5))),
'order'=>array(array(0,'asc')),
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
)
)
->render() }}
</div>
</div>
</div>
<!-- side address column -->
<div class="col-md-3 col-xs-12 address pull-right">
<br /><br />
<h6>@lang('admin/categories/general.about_asset_categories')</h6>
<p>@lang('admin/categories/general.about_categories') </p>
</div>
</div>
<!-- side address column -->
<div class="col-md-3 col-xs-12 address pull-right">
<br /><br />
<h6>@lang('admin/categories/general.about_asset_categories')</h6>
<p>@lang('admin/categories/general.about_categories') </p>
</div>
</div>
</div>
@stop
+48 -37
View File
@@ -39,43 +39,54 @@
<!-- checked out categories table -->
@if (count($category->assets) > 0)
<table id="example">
<thead>
<tr role="row">
<th class="col-md-3">@lang('general.name')</th>
<th class="col-md-3">@lang('general.asset_tag')</th>
<th class="col-md-3">@lang('general.user')</th>
<th class="col-md-2">@lang('table.actions')</th>
</tr>
</thead>
<tbody>
@foreach ($category->assets as $modelassets)
<tr>
<td><a href="{{ route('view/hardware', $modelassets->id) }}">{{{ $modelassets->name }}}</a></td>
<td><a href="{{ route('view/hardware', $modelassets->id) }}">{{{ $modelassets->asset_tag }}}</a></td>
<td>
@if ($modelassets->assigneduser)
<a href="{{ route('view/user', $modelassets->assigned_to) }}">
{{{ $modelassets->assigneduser->fullName() }}}
</a>
@endif
</td>
<td>
@if ($modelassets->assigned_to != 0)
<a href="{{ route('checkin/hardware', $modelassets->id) }}" class="btn-flat info">Checkin</a>
@else
<a href="{{ route('checkout/hardware', $modelassets->id) }}" class="btn-flat success">Checkout</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
{{ Datatable::table()
->addColumn(Lang::get('general.name'),
Lang::get('general.asset_tag'),
Lang::get('general.user'),
Lang::get('table.actions'))
->setOptions(
array(
'sAjaxSource'=>route('api.categories.view', $category->id),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
'dom' =>'T<"clear">lfrtip',
'tableTools' => array(
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
array(
'sExtends'=>'copy',
),
'print',
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
array(
'sExtends'=>'csv',
),
array(
'sExtends'=>'xls',
),
array(
'sExtends'=>'pdf',
),
),
),
)
),
'columnDefs'=> array(
array('bSortable'=>false,'targets'=>array(3)),
array('width'=>'auto','targets'=>array(3)),
),
'order'=>array(array(0,'asc')),
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
)
)
->render() }}
@else
<div class="col-md-9">
<div class="alert alert-info alert-block">
+5 -3
View File
@@ -220,12 +220,14 @@
var $eventSelect = $(".model");
$eventSelect.on("change", function () { mac_add($eventSelect.val()); });
$(function() {
mac_add($(".model option:selected").val());
var mac = $(".model option:selected").val();
if(mac!=''){
mac_add(mac);
}
});
function mac_add(id) {
$.ajax({
url: '{{ route('check.model') }}',
data: 'id=' + id,
url: "{{Config::get('app.url')}}/api/models/"+id+"/check",
success: function(data) {
if(data == true){
$("#mac_address").css("display", "block");
+2 -2
View File
@@ -24,9 +24,9 @@
Lang::get('admin/licenses/form.remaining_seats'),
Lang::get('admin/licenses/table.purchase_date'),
Lang::get('table.actions'))
->setUrl(route('api.licenses.list')) // this is the route where data will be retrieved
->setOptions(
array(
'sAjaxSource'=>route('api.licenses.list'),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
@@ -53,7 +53,7 @@
array('width'=>'20%','targets'=>array(5)),
),
'order'=>array(array(0,'asc')),
'bProcessing'=>true,
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
+44 -61
View File
@@ -12,73 +12,56 @@
<div class="row header">
<div class="col-md-12">
<a href="{{ route('create/model') }}" class="btn btn-success pull-right"><i class="fa fa-plus icon-white"></i> @lang('general.create')</a>
@if(Input::get('Deleted'))
<a href="{{ URL::to('hardware/models') }}" class="btn btn-default pull-right"><i class="fa fa-trash"></i> @lang('admin/models/general.view_models')</a>
@if(Input::get('status')=='Deleted')
<a href="{{ URL::to('hardware/models') }}" class="btn btn-default pull-right" style="margin-right:5px;"><i class="fa fa-trash"></i> @lang('admin/models/general.view_models')</a>
@else
<a href="{{ URL::to('hardware/models?Deleted=true') }}" class="btn btn-default pull-right"><i class="fa fa-trash"></i> @lang('admin/models/general.view_deleted')</a>
<a href="{{ URL::to('hardware/models?status=Deleted') }}" class="btn btn-default pull-right" style="margin-right:5px;"><i class="fa fa-trash"></i> @lang('admin/models/general.view_deleted')</a>
@endif
<h3>@lang('admin/models/table.title')</h3>
</div>
</div>
<div class="row form-wrapper">
<table id="example">
<thead>
<tr role="row">
<th class="col-md-3">@lang('admin/models/table.title')</th>
<th class="col-md-2">@lang('admin/models/table.modelnumber')</th>
<th class="col-md-1">@lang('admin/models/table.numassets')</th>
<th class="col-md-2">@lang('general.depreciation')</th>
<th class="col-md-2">@lang('general.category')</th>
<th class="col-md-2">@lang('general.eol')</th>
<th class="col-md-2 actions">@lang('table.actions')</th>
</tr>
</thead>
<tbody>
@foreach ($models as $model)
<tr>
<td><a href="{{ route('view/model', $model->id) }}">{{{ $model->name }}}</a></td>
<td>{{{ $model->modelno }}}</td>
<td><a href="{{ route('view/model', $model->id) }}">{{ ($model->assets->count()) }}</a></td>
<td>
@if (($model->depreciation) && ($model->depreciation->id > 0)) {{{ $model->depreciation->name }}}
({{{ $model->depreciation->months }}}
@lang('general.months')
)
@else
@lang('general.no_depreciation')
@endif
</td>
<td>
@if ($model->category) {{{ $model->category->name }}}
@endif
</td>
<td>
@if ($model->eol) {{{ $model->eol }}}
@lang('general.months')
@else
--
@endif
</td>
<td>
@if($model->deleted_at=="")
<a href="{{ route('update/model', $model->id) }}" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a>
<a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="{{ route('delete/model', $model->id) }}" data-content="@lang('admin/models/message.delete.confirm')"
data-title="@lang('general.delete')
{{ htmlspecialchars($model->name) }}?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>
@else
<a href="{{ route('restore/model', $model->id) }}" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
{{ Datatable::table()
->addColumn(Lang::get('admin/models/table.title'),
Lang::get('admin/models/table.modelnumber'),
Lang::get('admin/models/table.numassets'),
Lang::get('general.depreciation'),
Lang::get('general.category'),
Lang::get('general.eol'),
Lang::get('table.actions'))
->setOptions(
array(
'sAjaxSource'=> route('api.models.list', Input::get('status')),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
'dom' =>'CT<"clear">lfrtip',
'tableTools' => array(
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
'copy',
'print',
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
'csv',
'xls',
'pdf'
)
)
)
),
'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(6),'activate'=>'mouseover'),
'columnDefs'=> array(array('bSortable'=>false,'targets'=>array(6))),
'order'=>array(array(0,'asc')),
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
)
)
->render() }}
@stop
+50 -45
View File
@@ -52,51 +52,56 @@
<!-- checked out models table -->
@if (count($model->assets) > 0)
<table id="example">
<thead>
<tr role="row">
<th class="col-md-3">@lang('general.name')</th>
<th class="col-md-3">@lang('general.asset_tag')</th>
<th class="col-md-3">@lang('admin/hardware/table.serial')</th>
<th class="col-md-3">@lang('general.user')</th>
<th class="col-md-2">@lang('table.actions')</th>
</tr>
</thead>
<tbody>
@foreach ($model->assets as $modelassets)
<tr>
<td><a href="{{ route('view/hardware', $modelassets->id) }}">{{{ $modelassets->name }}}</a></td>
<td><a href="{{ route('view/hardware', $modelassets->id) }}">{{{ $modelassets->asset_tag }}}</a></td>
<td>
@if ($modelassets->serial)
{{{ $modelassets->serial }}}
@endif
</td>
<td>
@if ($modelassets->assigneduser)
<a href="{{ route('view/user', $modelassets->assigned_to) }}">
{{{ $modelassets->assigneduser->fullName() }}}
</a>
@endif
</td>
<td>
@if ($modelassets->assigned_to != 0)
<a href="{{ route('checkin/hardware', $modelassets->id) }}" class="btn-flat info">Checkin</a>
@else
<a href="{{ route('checkout/hardware', $modelassets->id) }}" class="btn-flat success">Checkout</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
{{ Datatable::table()
->addColumn(Lang::get('general.name'),
Lang::get('general.asset_tag'),
Lang::get('admin/hardware/table.serial'),
Lang::get('general.user'),
Lang::get('table.actions'))
->setOptions(
array(
'sAjaxSource'=>route('api.models.view', $model->id),
'deferRender'=> true,
'stateSave'=> true,
'stateDuration'=> -1,
'dom' =>'CT<"clear">lfrtip',
'tableTools' => array(
'sSwfPath'=> Config::get('app.url').'/assets/swf/copy_csv_xls_pdf.swf',
'aButtons'=>array(
array(
'sExtends'=>'copy',
),
'print',
array(
'sExtends'=>'collection',
'sButtonText'=>'Export',
'aButtons'=>array(
array(
'sExtends'=>'csv',
),
array(
'sExtends'=>'xls',
),
array(
'sExtends'=>'pdf',
),
),
),
)
),
'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(4),'activate'=>'mouseover'),
'columnDefs'=> array(
array('bSortable'=>false,'targets'=>array(4)),
array('width'=>'auto','targets'=>array(4)),
),
'order'=>array(array(0,'asc')),
'processing'=>true,
'oLanguage'=>array(
'sProcessing'=>'<i class="fa fa-spinner fa-spin"></i> Loading...',
),
)
)
->render() }}
@else
<div class="col-md-9">
<div class="alert alert-info alert-block">