Merge pull request #1269 from madd15/patch-4
Change Models tables and category text search
This commit is contained in:
@@ -368,40 +368,44 @@ class ModelsController extends AdminController
|
||||
{
|
||||
$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>';
|
||||
if (Input::has('search')) {
|
||||
$models = $models->TextSearch(Input::get('search'));
|
||||
}
|
||||
|
||||
$allowed_columns = ['name'];
|
||||
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
|
||||
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
|
||||
|
||||
$models = $models->orderBy($sort, $order);
|
||||
|
||||
$modelCount = $models->count();
|
||||
$models = $models->skip(Input::get('offset'))->take(Input::get('limit'))->get();
|
||||
|
||||
$rows = array();
|
||||
|
||||
foreach ($models as $model) {
|
||||
if ($model->deleted_at == '') {
|
||||
$actions = '<a href="'.route('update/model', $model->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', $model->id).'" data-content="'.Lang::get('admin/models/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($model->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>';
|
||||
$actions = '<a href="'.route('restore/model', $model->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>';
|
||||
}
|
||||
});
|
||||
|
||||
return Datatable::collection($models)
|
||||
->addColumn('manufacturer', function($models) {
|
||||
return $models->manufacturer->name;
|
||||
})
|
||||
->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();
|
||||
$rows[] = array(
|
||||
'manufacturer' => $model->manufacturer->name,
|
||||
'name' => link_to('/hardware/models/'.$model->id.'/view', $model->name),
|
||||
'modelnumber' => $model->modelno,
|
||||
'numassets' => $model->assets->count(),
|
||||
'depreciation' => (($model->depreciation)&&($model->depreciation->id > 0)) ? $model->depreciation->name.' ('.$model->depreciation->months.')' : Lang::get('general.no_depreciation'),
|
||||
'category' => ($model->category) ? $model->category->name : '',
|
||||
'eol' => ($model->eol) ? $model->eol.' '.Lang::get('general.months') : '',
|
||||
'actions' => $actions
|
||||
);
|
||||
}
|
||||
|
||||
$data = array('total' => $modelCount, 'rows' => $rows);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
@@ -410,33 +414,29 @@ class ModelsController extends AdminController
|
||||
$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>';
|
||||
}
|
||||
});
|
||||
$modelassetsCount = $modelassets->Count();
|
||||
|
||||
return Datatable::collection($modelassets)
|
||||
->addColumn('name', function ($modelassets) {
|
||||
return link_to('/hardware/'.$modelassets->id.'/view', $modelassets->showAssetName());
|
||||
// return $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());
|
||||
$rows = array();
|
||||
|
||||
foreach ($modelassets as $asset) {
|
||||
if (($asset->assigned_to !='') && ($asset->assigned_to > 0)) {
|
||||
$actions = '<a href="'.route('checkin/hardware', $asset->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
|
||||
} else {
|
||||
$actions = '<a href="'.route('checkout/hardware', $asset->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
|
||||
}
|
||||
})
|
||||
->addColumn($actions)
|
||||
->searchColumns('name','asset_tag','serial','assigned_to','actions')
|
||||
->orderColumns('name','asset_tag','serial','assigned_to','actions')
|
||||
->make();
|
||||
|
||||
$rows[] = array(
|
||||
'name' => link_to('/hardware/'.$asset->id.'/view', $asset->showAssetName()),
|
||||
'asset_tag' => link_to('hardware/'.$asset->id.'/view', $asset->asset_tag),
|
||||
'serial' => $asset->serial,
|
||||
'assigned_to' => ($asset->assigned_to) ? link_to('/admin/users/'.$asset->assigned_to.'/view', $asset->assigneduser->fullName()) : '',
|
||||
'actions' => $actions
|
||||
);
|
||||
}
|
||||
|
||||
$data = array('total' => $modelassetsCount, 'rows' => $rows);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -74,5 +74,23 @@ class Category extends Elegant
|
||||
|
||||
return $query->where( 'require_acceptance', '=', true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Query builder scope to search on text
|
||||
*
|
||||
* @param Illuminate\Database\Query\Builder $query Query builder instance
|
||||
* @param text $search Search term
|
||||
*
|
||||
* @return Illuminate\Database\Query\Builder Modified query builder
|
||||
*/
|
||||
public function scopeTextSearch($query, $search)
|
||||
{
|
||||
|
||||
return $query->where(function($query) use ($search)
|
||||
{
|
||||
$query->where('name', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('category_type', 'LIKE', '%'.$search.'%');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -75,5 +75,23 @@ class Model extends Elegant
|
||||
|
||||
return $query->whereIn( 'category_id', $categoryIdListing );
|
||||
}
|
||||
|
||||
/**
|
||||
* Query builder scope to search on text
|
||||
*
|
||||
* @param Illuminate\Database\Query\Builder $query Query builder instance
|
||||
* @param text $search Search term
|
||||
*
|
||||
* @return Illuminate\Database\Query\Builder Modified query builder
|
||||
*/
|
||||
public function scopeTextSearch($query, $search)
|
||||
{
|
||||
|
||||
return $query->where(function($query) use ($search)
|
||||
{
|
||||
$query->where('name', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('modelno', 'LIKE', '%'.$search.'%');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,38 +22,56 @@
|
||||
</div>
|
||||
|
||||
<div class="row form-wrapper">
|
||||
{{ Datatable::table()
|
||||
->addColumn(Lang::get('general.manufacturer'),
|
||||
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(
|
||||
'language' => array(
|
||||
'search' => Lang::get('general.search'),
|
||||
'lengthMenu' => Lang::get('general.page_menu'),
|
||||
'loadingRecords' => Lang::get('general.loading'),
|
||||
'zeroRecords' => Lang::get('general.no_results'),
|
||||
'info' => Lang::get('general.pagination_info'),
|
||||
'processing' => Lang::get('general.processing'),
|
||||
'paginate'=> array(
|
||||
'first'=>Lang::get('general.first'),
|
||||
'previous'=>Lang::get('general.previous'),
|
||||
'next'=>Lang::get('general.next'),
|
||||
'last'=>Lang::get('general.last'),
|
||||
),
|
||||
),
|
||||
'sAjaxSource'=> route('api.models.list', Input::get('status')),
|
||||
'dom' =>'CT<"clear">lfrtip',
|
||||
'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')),
|
||||
)
|
||||
)
|
||||
->render() }}
|
||||
|
||||
<table name="models" id="table" data-url="{{route('api.models.list', Input::get('status'))}}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sortable="true" data-field="manufacturer">{{Lang::get('general.manufacturer')}}</th>
|
||||
<th data-sortable="true" data-field="name">{{Lang::get('admin/models/table.title')}}</th>
|
||||
<th data-sortable="true" data-field="modelnumber">{{Lang::get('admin/models/table.modelnumber')}}</th>
|
||||
<th data-sortable="true" data-field="numassets">{{Lang::get('admin/models/table.numassets')}}</th>
|
||||
<th data-sortable="true" data-field="depreciation">{{Lang::get('general.depreciation')}}</th>
|
||||
<th data-sortable="true" data-field="category">{{Lang::get('general.category')}}</th>
|
||||
<th data-sortable="true" data-field="eol">{{Lang::get('general.eol')}}</th>
|
||||
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ Lang::get('table.actions') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
@section('moar_scripts')
|
||||
<script src="{{ asset('assets/js/bootstrap-table.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/mobile/bootstrap-table-mobile.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/export/bootstrap-table-export.js?v=1') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/cookie/bootstrap-table-cookie.js?v=1') }}"></script>
|
||||
<script src="//rawgit.com/kayalshri/tableExport.jquery.plugin/master/tableExport.js?v=1') }}"></script>
|
||||
<script src="//rawgit.com/kayalshri/tableExport.jquery.plugin/master/jquery.base64.js?v=1') }}"></script>
|
||||
<script type="text/javascript">
|
||||
$('#table').bootstrapTable({
|
||||
classes: 'table table-hover table-no-bordered',
|
||||
undefinedText: '',
|
||||
iconsPrefix: 'fa',
|
||||
showRefresh: true,
|
||||
search: true,
|
||||
pageSize: {{{ Setting::getSettings()->per_page }}},
|
||||
pagination: true,
|
||||
sidePagination: 'server',
|
||||
sortable: true,
|
||||
mobileResponsive: true,
|
||||
showExport: true,
|
||||
showColumns: true,
|
||||
maintainSelected: true,
|
||||
paginationFirstText: "@lang('general.first')",
|
||||
paginationLastText: "@lang('general.last')",
|
||||
paginationPreText: "@lang('general.previous')",
|
||||
paginationNextText: "@lang('general.next')",
|
||||
pageList: ['10','25','50','100','150','200'],
|
||||
icons: {
|
||||
paginationSwitchDown: 'fa-caret-square-o-down',
|
||||
paginationSwitchUp: 'fa-caret-square-o-up',
|
||||
columns: 'fa-columns',
|
||||
refresh: 'fa-refresh'
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@stop
|
||||
@stop
|
||||
|
||||
@@ -52,25 +52,18 @@
|
||||
|
||||
<!-- checked out models table -->
|
||||
@if (count($model->assets) > 0)
|
||||
{{ 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),
|
||||
'dom' =>'CT<"clear">lfrtip',
|
||||
'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')),
|
||||
)
|
||||
)
|
||||
->render() }}
|
||||
<table name="modelassets" id="table" data-url="{{route('api.models.view', $model->id)}}">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th data-sortable="true" data-field="name">{{Lang::get('general.name')}}</th>
|
||||
<th data-sortable="true" data-field="asset_tag">{{Lang::get('general.asset_tag')}}</th>
|
||||
<th data-sortable="true" data-field="serial">{{Lang::get('admin/hardware/table.serial')}}</th>
|
||||
<th data-sortable="true" data-field="assigned_to">{{Lang::get('general.user')}}</th>
|
||||
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ Lang::get('table.actions') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
@else
|
||||
<div class="col-md-9">
|
||||
<div class="alert alert-info alert-block">
|
||||
@@ -80,6 +73,7 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user