More bootstrap tables formatting

This commit is contained in:
snipe 2017-01-24 22:25:17 -08:00
parent 8f12486f6c
commit 04bb180a80
10 changed files with 95 additions and 22 deletions

View file

@ -5,7 +5,7 @@ use App\Models\AssetModel;
use App\Http\Controllers\Controller;
use App\Helpers\Helper;
use Illuminate\Http\Request;
use App\Http\Transformers\DatatablesTransformer;
use App\Http\Transformers\AssetModelsTransformer;
/**
* This class controls all actions related to asset models for
@ -28,7 +28,7 @@ class AssetModelsController extends Controller
$this->authorize('view', AssetModel::class);
$allowed_columns = ['id','image','name','model_number','eol','notes','created_at'];
$assetmodels = AssetModel::select(['id','image','name','model_number','eol','notes','created_at'])
$assetmodels = AssetModel::select(['id','image','name','model_number','eol','notes','created_at','category_id','manufacturer_id','depreciation_id','fieldset_id'])
->with('category','depreciation', 'manufacturer','fieldset')
->withCount('assets');
@ -44,7 +44,7 @@ class AssetModelsController extends Controller
$total = $assetmodels->count();
$assetmodels = $assetmodels->skip($offset)->take($limit)->get();
return (new DatatablesTransformer)->transformDatatables($assetmodels, $total);
return (new AssetModelsTransformer)->transformAssetModels($assetmodels, $total);
}
@ -81,7 +81,7 @@ class AssetModelsController extends Controller
{
$this->authorize('view', AssetModel::class);
$assetmodel = AssetModel::findOrFail($id);
return $assetmodel;
return (new AssetModelsTransformer)->transformAssetModel($assetmodel);
}

View file

@ -0,0 +1,43 @@
<?php
namespace App\Http\Transformers;
use App\Models\AssetModel;
use Illuminate\Database\Eloquent\Collection;
class AssetModelsTransformer
{
public function transformAssetModels (Collection $assetmodels, $total)
{
$array = array();
foreach ($assetmodels as $assetmodel) {
$array[] = self::transformAssetModel($assetmodel);
}
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformAssetModel (AssetModel $assetmodel)
{
$transformed = [
'id' => $assetmodel->id,
'name' => e($assetmodel->name),
'manufacturer' => ($assetmodel->manufacturer_id) ? $assetmodel->manufacturer : null,
'image' => e($assetmodel->image),
'model_number' => e($assetmodel->model_number),
'depreciation' => ($assetmodel->depreciation) ? $assetmodel->depreciation : 'No',
'assets_count' => $assetmodel->assets_count,
'category' => ($assetmodel->category_id) ? $assetmodel->category : null,
'fieldset' => ($assetmodel->fieldset) ? $assetmodel->fieldset : null,
'eol' => ($assetmodel->eol > 0) ? $assetmodel->eol .' months': 'None',
'notes' => e($assetmodel->notes),
];
return $transformed;
}
public function transformAssetModelsDatatable($assetmodels) {
return (new DatatablesTransformer)->transformDatatables($assetmodels);
}
}

View file

@ -26,10 +26,10 @@ class AssetsTransformer
'serial' => $asset->serial,
'model' => ($asset->model) ? $asset->model : '',
'model_number' => $asset->model_number,
'status_label' => ($asset->assetstatus) ? $asset->assetstatus : '',
'status_label' => ($asset->assetstatus) ? $asset->assetstatus : null,
'last_checkout' => $asset->last_checkout,
'category' => ($asset->model->category) ? $asset->model->category : '',
'manufacturer' => $asset->manufacturer,
'category' => ($asset->model->category) ? $asset->model->category : null,
'manufacturer' => ($asset->model->manufacturer) ? $asset->model->manufacturer : null,
'notes' => $asset->notes,
'expected_checkin' => $asset->expected_checkin,
'order_number' => $asset->order_number,

View file

@ -21,6 +21,7 @@ class AssetModel extends SnipeModel
use Requestable, Presentable;
protected $dates = ['deleted_at'];
protected $table = 'models';
protected $hidden = ['user_id','deleted_at'];
// Declare the rules for the model validation
protected $rules = array(

View file

@ -23,6 +23,7 @@ class Category extends SnipeModel
use SoftDeletes;
protected $dates = ['deleted_at'];
protected $table = 'categories';
protected $hidden = ['user_id','deleted_at'];
/**
* Category validation rules

View file

@ -19,6 +19,10 @@ class Manufacturer extends SnipeModel
'user_id' => 'integer',
);
protected $hidden = ['user_id','deleted_at'];
/**
* Whether the model should inject it's identifier to the unique
* validation rules before attempting validation. If this property

View file

@ -16,6 +16,7 @@ class Statuslabel extends SnipeModel
protected $injectUniqueIdentifier = true;
protected $dates = ['deleted_at'];
protected $table = 'status_labels';
protected $hidden = ['user_id','deleted_at'];
protected $rules = array(

View file

@ -85,7 +85,7 @@
<th data-sortable="true" data-formatter="usersLinkObjFormatter" data-field="assigned_to">{{ trans('admin/hardware/form.checkedout_to') }}</th>
<th data-sortable="true" data-formatter="locationsLinkObjFormatter" data-field="location" data-searchable="true">{{ trans('admin/hardware/table.location') }}</th>
<th data-sortable="true" data-field="category" data-searchable="true" data-formatter="categoriesLinkObjFormatter">{{ trans('general.category') }}</th>
<th data-sortable="true" data-field="manufacturer" data-formatter="manufacturersLinkObjFormatter" data-searchable="true" data-visible="false">{{ trans('general.manufacturer') }}</th>
<th data-sortable="true" data-field="manufacturer" data-formatter="manufacturerssLinkObjFormatter" data-searchable="true" data-visible="false">{{ trans('general.manufacturer') }}</th>
<th data-sortable="true" data-field="purchase_cost" data-searchable="true" data-visible="false">{{ trans('admin/hardware/form.cost') }}</th>
<th data-sortable="true" data-field="purchase_date" data-searchable="true" data-visible="false">{{ trans('admin/hardware/form.date') }}</th>
<th data-sortable="false" data-field="eol" data-searchable="true">{{ trans('general.eol') }}</th>

View file

@ -37,15 +37,16 @@
<thead>
<tr>
<th data-sortable="true" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
<th data-sortable="true" data-field="image" data-visible="false">{{ trans('admin/hardware/table.image') }}</th>
<th data-sortable="false" data-field="manufacturer">{{ trans('general.manufacturer') }}</th>
<th data-sortable="true" data-field="name" data-formatter="modelsLinkFormatter">{{ trans('admin/models/table.title') }}</th>
<th data-sortable="true" data-field="name" data-formatter="modelsLinkFormatter">{{ trans('general.name') }}</th>
<th data-sortable="true" data-field="image" data-formatter="modelsImageFormatter" data-visible="false">{{ trans('admin/hardware/table.image') }}</th>
<th data-sortable="false" data-field="manufacturer" data-formatter="manufacturersLinkObjFormatter">{{ trans('general.manufacturer') }}</th>
<th data-sortable="true" data-field="model_number">{{ trans('admin/models/table.modelnumber') }}</th>
<th data-sortable="false" data-field="assets_count">{{ trans('admin/models/table.numassets') }}</th>
<th data-sortable="false" data-field="depreciation">{{ trans('general.depreciation') }}</th>
<th data-sortable="false" data-field="category">{{ trans('general.category') }}</th>
<th data-sortable="false" data-field="depreciation" data-formatter="depreciationsLinkObjFormatter">{{ trans('general.depreciation') }}</th>
<th data-sortable="false" data-field="category" data-formatter="categoriesLinkObjFormatter">{{ trans('general.category') }}</th>
<th data-sortable="true" data-field="eol">{{ trans('general.eol') }}</th>
<th data-sortable="false" data-field="fieldset">{{ trans('admin/models/general.fieldset') }}</th>
<th data-sortable="false" data-field="fieldset" data-formatter="fieldsetsLinkObjFormatter">{{ trans('admin/models/general.fieldset') }}</th>
<th data-sortable="true" data-field="notes">{{ trans('general.notes') }}</th>
<th data-switchable="false" data-formatter="modelsActionsFormatter" data-searchable="false" data-sortable="false" data-field="actions">{{ trans('table.actions') }}</th>
</tr>

View file

@ -55,8 +55,6 @@ $('.snipe-table').bootstrapTable({
});
// Handle whether or not the edit button should be disabled
$('.snipe-table').on('check.bs.table', function () {
$('#bulkEdit').removeAttr('disabled');
@ -96,6 +94,7 @@ $('.snipe-table').bootstrapTable({
};
}
// Make the edit/delete buttons
function genericActionsFormatter(destination) {
return function (value,row) {
return '<nobr><a href="{{ url('/') }}/' + destination + '/' + row.id + '/edit" class="btn btn-sm btn-warning"><i class="fa fa-pencil"></i></a> '
@ -106,21 +105,44 @@ $('.snipe-table').bootstrapTable({
};
}
// Use this when we're introspecting into a column object with more than one item
function genericColumnArrayLinkFormatter(destination) {
function genericCheckinCheckoutFormatter(destination) {
return function (value,row) {
if ((value) && (value.name)) {
return '<a href="{{ url('/') }}/' + destination + '/' + value.id + '"> ' + value.name + '</a>';
}
return '<nobr><a href="{{ url('/') }}/' + destination + '/' + row.id + '/edit" class="btn btn-sm btn-warning"><i class="fa fa-pencil"></i></a> '
+ '<a data-html="false" class="btn delete-asset btn-danger btn-sm" ' +
+ 'data-toggle="modal" href="" data-content="Are you sure you wish to delete this?" '
+ 'data-title="{{ trans('general.delete') }}?" onClick="return false;">'
+ '<i class="fa fa-trash"></i></a></nobr>';
};
}
var formatters = ['hardware','locations','users','manufacturers','statuslabels','models','licenses','categories','suppliers','companies'];
function genericPublicImageFormatter(destination) {
return function (value,row) {
if (value) {
return '<img src="{{ url('/') }}/uploads/' + destination + '/' + value + '" height="50" width="50">';
}
}
}
var formatters = [
'hardware',
'locations',
'users',
'manufacturers',
'statuslabels',
'models',
'licenses',
'categories',
'suppliers',
'companies',
'depreciations',
'fieldsets'
];
for (var i in formatters) {
window[formatters[i] + 'LinkFormatter'] = genericRowLinkFormatter(formatters[i]);
window[formatters[i] + 'LinkObjFormatter'] = genericColumnObjLinkFormatter(formatters[i]);
window[formatters[i] + 'ActionsFormatter'] = genericActionsFormatter(formatters[i]);
window[formatters[i] + 'ImageFormatter'] = genericPublicImageFormatter(formatters[i]);
}