From 99ccea08991346d64b121b424972e691fe44f4ba Mon Sep 17 00:00:00 2001 From: "bs23.mahir" Date: Tue, 21 May 2024 15:05:02 +0600 Subject: [PATCH 1/3] controller updated --- .../Api/StatuslabelsController.php | 101 +++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index 7c8e260c2f0f..a7ca05617ea5 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -132,7 +132,7 @@ public function update(Request $request, $id) { $this->authorize('update', Statuslabel::class); $statuslabel = Statuslabel::findOrFail($id); - + $request->except('deployable', 'pending', 'archived'); @@ -333,4 +333,103 @@ public function selectlist(Request $request) return (new SelectlistTransformer)->transformSelectlist($statuslabels); } + + public function getTailoredData() + { + $this->authorize('view', Statuslabel::class); + + $noWhere = "No Where"; + + $noWhereLocation = \App\Models\Location::where('name', $noWhere)->first(); + if(!$noWhereLocation) { + $noWhereLocation = \App\Models\Location::create(['name' => 'NO WHERE']); + } + + $nullLocationAssets = Asset::whereNull('location_id')->get(); + if($nullLocationAssets->isNotEmpty()) { + Asset::whereNull('location_id')->update(['location_id' => $noWhereLocation->id]); + } + + $assets = Asset::with(['assetstatus', 'location', 'model', 'model.category'])->orderBy('id', 'asc')->get(); + $modelNames = $assets->groupBy('model.name')->keys()->all(); + $locationNames = $assets->groupBy('location.name')->keys()->all(); + $categoryNames = $assets->groupBy('model.category.name')->keys()->all(); + $assetPurchasesByDate = Asset::select(\DB::raw('DATE(purchase_date) as date'), \DB::raw('count(*) as count')) + ->where('purchase_date', '>=', \Carbon::now()->subMonths(3)) + ->groupBy('date')->orderBy('date', 'asc')->get(); + + $assetsByModel = $assets->groupBy('model.name')->map(function ($assets) { + return [ + 'count' => $assets->count(), + 'locations' => $assets->groupBy('location.name')->map(function ($assetByLocation) { + return [ + 'count' => $assetByLocation->count(), + 'status' => $assetByLocation->groupBy('assetstatus.name')->map(function ($assetByStatus) { + return $assetByStatus->count(); + }), + + ]; + }), + ]; + }); + + $assetsByLocation = $assets->groupBy('location.name')->map(function ($assets) { + return [ + 'count' => $assets->count(), + 'status' => $assets->groupBy('assetstatus.name')->map(function ($assetByStatus) { return $assetByStatus->count(); }), + 'model_names' => $assets->groupBy('model.name')->keys()->all(), + 'category_names' =>$assets->groupBy('model.category.name')->keys()->all(), + 'models' => $assets->groupBy('model.name')->map(function ($assetByModel) { + return [ + 'count' => $assetByModel->count(), + 'status' => $assetByModel->groupBy('assetstatus.name')->map(function ($assetByStatus) { + return $assetByStatus->count(); + }), + ]; + }), + 'categories' => $assets->groupBy('model.category.name')->map(function ($assetByModelCategory) { + return [ + 'count' => $assetByModelCategory->count(), + 'status' => $assetByModelCategory->groupBy('assetstatus.name')->map(function ($assetByStatus) { + return $assetByStatus->count(); + }), + ]; + }), + ]; + }); + + // if(isset($assetsByLocation[""])) { + // $assetsByLocation['Unknown'] = $assetsByLocation[""]; + // unset($assetsByLocation[""]); + // } + + // $assetsByStatus = $assets->groupBy('assetstatus.name')->map(function ($assets) { + // return [ + // 'count' => $assets->count(), + // 'location_names' => $assets->groupBy('location.name')->keys()->all(), + // 'locations' => $assets->groupBy('location.name')->map(function ($assetByLocation) { + // return [ + // 'count' => $assetByLocation->count(), + // 'status' => $assetByLocation->groupBy('model.name')->map(function ($assetByModel) { + // return [ + // 'count' => $assetByModel->count(), + // // 'models' => $assetByModel->all(), + // ]; + // }), + + // ]; + // }), + // ]; + // }); + + return [ + 'model_names' => $modelNames, + 'location_names' => $locationNames, + 'category_names' => $categoryNames, + 'assets_by_model' => $assetsByModel->toArray(), + 'assets_by_location' => $assetsByLocation->toArray(), + 'assets_by_purchase_date' => $assetPurchasesByDate->toArray(), + // 'assets_by_status' => $assetsByStatus->toArray(), + ]; + } } From dab31cc558464414d16ba031d674472f0a2a2f13 Mon Sep 17 00:00:00 2001 From: "bs23.mahir" Date: Tue, 21 May 2024 15:05:51 +0600 Subject: [PATCH 2/3] updated route --- routes/api.php | 275 +++++++++++++++++++++++++------------------------ 1 file changed, 139 insertions(+), 136 deletions(-) diff --git a/routes/api.php b/routes/api.php index 8adb0af61920..8f8eadc64385 100644 --- a/routes/api.php +++ b/routes/api.php @@ -36,14 +36,14 @@ Route::get('requests', [ - Api\ProfileController::class, + Api\ProfileController::class, 'requestedAssets' ] )->name('api.assets.requested'); Route::get('requestable/hardware', [ - Api\AssetsController::class, + Api\AssetsController::class, 'requestable' ] )->name('api.assets.requestable'); @@ -81,14 +81,14 @@ Route::get('{accessory}/checkedout', [ - Api\AccessoriesController::class, + Api\AccessoriesController::class, 'checkedout' ] )->name('api.accessories.checkedout'); Route::post('{accessory}/checkout', [ - Api\AccessoriesController::class, + Api\AccessoriesController::class, 'checkout' ] )->name('api.accessories.checkout'); @@ -96,14 +96,14 @@ Route::post('{accessory}/checkin', [ - Api\AccessoriesController::class, + Api\AccessoriesController::class, 'checkin' ] )->name('api.accessories.checkin'); Route::get('selectlist', [ - Api\AccessoriesController::class, + Api\AccessoriesController::class, 'selectlist' ] )->name('api.accessories.selectlist'); @@ -126,22 +126,22 @@ ] ); - + /** * Categpries API routes */ Route::group(['prefix' => 'categories'], function () { - + Route::get('{item_type}/selectlist', [ - Api\CategoriesController::class, + Api\CategoriesController::class, 'selectlist' ] )->name('api.categories.selectlist'); }); - Route::resource('categories', + Route::resource('categories', Api\CategoriesController::class, ['names' => [ 'index' => 'api.categories.index', @@ -159,17 +159,17 @@ * Companies API routes */ Route::group(['prefix' => 'companies'], function () { - + Route::get('selectlist', [ - Api\CompaniesController::class, + Api\CompaniesController::class, 'selectlist' ] )->name('api.companies.selectlist'); - }); + }); - Route::resource('companies', + Route::resource('companies', Api\CompaniesController::class, ['names' => [ 'index' => 'api.companies.index', @@ -188,17 +188,17 @@ * Departments API routes */ Route::group(['prefix' => 'departments'], function () { - + Route::get('selectlist', [ - Api\DepartmentsController::class, + Api\DepartmentsController::class, 'selectlist' ] )->name('api.departments.selectlist'); - }); + }); - Route::resource('departments', + Route::resource('departments', Api\DepartmentsController::class, ['names' => [ 'index' => 'api.departments.index', @@ -217,17 +217,17 @@ * Components API routes */ Route::group(['prefix' => 'components'], function () { - + Route::get('selectlist', [ - Api\ComponentsController::class, + Api\ComponentsController::class, 'selectlist' ] )->name('api.components.selectlist'); Route::get('{component}/assets', [ - Api\ComponentsController::class, + Api\ComponentsController::class, 'getAssets' ] )->name('api.components.assets'); @@ -248,7 +248,7 @@ )->name('api.components.checkout'); - Route::resource('components', + Route::resource('components', Api\ComponentsController::class, ['names' => [ 'index' => 'api.components.index', @@ -267,17 +267,17 @@ * Consumables API routes */ Route::group(['prefix' => 'consumables'], function () { - + Route::get('selectlist', [ - Api\ConsumablesController::class, + Api\ConsumablesController::class, 'selectlist' ] )->name('api.consumables.selectlist'); Route::get('{id}/users', [ - Api\ConsumablesController::class, + Api\ConsumablesController::class, 'getDataView' ] )->name('api.consumables.show.users'); @@ -285,15 +285,15 @@ Route::post('{consumable}/checkout', [ - Api\ConsumablesController::class, + Api\ConsumablesController::class, 'checkout' ] )->name('api.consumables.checkout'); - }); + }); - Route::resource('consumables', + Route::resource('consumables', Api\ConsumablesController::class, ['names' => [ 'index' => 'api.consumables.index', @@ -312,7 +312,7 @@ /** * Depreciations API routes */ - Route::resource('depreciations', + Route::resource('depreciations', Api\DepreciationsController::class, ['names' => [ 'index' => 'api.depreciations.index', @@ -329,43 +329,43 @@ Route::get('reports/depreciation', [ - Api\AssetsController::class, + Api\AssetsController::class, 'index' ] )->name('api.depreciation-report.index'); - - + + /** * Fields API routes */ Route::group(['prefix' => 'fields'], function () { - + Route::post('fieldsets/{id}/order', [ - Api\CustomFieldsController::class, + Api\CustomFieldsController::class, 'postReorder' ] )->name('api.customfields.order'); - + Route::post('{field}/associate', [ - Api\CustomFieldsController::class, + Api\CustomFieldsController::class, 'associate' ] )->name('api.customfields.associate'); Route::post('{field}/disassociate', [ - Api\CustomFieldsController::class, + Api\CustomFieldsController::class, 'disassociate' ] )->name('api.customfields.disassociate'); }); - Route::resource('fields', + Route::resource('fields', Api\CustomFieldsController::class, - ['names' => + ['names' => [ 'index' => 'api.customfields.index', 'show' => 'api.customfields.show', @@ -382,24 +382,24 @@ * Fieldsets API routes */ Route::group(['prefix' => 'fieldsets'], function () { - + Route::post('{fieldset}/fields', [ - Api\CustomFieldsetsController::class, + Api\CustomFieldsetsController::class, 'fields' ] )->name('api.fieldsets.fields'); Route::post('{fieldset}/fields/{model}', [ - Api\CustomFieldsetsController::class, + Api\CustomFieldsetsController::class, 'fieldsWithDefaultValues' ] )->name('api.fieldsets.fields-with-default-value'); - + }); - Route::resource('fieldsets', + Route::resource('fieldsets', Api\CustomFieldsetsController::class, ['names' => [ 'index' => 'api.fieldsets.index', @@ -418,7 +418,7 @@ /** * Groups API routes */ - Route::resource('groups', + Route::resource('groups', Api\GroupsController::class, ['names' => [ 'index' => 'api.groups.index', @@ -431,37 +431,37 @@ 'parameters' => ['group' => 'group_id'], ] ); // end groups API routes - + /** * Assets API routes */ Route::group(['prefix' => 'hardware'], function () { - + Route::get('selectlist', [ - Api\AssetsController::class, + Api\AssetsController::class, 'selectlist' ] )->name('assets.selectlist'); Route::get('{asset_id}/licenses', [ - Api\AssetsController::class, + Api\AssetsController::class, 'licenses' ] )->name('api.assets.licenselist'); Route::get('bytag/{tag}', [ - Api\AssetsController::class, + Api\AssetsController::class, 'showByTag' ] )->name('assets.show.bytag'); Route::get('bytag/{any}', [ - Api\AssetsController::class, + Api\AssetsController::class, 'showByTag' ] )->name('api.assets.show.bytag') @@ -469,7 +469,7 @@ Route::post('bytag/{any}/checkout', [ - Api\AssetsController::class, + Api\AssetsController::class, 'checkoutByTag' ] )->name('api.assets.checkout.bytag'); @@ -490,7 +490,7 @@ Route::get('byserial/{any}', [ - Api\AssetsController::class, + Api\AssetsController::class, 'showBySerial' ] )->name('api.assets.show.byserial') @@ -499,7 +499,7 @@ // LEGACY URL - Get assets that are due or overdue for audit Route::get('audit/{status}', [ - Api\AssetsController::class, + Api\AssetsController::class, 'index' ] )->name('api.asset.to-audit'); @@ -519,21 +519,21 @@ Route::post('audit', [ - Api\AssetsController::class, + Api\AssetsController::class, 'audit' ] )->name('api.asset.audit'); Route::post('{id}/checkin', [ - Api\AssetsController::class, + Api\AssetsController::class, 'checkin' ] )->name('api.asset.checkin'); Route::post('{id}/checkout', [ - Api\AssetsController::class, + Api\AssetsController::class, 'checkout' ] )->name('api.asset.checkout'); @@ -551,7 +551,7 @@ - Route::resource('hardware', + Route::resource('hardware', Api\AssetsController::class, ['names' => [ 'index' => 'api.assets.index', @@ -568,7 +568,7 @@ /** * Asset maintenances API routes */ - Route::resource('maintenances', + Route::resource('maintenances', Api\AssetMaintenancesController::class, ['names' => [ 'index' => 'api.maintenances.index', @@ -587,17 +587,17 @@ * Imports API routes */ Route::group(['prefix' => 'imports'], function () { - + Route::post('process/{import}', [ - Api\ImportController::class, + Api\ImportController::class, 'process' ] )->name('api.imports.importFile'); - }); + }); - Route::resource('imports', + Route::resource('imports', Api\ImportController::class, ['names' => [ 'index' => 'api.imports.index', @@ -630,14 +630,14 @@ Route::get('selectlist', [ - Api\LicensesController::class, + Api\LicensesController::class, 'selectlist' ] )->name('api.licenses.selectlist'); - }); + }); - Route::resource('licenses', + Route::resource('licenses', Api\LicensesController::class, ['names' => [ 'index' => 'api.licenses.index', @@ -649,10 +649,10 @@ 'except' => ['create', 'edit'], 'parameters' => ['licenses' => 'license_id'], ] - ); + ); - Route::resource('licenses.seats', + Route::resource('licenses.seats', Api\LicenseSeatsController::class, ['names' => [ 'index' => 'api.licenses.seats.index', @@ -672,28 +672,28 @@ Route::get('selectlist', [ - Api\LocationsController::class, + Api\LocationsController::class, 'selectlist' ] )->name('api.locations.selectlist'); Route::get('{location}/users', [ - Api\LocationsController::class, + Api\LocationsController::class, 'getDataViewUsers' ] )->name('api.locations.viewusers'); Route::get('{location}/assets', [ - Api\LocationsController::class, + Api\LocationsController::class, 'getDataViewAssets' ] )->name('api.locations.viewassets'); - - }); - - Route::resource('locations', + + }); + + Route::resource('locations', Api\LocationsController::class, ['names' => [ 'index' => 'api.locations.index', @@ -715,7 +715,7 @@ Route::get('selectlist', [ - Api\ManufacturersController::class, + Api\ManufacturersController::class, 'selectlist' ] )->name('api.manufacturers.selectlist'); @@ -727,9 +727,9 @@ ] )->name('api.manufacturers.restore'); - }); - - Route::resource('manufacturers', + }); + + Route::resource('manufacturers', Api\ManufacturersController::class, ['names' => [ 'index' => 'api.manufacturers.index', @@ -751,14 +751,14 @@ Route::get('selectlist', [ - Api\AssetModelsController::class, + Api\AssetModelsController::class, 'selectlist' ] )->name('api.models.selectlist'); Route::get('assets', [ - Api\AssetModelsController::class, + Api\AssetModelsController::class, 'assets' ] )->name('api.models.assets'); @@ -770,9 +770,9 @@ ] )->name('api.models.restore'); - }); - - Route::resource('models', + }); + + Route::resource('models', Api\AssetModelsController::class, ['names' => [ 'index' => 'api.models.index', @@ -795,42 +795,42 @@ Route::get('ldaptest', [ - Api\SettingsController::class, + Api\SettingsController::class, 'ldaptest' ] )->name('api.settings.ldaptest'); Route::post('purge_barcodes', [ - Api\SettingsController::class, + Api\SettingsController::class, 'purgeBarcodes' ] )->name('api.settings.purgebarcodes'); Route::get('login-attempts', [ - Api\SettingsController::class, + Api\SettingsController::class, 'showLoginAttempts' ] )->name('api.settings.login_attempts'); Route::post('ldaptestlogin', [ - Api\SettingsController::class, + Api\SettingsController::class, 'ldaptestlogin' ] )->name('api.settings.ldaptestlogin'); Route::post('slacktest', [ - Api\SettingsController::class, + Api\SettingsController::class, 'slacktest' ] )->name('api.settings.slacktest'); Route::post('mailtest', [ - Api\SettingsController::class, + Api\SettingsController::class, 'ajaxTestEmail' ] )->name('api.settings.mailtest'); @@ -856,9 +856,9 @@ ] )->name('api.settings.backups.download'); - }); - - Route::resource('settings', + }); + + Route::resource('settings', Api\SettingsController::class, ['names' => [ 'index' => 'api.settings.index', @@ -880,14 +880,14 @@ Route::get('selectlist', [ - Api\StatuslabelsController::class, + Api\StatuslabelsController::class, 'selectlist' ] )->name('api.statuslabels.selectlist'); Route::get('assets/name', [ - Api\StatuslabelsController::class, + Api\StatuslabelsController::class, 'getAssetCountByStatuslabel' ] )->name('api.statuslabels.assets.byname'); @@ -901,14 +901,14 @@ Route::get('{id}/assetlist', [ - Api\StatuslabelsController::class, + Api\StatuslabelsController::class, 'assets' ] )->name('api.statuslabels.assets'); Route::get('{statuslabel}/deployable', [ - Api\StatuslabelsController::class, + Api\StatuslabelsController::class, 'checkIfDeployable' ] )->name('api.statuslabels.deployable'); @@ -920,9 +920,9 @@ ] )->name('api.statuslabels.selectlist'); - }); - - Route::resource('statuslabels', + }); + + Route::resource('statuslabels', Api\StatuslabelsController::class, ['names' => [ 'index' => 'api.statuslabels.index', @@ -944,14 +944,14 @@ Route::get('selectlist', [ - Api\SuppliersController::class, + Api\SuppliersController::class, 'selectlist' ] )->name('api.suppliers.selectlist'); - }); - - Route::resource('suppliers', + }); + + Route::resource('suppliers', Api\SuppliersController::class, ['names' => [ 'index' => 'api.suppliers.index', @@ -974,35 +974,35 @@ Route::get('selectlist', [ - Api\UsersController::class, + Api\UsersController::class, 'selectlist' ] )->name('api.users.selectlist'); Route::post('two_factor_reset', [ - Api\UsersController::class, + Api\UsersController::class, 'postTwoFactorReset' ] )->name('api.users.two_factor_reset'); Route::get('me', [ - Api\UsersController::class, + Api\UsersController::class, 'getCurrentUserInfo' ] )->name('api.users.me'); Route::get('list/{status?}', [ - Api\UsersController::class, + Api\UsersController::class, 'getDatatable' ] )->name('api.users.list'); Route::get('{user}/assets', [ - Api\UsersController::class, + Api\UsersController::class, 'assets' ] )->name('api.users.assetlist'); @@ -1016,21 +1016,21 @@ Route::get('{user}/accessories', [ - Api\UsersController::class, + Api\UsersController::class, 'accessories' ] )->name('api.users.accessorieslist'); Route::get('{user}/licenses', [ - Api\UsersController::class, + Api\UsersController::class, 'licenses' ] )->name('api.users.licenselist'); Route::post('{user}/upload', [ - Api\UsersController::class, + Api\UsersController::class, 'postUpload' ] )->name('api.users.uploads'); @@ -1042,9 +1042,9 @@ ] )->name('api.users.restore'); - }); - - Route::resource('users', + }); + + Route::resource('users', Api\UsersController::class, ['names' => [ 'index' => 'api.users.index', @@ -1062,7 +1062,7 @@ /** * Kits API routes */ - Route::resource('kits', + Route::resource('kits', Api\PredefinedKitsController::class, ['names' => [ 'index' => 'api.kits.index', @@ -1082,28 +1082,28 @@ // kit licenses Route::get('licenses', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'indexLicenses' ] )->name('api.kits.licenses.index'); Route::post('licenses', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'storeLicense' ] )->name('api.kits.licenses.store'); Route::put('licenses/{license_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'updateLicense' ] )->name('api.kits.licenses.update'); Route::delete('licenses/{license_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'detachLicense' ] )->name('api.kits.licenses.destroy'); @@ -1112,28 +1112,28 @@ // kit models Route::get('models', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'indexModels' ] )->name('api.kits.models.index'); Route::post('models', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'storeModel' ] )->name('api.kits.models.store'); Route::put('models/{model_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'updateModels' ] )->name('api.kits.models.update'); Route::delete('models/{model_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'detachModels' ] )->name('api.kits.models.destroy'); @@ -1141,28 +1141,28 @@ // kit accessories Route::get('accessories', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'indexAccessories' ] )->name('api.kits.accessories.index'); Route::post('accessories', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'storeAccessory' ] )->name('api.kits.accessories.store'); Route::put('accessories/{accessory_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'updateAccessory' ] )->name('api.kits.accessories.update'); Route::delete('accessories/{accessory_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'detachAccessory' ] )->name('api.kits.accessories.destroy'); @@ -1170,44 +1170,44 @@ // kit consumables Route::get('consumables', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'indexConsumables' ] )->name('api.kits.consumables.index'); Route::post('consumables', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'storeConsumable' ] )->name('api.kits.consumables.store'); Route::put('consumables/{consumable_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'updateConsumable' ] )->name('api.kits.consumables.update'); Route::delete('consumables/{consumable_id}', [ - Api\PredefinedKitsController::class, + Api\PredefinedKitsController::class, 'detachConsumable' ] )->name('api.kits.consumables.destroy'); }); // end consumable routes - - + + /** * Reports API routes */ - + Route::group(['prefix' => 'reports'], function () { Route::get('activity', [ - Api\ReportsController::class, + Api\ReportsController::class, 'index' ] )->name('api.activity.index'); @@ -1235,3 +1235,6 @@ }); // end fallback routes }); // end API routes + +// Custom Api +Route::get('assets/custom/tailored', [Api\StatuslabelsController::class, 'getTailoredData'])->name('api.assets.custom.tailored'); \ No newline at end of file From c753b92086fd4050685c4d198f14f19a05602e6e Mon Sep 17 00:00:00 2001 From: "bs23.mahir" Date: Tue, 21 May 2024 15:08:57 +0600 Subject: [PATCH 3/3] updated js for graphs and tables --- resources/views/dashboard.blade.php | 523 +++++++++++++++++++++++++++- 1 file changed, 516 insertions(+), 7 deletions(-) diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 274494687156..823222386e27 100755 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -276,7 +276,7 @@ class="table table-striped snipe-table"
@if ($snipeSettings->full_multiple_companies_support=='1') - +

{{ trans('general.companies') }}

@@ -342,7 +342,7 @@ class="table table-striped snipe-table"
- + @else
@@ -374,21 +374,21 @@ class="table table-striped snipe-table" {{ trans('general.name') }} - + {{ trans('general.asset_count') }} - + {{ trans('general.assigned') }} {{ trans('general.people') }} - + - + @@ -403,7 +403,7 @@ class="table table-striped snipe-table"
@endif - +
@@ -542,4 +542,513 @@ class="table table-striped snipe-table" last = current; }); + + @endpush