Category improvements

This commit is contained in:
snipe 2017-02-16 00:32:33 -08:00
parent a18e90c22a
commit 8fe8ff71e8
6 changed files with 182 additions and 33 deletions

View file

@ -6,7 +6,7 @@ use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\Helper;
use App\Models\Category;
use App\Http\Transformers\DatatablesTransformer;
use App\Http\Transformers\CategoriesTransformer;
class CategoriesController extends Controller
{
@ -37,7 +37,7 @@ class CategoriesController extends Controller
$total = $categories->count();
$categories = $categories->skip($offset)->take($limit)->get();
return (new DatatablesTransformer)->transformDatatables($categories, $total);
return (new CategoriesTransformer)->transformCategories($categories, $total);
}

View file

@ -187,12 +187,26 @@ class CategoriesController extends Controller
* @since [v1.8]
* @return \Illuminate\Contracts\View\View
*/
public function show($categoryId = null)
public function show($id)
{
$category = Category::find($categoryId);
$category = Category::find($id);
if (isset($category->id)) {
return View::make('categories/view', compact('category'));
if ($category->category_type=='asset') {
$category_type = 'hardware';
$category_type_route = 'assets';
} elseif ($category->category_type=='accessory') {
$category_type = 'accessories';
$category_type_route = 'accessories';
} else {
$category_type = $category->category_type;
$category_type_route = $category->category_type.'s';
}
return View::make('categories/view', compact('category'))
->with('category_type',$category_type)
->with('category_type_route',$category_type_route);
}
// Prepare the error message

View file

@ -0,0 +1,51 @@
<?php
namespace App\Http\Transformers;
use App\Models\Category;
use Illuminate\Database\Eloquent\Collection;
use Gate;
class CategoriesTransformer
{
public function transformCategories (Collection $categorys, $total)
{
$array = array();
foreach ($categorys as $category) {
$array[] = self::transformCategory($category);
}
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformCategory (Category $category = null)
{
if ($category) {
$array = [
'id' => e($category->id),
'name' => e($category->name),
'type' => e($category->category_type),
'use_default_eula' => ($category->use_default_eula =='1') ? true : false,
'require_acceptance' => ($category->require_acceptance =='1') ? true : false,
'assets_count' => $category->assets_count,
'accessories_count' => $category->accessories_count,
'consumables_count' => $category->consumables_count,
'components_count' => $category->components_count,
];
$permissions_array['available_actions'] = [
'update' => Gate::allows('admin') ? true : false,
'delete' => Gate::allows('admin') ? true : false,
];
$array += $permissions_array;
return $array;
}
}
}

View file

@ -11,6 +11,85 @@ use App\Helpers\Helper;
class CategoryPresenter extends Presenter
{
/**
* Json Column Layout for bootstrap table
* @return string
*/
public static function dataTableLayout()
{
$layout = [
[
"field" => "id",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('general.id'),
"visible" => false
], [
"field" => "name",
"searchable" => true,
"sortable" => true,
"title" => trans('general.name'),
"visible" => false,
"formatter" => 'categoriesLinkFormatter',
],[
"field" => "type",
"searchable" => true,
"sortable" => true,
"title" => trans('general.type'),
"visible" => true
], [
"field" => "assets_count",
"searchable" => false,
"sortable" => false,
"title" => trans('general.assets'),
"visible" => false
], [
"field" => "accessories_count",
"searchable" => false,
"sortable" => false,
"title" => trans('general.accessories'),
"visible" => false
], [
"field" => "consumables_count",
"searchable" => false,
"sortable" => false,
"title" => trans('general.consumables'),
"visible" => true
], [
"field" => "components_count",
"searchable" => false,
"sortable" => false,
"title" => trans('general.components'),
"visible" => true
], [
"field" => "use_default_eula",
"searchable" => false,
"sortable" => false,
"title" => trans('admin/categories/table.eula_text'),
"visible" => false,
"formatter" => 'trueFalseFormatter',
], [
"field" => "require_acceptance",
"searchable" => false,
"sortable" => false,
"title" => trans('admin/categories/table.require_acceptance'),
"visible" => false,
"formatter" => 'trueFalseFormatter',
], [
"field" => "actions",
"searchable" => false,
"sortable" => false,
"switchable" => false,
"title" => trans('table.actions'),
"formatter" => "categoriesActionsFormatter",
]
];
return json_encode($layout);
}
/**
* Link to this categories name
* @return string

View file

@ -28,17 +28,7 @@
data-cookie="true"
data-click-to-select="true"
data-cookie-id-table="categoriesTable-{{ config('version.hash_version') }}">
<thead>
<tr>
<th data-sortable="true" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
<th data-sortable="true" data-field="name" data-formatter="categoriesLinkFormatter">{{ trans('admin/categories/table.title') }}</th>
<th data-sortable="true" data-field="category_type">{{ trans('general.type') }}</th>
<th data-searchable="false" data-sortable="false" data-field="assets_count">{{ trans('general.assets') }}</th>
<th data-searchable="false" data-sortable="true" data-field="require_acceptance" data-formatter="trueFalseFormatter">{{ trans('admin/categories/table.require_acceptance') }}</th>
<th data-searchable="false" data-sortable="true" data-field="use_default_eula" data-formatter="trueFalseFormatter">{{ trans('admin/categories/table.eula_text') }}</th>
<th data-formatter="categoriesActionsFormatter" data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ trans('table.actions') }}</th>
</tr>
</thead>
</table>
</div>
</div><!-- /.box-body -->
@ -49,6 +39,10 @@
@stop
@section('moar_scripts')
@include ('partials.bootstrap-table', ['exportFile' => 'categories-export', 'search' => true])
@include ('partials.bootstrap-table',
['exportFile' => 'category-export',
'search' => true,
'columns' => \App\Presenters\CategoryPresenter::dataTableLayout()
])
@stop

View file

@ -4,7 +4,8 @@
@section('title')
{{ $category->name }}
{{ trans('general.assets') }}
{{ ucwords($category_type_route) }}
@parent
@stop
@ -30,27 +31,22 @@
name="category_assets"
class="snipe-table"
id="table"
data-url="{{ ($category->category_type=='asset') ? route('api.assets.index',['category_id'=> $category->id]) : route('api.'.$category->category_type.'s.index', ['category_id'=> $category->id]) }}
data-url="{{ route('api.'.$category_type_route.'.index',['category_id'=> $category->id]) }}
data-cookie="true"
data-click-to-select="true"
data-cookie-id-table="categoryAssetsTable">
data-cookie-id-table="category{{ $category_type_route }}Table">
@if ($category->category_type!='asset')
<thead>
<tr>
<th data-searchable="false" data-sortable="false" data-field="company" data-visible="false">
<th data-searchable="false" data-sortable="false" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
<th data-searchable="false" data-sortable="false" data-field="company" data-visible="false" data-formatter="companiesLinkObjFormatter">
{{ trans('admin/companies/table.title') }}
</th>
<th data-searchable="false" data-sortable="false" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
<th data-searchable="false" data-sortable="false" data-field="name">{{ trans('general.name') }}</th>
@if ($category->category_type=='asset')
<th data-searchable="false" data-sortable="false" data-field="model" data-formatter="modelsLinkObjFormatter">{{ trans('admin/hardware/form.model') }}</th>
<th data-searchable="false" data-sortable="false" data-field="asset_tag" data-formatter="hardwareLinkFormatter">{{ trans('general.asset_tag') }}</th>
<th data-searchable="false" data-sortable="false" data-field="serial" data-formatter="hardwareLinkFormatter">{{ trans('admin/hardware/form.serial') }}</th>
<th data-searchable="false" data-sortable="false" data-field="assigned_to" data-formatter="usersLinkFormatter">{{ trans('general.user') }}</th>
<th data-searchable="false" data-sortable="false" data-field="change" data-switchable="false">{{ trans('admin/hardware/table.change') }}</th>
@endif
<th data-searchable="false" data-sortable="false" data-field="actions" data-switchable="false">{{ trans('table.actions') }}</th>
<th data-searchable="true" data-formatter="{{ $category_type }}LinkFormatter" data-sortable="true" data-field="name">{{ trans('general.name') }}</th>
<th data-searchable="false" data-sortable="false" data-formatter="{{ $category_type }}ActionsFormatter" data-field="actions" data-switchable="false">{{ trans('table.actions') }}</th>
</tr>
</thead>
@endif
</table>
</div>
</div>
@ -59,5 +55,20 @@
@stop
@section('moar_scripts')
@include ('partials.bootstrap-table', ['exportFile' => 'category-' . $category->name . '-export', 'search' => false])
@if ($category->category_type=='asset')
@include ('partials.bootstrap-table',
[
'exportFile' => 'category-' . $category->name . '-export',
'search' => true,
'columns' => \App\Presenters\AssetPresenter::dataTableLayout()])
@else
@include ('partials.bootstrap-table',
[
'exportFile' => 'category-' . $category->name . '-export',
'search' => false])
@endif
@stop