Asset maintenances for #1266

This commit is contained in:
snipe
2015-10-21 22:19:02 -07:00
parent 28fcd2b8ab
commit 9d6608c8f1
7 changed files with 142 additions and 107 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
<?php
return array (
'app_version' => 'v2.0-280',
'hash_version' => 'v2.0-280-g7a306cd',
'app_version' => 'v2.0-282',
'hash_version' => 'v2.0-282-g7087e86',
);
@@ -45,71 +45,63 @@
* @author Vincent Sposato <vincent.sposato@gmail.com>
* @version v1.0
*/
public function getDatatable()
{
$assetMaintenances = AssetMaintenance::orderBy( 'created_at', 'DESC' )
->get();
public function getDatatable()
{
$maintenances = AssetMaintenance::with('asset','supplier')
->whereNull('deleted_at');
$actions = new \Chumper\Datatable\Columns\FunctionColumn( 'actions', function ( $assetMaintenances ) {
if (Input::has('search')) {
$maintenances = $maintenances->TextSearch(e(Input::get('search')));
}
return '<a href="' . route( 'update/asset_maintenance', $assetMaintenances->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/asset_maintenance', $assetMaintenances->id ) . '" data-content="'
. Lang::get( 'admin/asset_maintenances/message.delete.confirm' ) . '" data-title="'
. Lang::get( 'general.delete' ) . ' ' . htmlspecialchars( $assetMaintenances->title )
. '?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
} );
if (Input::has('offset')) {
$offset = e(Input::get('offset'));
} else {
$offset = 0;
}
return Datatable::collection( $assetMaintenances )
->addColumn( 'asset', function ( $assetMaintenances ) {
if (Input::has('limit')) {
$limit = e(Input::get('limit'));
} else {
$limit = 50;
}
return link_to( '/hardware/' . $assetMaintenances->asset_id . '/view',
mb_strimwidth( $assetMaintenances->asset->name, 0, 50, "..." ) );
} )
->addColumn( 'supplier', function ( $assetMaintenances ) {
$allowed_columns = ['id','title','asset_maintenance_time','asset_maintenance_type','cost','start_date','completion_date','notes'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
return link_to( '/admin/settings/suppliers/' . $assetMaintenances->supplier_id
. '/view',
mb_strimwidth( $assetMaintenances->supplier->name, 0, 50, "..." ) );
} )
->addColumn( 'asset_maintenance_type', function ( $assetMaintenances ) {
$maintenances->orderBy($sort, $order);
return $assetMaintenances->asset_maintenance_type;
} )
->addColumn( 'title', function ( $assetMaintenances ) {
$maintenancesCount = $maintenances->count();
$maintenances = $maintenances->skip($offset)->take($limit)->get();
return link_to( '/admin/asset_maintenances/' . $assetMaintenances->id . '/view',
mb_strimwidth( $assetMaintenances->title, 0, 50, "..." ) );
} )
->addColumn( 'start_date', function ( $assetMaintenances ) {
$rows = array();
return $assetMaintenances->start_date;
} )
->addColumn( 'completion_date', function ( $assetMaintenances ) {
foreach($maintenances as $maintenance) {
return $assetMaintenances->completion_date;
} )
->addColumn( 'asset_maintenance_time', function ( $assetMaintenances ) {
$actions = '<a href="'.route('update/location', $maintenance->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/statuslabel', $maintenance->id).'" data-content="'.Lang::get('admin/asset_maintenances/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
if (is_null( $assetMaintenances->asset_maintenance_time )) {
$assetMaintenances->asset_maintenance_time = Carbon::now()
->diffInDays( Carbon::parse( $assetMaintenances->start_date ) );
}
$rows[] = array(
'id' => $maintenance->id,
'asset_name' => $maintenance->asset->showAssetName(),
'title' => $maintenance->title,
'notes' => $maintenance->notes,
'supplier' => $maintenance->supplier->name,
'cost' => ($maintenance->cost) ? $maintenance->asset->assetloc->currency.''.$maintenance->cost : $maintenance->cost ,
'asset_maintenance_type' => e($maintenance->asset_maintenance_type),
'start_date' => $maintenance->start_date,
'time' => $maintenance->asset_maintenance_time,
'completion_date' => $maintenance->completion_date,
'actions' => $actions
);
}
return intval( $assetMaintenances->asset_maintenance_time );
} )
->addColumn( 'cost', function ( $assetMaintenances ) {
$data = array('total' => $maintenancesCount, 'rows' => $rows);
return sprintf( Lang::get( 'general.currency' ) . '%01.2f', $assetMaintenances->cost );
} )
->addColumn( $actions )
->searchColumns( 'asset', 'supplier', 'asset_maintenance_type', 'title', 'start_date',
'completion_date', 'asset_maintenance_time', 'cost', 'actions' )
->orderColumns( 'asset', 'supplier', 'asset_maintenance_type', 'title', 'start_date',
'completion_date', 'asset_maintenance_time', 'cost', 'actions' )
->make();
}
return $data;
}
/**
* getCreate
@@ -461,4 +453,4 @@
return View::make( 'backend/asset_maintenances/view')->with('assetMaintenance', $assetMaintenance);
}
}
}
@@ -1,14 +1,14 @@
<?php
return [
'asset_maintenance_type' => 'Asset Maintenance Type',
'asset_maintenance_type' => 'Maintenance Type',
'title' => 'Title',
'start_date' => 'Start Date',
'completion_date' => 'Completion Date',
'start_date' => 'Started',
'completion_date' => 'Completed',
'cost' => 'Cost',
'is_warranty' => 'Warranty Improvement',
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
'asset_maintenance_time' => 'Days',
'notes' => 'Notes',
'update' => 'Update Asset Maintenance',
'create' => 'Create Asset Maintenance'
'update' => 'Update',
'create' => 'Create'
];
@@ -2,8 +2,8 @@
return [
'title' => 'Asset Maintenance',
'asset_name' => 'Asset Name',
'supplier_name' => 'Supplier Name',
'asset_name' => 'Asset',
'supplier_name' => 'Supplier',
'is_warranty' => 'Warranty',
'dl_csv' => 'Download CSV'
];
];
+23 -1
View File
@@ -81,4 +81,26 @@
return $query->whereNotNull( 'deleted_at' );
}
}
/**
* 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('title', 'LIKE', '%'.$search.'%')
->orWhere('notes', 'LIKE', '%'.$search.'%')
->orWhere('asset_maintenance_type', 'LIKE', '%'.$search.'%')
->orWhere('cost', 'LIKE', '%'.$search.'%')
->orWhere('start_date', 'LIKE', '%'.$search.'%')
->orWhere('completion_date', 'LIKE', '%'.$search.'%');
});
}
}
@@ -20,49 +20,70 @@
</div>
<div class="row form-wrapper">
{{ Datatable::table()
->addColumn(Lang::get('admin/asset_maintenances/table.asset_name'),
Lang::get('admin/asset_maintenances/table.supplier_name'),
Lang::get('admin/asset_maintenances/form.asset_maintenance_type'),
Lang::get('admin/asset_maintenances/form.title'),
Lang::get('admin/asset_maintenances/form.start_date'),
Lang::get('admin/asset_maintenances/form.completion_date'),
Lang::get('admin/asset_maintenances/form.asset_maintenance_time'),
Lang::get('admin/asset_maintenances/form.cost'),
Lang::get('table.actions'))
->setOptions(
[
'language' => [
'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'=> [
'first'=>Lang::get('general.first'),
'previous'=>Lang::get('general.previous'),
'next'=>Lang::get('general.next'),
'last'=>Lang::get('general.last'),
],
],
'sAjaxSource'=>route('api.asset_maintenances.list'),
'dom' =>'CT<"clear">lfrtip',
'colVis'=> ['showAll'=>'Show All','restore'=>'Restore','activate'=>'mouseover'],
'columnDefs'=> [
['bSortable'=>false,'targets'=>[8]],
['width'=>'12%','targets'=>[8]],
],
'order'=>[[0,'asc']],
]
)
->render() }}
<table
name="maintenances"
id="table"
data-url="{{route('api.asset_maintenances.list')}}"
data-cookie="true"
data-click-to-select="true"
data-cookie-id-table="maintenancesTable">
<thead>
<tr>
<th data-sortable="true" data-field="id" data-visible="false">@lang('general.id')</th>
<th data-sortable="false" data-field="asset_name">@lang('admin/asset_maintenances/table.asset_name')</th>
<th data-sortable="false" data-field="supplier">@lang('admin/asset_maintenances/table.supplier_name')</th>
<th data-searchable="true" data-sortable="true" data-field="asset_maintenance_type">@lang('admin/asset_maintenances/form.asset_maintenance_type')</th>
<th data-searchable="true" data-sortable="true" data-field="title">@lang('admin/asset_maintenances/form.title')</th>
<th data-searchable="true" data-sortable="false" data-field="start_date">@lang('admin/asset_maintenances/form.start_date')</th>
<th data-searchable="true" data-sortable="true" data-field="completion_date">@lang('admin/asset_maintenances/form.completion_date')</th>
<th data-searchable="true" data-sortable="true" data-field="asset_maintenance_time">@lang('admin/asset_maintenances/form.asset_maintenance_time')</th>
<th data-searchable="true" data-sortable="true" data-field="cost" class="text-right">@lang('admin/asset_maintenances/form.cost')</th>
<th data-searchable="true" data-sortable="true" data-field="notes" data-visible="false">@lang('admin/asset_maintenances/form.notes')</th>
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ Lang::get('table.actions') }}</th>
</tr>
</thead>
</table>
</div>
@section('moar_scripts')
<script src="https://demo.snipeitapp.com/assets/js/jquery.dataTables.min.js"></script>
<script src="https://demo.snipeitapp.com/assets/js/dataTables.colVis.js"></script>
<script src="https://demo.snipeitapp.com/assets/js/dataTables.tableTools.js"></script>
<script src="{{ asset('assets/js/bootstrap-table.js') }}"></script>
<script src="{{ asset('assets/js/extensions/cookie/bootstrap-table-cookie.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') }}"></script>
<script src="{{ asset('assets/js/extensions/export/tableExport.js') }}"></script>
<script src="{{ asset('assets/js/extensions/export/jquery.base64.js') }}"></script>
<script type="text/javascript">
$('#table').bootstrapTable({
classes: 'table table-responsive table-no-bordered',
undefinedText: '',
iconsPrefix: 'fa',
showRefresh: true,
search: true,
pageSize: {{{ Setting::getSettings()->per_page }}},
pagination: true,
sidePagination: 'server',
sortable: true,
cookie: true,
mobileResponsive: true,
showExport: true,
showColumns: true,
exportDataType: 'all',
exportTypes: ['csv', 'txt','json', 'xml'],
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
@stop
+1 -1
View File
@@ -19,7 +19,7 @@
<div class="user-profile">
<div class="row profile">
<div class="col-md-9 bio">
<table
<table
name="categories"
id="table"
data-url="{{route('api.categories.list')}}"