2016-03-25 01:18:05 -07:00
@ extends ( 'layouts/default' )
{{ -- Page title -- }}
@ section ( 'title' )
{{ trans ( 'general.dashboard' ) }}
@ parent
@ stop
{{ -- Page content -- }}
@ section ( 'content' )
2018-01-19 20:43:55 -08:00
@ if ( $snipeSettings -> dashboard_message != '' )
< div class = " row " >
< div class = " col-md-12 " >
2018-01-19 20:49:02 -08:00
< div class = " box " >
<!-- /. box - header -->
< div class = " box-body " >
< div class = " row " >
< div class = " col-md-12 " >
{ !! Parsedown :: instance () -> text ( e ( $snipeSettings -> dashboard_message )) !! }
</ div >
</ div >
</ div >
2018-01-19 20:43:55 -08:00
</ div >
</ div >
</ div >
@ endif
2016-03-25 01:18:05 -07:00
< div class = " row " >
2016-12-27 12:03:47 -08:00
<!-- panel -->
2021-06-28 16:36:15 -07:00
< div class = " col-lg-2 col-xs-6 " >
2018-10-15 18:19:30 -07:00
< a href = " { { route('hardware.index') }} " >
2016-12-27 12:03:47 -08:00
<!-- small box -->
< div class = " small-box bg-teal " >
< div class = " inner " >
2020-04-06 21:30:28 -07:00
< h3 > {{ number_format ( $counts [ 'asset' ]) }} </ h3 >
2021-06-28 16:36:15 -07:00
< p > {{ strtolower ( trans ( 'general.assets' )) }} </ p >
2016-12-27 12:03:47 -08:00
</ div >
2020-03-27 21:44:32 -07:00
< div class = " icon " aria - hidden = " true " >
2020-04-02 18:17:21 -07:00
< i class = " fa fa-barcode " aria - hidden = " true " ></ i >
2016-12-27 12:03:47 -08:00
</ div >
@ can ( 'index' , \App\Models\Asset :: class )
2021-06-28 16:36:15 -07:00
< a href = " { { route('hardware.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
2016-12-27 12:03:47 -08:00
@ endcan
</ div >
2018-10-15 18:19:30 -07:00
</ a >
2016-12-27 12:03:47 -08:00
</ div ><!-- ./ col -->
2021-06-28 16:36:15 -07:00
< div class = " col-lg-2 col-xs-6 " >
2018-10-15 18:19:30 -07:00
< a href = " { { route('licenses.index') }} " >
2016-12-27 12:03:47 -08:00
<!-- small box -->
< div class = " small-box bg-maroon " >
< div class = " inner " >
2020-04-06 21:30:28 -07:00
< h3 > {{ number_format ( $counts [ 'license' ]) }} </ h3 >
2021-06-28 16:36:15 -07:00
< p > {{ strtolower ( trans ( 'general.licenses' )) }} </ p >
2016-12-27 12:03:47 -08:00
</ div >
2020-03-27 21:44:32 -07:00
< div class = " icon " aria - hidden = " true " >
2016-12-27 12:03:47 -08:00
< i class = " fa fa-floppy-o " ></ i >
</ div >
@ can ( 'view' , \App\Models\License :: class )
2021-06-28 16:36:15 -07:00
< a href = " { { route('licenses.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
2016-12-27 12:03:47 -08:00
@ endcan
</ div >
2018-10-15 18:19:30 -07:00
</ a >
2016-12-27 12:03:47 -08:00
</ div ><!-- ./ col -->
2017-05-31 05:23:54 -07:00
2021-06-28 16:36:15 -07:00
< div class = " col-lg-2 col-xs-6 " >
2016-12-27 12:03:47 -08:00
<!-- small box -->
2018-10-15 18:19:30 -07:00
< a href = " { { route('accessories.index') }} " >
2016-12-27 12:03:47 -08:00
< div class = " small-box bg-orange " >
< div class = " inner " >
2020-04-06 21:30:28 -07:00
< h3 > {{ number_format ( $counts [ 'accessory' ]) }} </ h3 >
2021-06-28 16:36:15 -07:00
< p > {{ strtolower ( trans ( 'general.accessories' )) }} </ p >
2016-12-27 12:03:47 -08:00
</ div >
2020-03-27 21:44:32 -07:00
< div class = " icon " aria - hidden = " true " >
2016-12-27 12:03:47 -08:00
< i class = " fa fa-keyboard-o " ></ i >
</ div >
@ can ( 'index' , \App\Models\Accessory :: class )
2021-06-28 16:36:15 -07:00
< a href = " { { route('accessories.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
2016-12-27 12:03:47 -08:00
@ endcan
</ div >
2018-10-15 18:19:30 -07:00
</ a >
2016-12-27 12:03:47 -08:00
</ div ><!-- ./ col -->
2021-06-28 16:36:15 -07:00
< div class = " col-lg-2 col-xs-6 " >
2016-12-27 12:03:47 -08:00
<!-- small box -->
2018-10-15 18:19:30 -07:00
< a href = " { { route('consumables.index') }} " >
2016-12-27 12:03:47 -08:00
< div class = " small-box bg-purple " >
< div class = " inner " >
2020-04-06 21:30:28 -07:00
< h3 > {{ number_format ( $counts [ 'consumable' ]) }} </ h3 >
2021-06-28 16:36:15 -07:00
< p > {{ strtolower ( trans ( 'general.consumables' )) }} </ p >
2016-12-27 12:03:47 -08:00
</ div >
2020-03-27 21:44:32 -07:00
< div class = " icon " aria - hidden = " true " >
2016-12-27 12:03:47 -08:00
< i class = " fa fa-tint " ></ i >
</ div >
@ can ( 'index' , \App\Models\Consumable :: class )
2021-06-28 16:36:15 -07:00
< a href = " { { route('consumables.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
2016-12-27 12:03:47 -08:00
@ endcan
</ div >
</ div ><!-- ./ col -->
2021-06-28 16:36:15 -07:00
< div class = " col-lg-2 col-xs-6 " >
< a href = " { { route('components.index') }} " >
<!-- small box -->
< div class = " small-box bg-yellow " >
< div class = " inner " >
< h3 > {{ number_format ( $counts [ 'component' ]) }} </ h3 >
< p > {{ strtolower ( trans ( 'general.components' )) }} </ p >
</ div >
< div class = " icon " aria - hidden = " true " >
< i class = " fa fa-hdd-o " ></ i >
</ div >
@ can ( 'view' , \App\Models\License :: class )
< a href = " { { route('components.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
@ endcan
</ div >
</ a >
</ div ><!-- ./ col -->
< div class = " col-lg-2 col-xs-6 " >
< a href = " { { route('users.index') }} " >
<!-- small box -->
< div class = " small-box bg-light-blue " >
< div class = " inner " >
< h3 > {{ number_format ( $counts [ 'user' ]) }} </ h3 >
< p > {{ strtolower ( trans ( 'general.people' )) }} </ p >
</ div >
< div class = " icon " aria - hidden = " true " >
< i class = " fa fa-users " ></ i >
</ div >
@ can ( 'view' , \App\Models\License :: class )
< a href = " { { route('users.index') }} " class = " small-box-footer " > {{ trans ( 'general.view_all' ) }} < i class = " fa fa-arrow-circle-right " aria - hidden = " true " ></ i ></ a >
@ endcan
</ div >
</ a >
</ div ><!-- ./ col -->
2016-03-25 01:18:05 -07:00
</ div >
</ div >
2017-05-31 05:23:54 -07:00
@ if ( $counts [ 'grand_total' ] == 0 )
< div class = " row " >
< div class = " col-md-12 " >
< div class = " box " >
< div class = " box-header with-border " >
2020-03-31 23:36:56 -07:00
< h2 class = " box-title " > This is your dashboard . There are many like it , but this one is yours .</ h2 >
2017-05-31 05:23:54 -07:00
</ div >
<!-- /. box - header -->
< div class = " box-body " >
< div class = " row " >
< div class = " col-md-12 " >
< div class = " progress " >
< div class = " progress-bar progress-bar-yellow " role = " progressbar " aria - valuenow = " 60 " aria - valuemin = " 0 " aria - valuemax = " 100 " style = " width: 60% " >
< span class = " sr-only " > 60 % Complete ( warning ) </ span >
</ div >
</ div >
< p >< strong > It looks like you haven 't added anything yet, so we don' t have anything awesome to display . Get started by adding some assets , accessories , consumables , or licenses now !</ strong ></ p >
</ div >
</ div >
< div class = " row " >
< div class = " col-md-3 " >
@ can ( 'create' , \App\Models\Asset :: class )
< a class = " btn bg-teal " style = " width: 100% " href = " { { route('hardware.create') }} " > New Asset </ a >
@ endcan
</ div >
< div class = " col-md-3 " >
@ can ( 'create' , \App\Models\License :: class )
< a class = " btn bg-maroon " style = " width: 100% " href = " { { route('licenses.create') }} " > New License </ a >
@ endcan
</ div >
< div class = " col-md-3 " >
@ can ( 'create' , \App\Models\Accessory :: class )
< a class = " btn bg-orange " style = " width: 100% " href = " { { route('accessories.create') }} " > New Accessory </ a >
@ endcan
</ div >
< div class = " col-md-3 " >
@ can ( 'create' , \App\Models\Consumable :: class )
< a class = " btn bg-purple " style = " width: 100% " href = " { { route('consumables.create') }} " > New Consumable </ a >
@ endcan
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
@ else
2016-05-24 16:10:04 -07:00
<!-- recent activity -->
2016-12-27 12:03:47 -08:00
< div class = " row " >
2021-06-28 19:46:56 -07:00
< div class = " col-md-8 " >
2016-12-27 12:03:47 -08:00
< div class = " box " >
< div class = " box-header with-border " >
2020-03-31 23:36:56 -07:00
< h2 class = " box-title " > {{ trans ( 'general.recent_activity' ) }} </ h2 >
2016-12-27 12:03:47 -08:00
< div class = " box-tools pull-right " >
2020-03-27 21:44:32 -07:00
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " aria - hidden = " true " >
2020-03-28 01:37:49 -07:00
< i class = " fa fa-minus " aria - hidden = " true " ></ i >
< span class = " sr-only " > Collapse </ span >
2017-05-31 05:23:54 -07:00
</ button >
2016-12-27 12:03:47 -08:00
</ div >
</ div ><!-- /. box - header -->
< div class = " box-body " >
< div class = " row " >
< div class = " col-md-12 " >
< div class = " table-responsive " >
2018-02-16 13:22:55 -08:00
< table
data - cookie - id - table = " dashActivityReport "
2021-06-28 16:36:15 -07:00
data - height = " 350 "
2020-10-23 18:33:10 -07:00
data - pagination = " false "
data - id - table = " dashActivityReport "
data - side - pagination = " server "
2018-02-16 13:22:55 -08:00
data - sort - order = " desc "
data - sort - name = " created_at "
id = " dashActivityReport "
class = " table table-striped snipe-table "
data - url = " { { route('api.activity.index', ['limit' => 25]) }} " >
< thead >
< tr >
2020-03-27 21:44:32 -07:00
< th data - field = " icon " data - visible = " true " style = " width: 40px; " class = " hidden-xs " data - formatter = " iconFormatter " >< span class = " sr-only " > Icon </ span ></ th >
2018-02-16 13:22:55 -08:00
< th class = " col-sm-3 " data - visible = " true " data - field = " created_at " data - formatter = " dateDisplayFormatter " > {{ trans ( 'general.date' ) }} </ th >
< th class = " col-sm-2 " data - visible = " true " data - field = " admin " data - formatter = " usersLinkObjFormatter " > {{ trans ( 'general.admin' ) }} </ th >
< th class = " col-sm-2 " data - visible = " true " data - field = " action_type " > {{ trans ( 'general.action' ) }} </ th >
< th class = " col-sm-3 " data - visible = " true " data - field = " item " data - formatter = " polymorphicItemFormatter " > {{ trans ( 'general.item' ) }} </ th >
< th class = " col-sm-2 " data - visible = " true " data - field = " target " data - formatter = " polymorphicItemFormatter " > {{ trans ( 'general.target' ) }} </ th >
</ tr >
</ thead >
</ table >
2017-05-23 09:25:45 -07:00
2016-12-27 12:03:47 -08:00
</ div ><!-- /. responsive -->
</ div ><!-- /. col -->
2021-06-28 16:36:15 -07:00
< div class = " text-center col-md-12 " style = " padding-top: 10px; " >
2018-11-08 15:20:44 -08:00
< a href = " { { route('reports.activity') }} " class = " btn btn-primary btn-sm " style = " width: 100% " > {{ trans ( 'general.viewall' ) }} </ a >
2017-05-31 05:23:54 -07:00
</ div >
2016-12-27 12:03:47 -08:00
</ div ><!-- /. row -->
</ div ><!-- ./ box - body -->
</ div ><!-- /. box -->
</ div >
2021-06-28 19:46:56 -07:00
< div class = " col-md-4 " >
2017-11-08 13:12:03 -08:00
< div class = " box box-default " >
2017-08-09 19:00:54 -07:00
< div class = " box-header with-border " >
2020-03-31 23:36:56 -07:00
< h2 class = " box-title " > {{ trans ( 'general.assets' ) }} by Status </ h2 >
2017-08-09 19:00:54 -07:00
< div class = " box-tools pull-right " >
2020-03-27 21:44:32 -07:00
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " aria - hidden = " true " >
2020-03-28 01:37:49 -07:00
< i class = " fa fa-minus " aria - hidden = " true " ></ i >
< span class = " sr-only " > Collapse </ span >
2017-08-09 19:00:54 -07:00
</ button >
</ div >
2017-05-31 05:23:54 -07:00
</ div >
2017-08-09 19:00:54 -07:00
<!-- /. box - header -->
2019-01-15 14:02:49 -08:00
< div class = " box-body " >
2017-08-09 19:00:54 -07:00
< div class = " row " >
< div class = " col-md-12 " >
< div class = " chart-responsive " >
2021-06-28 19:46:56 -07:00
< canvas id = " statusPieChart " height = " 290 " ></ canvas >
2017-08-09 19:00:54 -07:00
</ div > <!-- ./ chart - responsive -->
</ div > <!-- /. col -->
</ div > <!-- /. row -->
</ div ><!-- /. box - body -->
</ div > <!-- /. box -->
2021-06-28 19:46:56 -07:00
</ div >
</ div > <!--/ row -->
< div class = " row " >
< div class = " col-md-6 " >
<!-- Categories -->
< div class = " box box-default " >
< div class = " box-header with-border " >
< h2 class = " box-title " > Asset {{ trans ( 'general.locations' ) }} </ h2 >
< div class = " box-tools pull-right " >
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " >
< i class = " fa fa-minus " aria - hidden = " true " ></ i >
< span class = " sr-only " > Collapse </ span >
</ button >
</ div >
</ div >
<!-- /. box - header -->
< div class = " box-body " >
< div class = " row " >
< div class = " col-md-12 " >
< div class = " table-responsive " >
< table
data - cookie - id - table = " dashLocationSummary "
data - height = " 400 "
data - pagination = " true "
data - side - pagination = " server "
data - sort - order = " desc "
data - sort - field = " assets_count "
id = " dashLocationSummary "
class = " table table-striped snipe-table "
data - url = " { { route('api.locations.index', ['sort' => 'assets_count', 'order' => 'asc']) }} " >
< thead >
< tr >
< th class = " col-sm-3 " data - visible = " true " data - field = " name " data - formatter = " categoriesLinkFormatter " data - sortable = " true " > {{ trans ( 'general.name' ) }} </ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " assets_count " data - sortable = " true " >
< i class = " fa fa-barcode " aria - hidden = " true " ></ i >
< span class = " sr-only " > Asset Count </ span >
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " assigned_assets_count " data - sortable = " true " >
Assigned
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " users_count " data - sortable = " true " >
< i class = " fa fa-users " aria - hidden = " true " ></ i >
< span class = " sr-only " > People </ span >
</ th >
</ tr >
</ thead >
</ table >
</ div >
</ div > <!-- /. col -->
< div class = " text-center col-md-12 " style = " padding-top: 10px; " >
2021-06-28 19:56:41 -07:00
< a href = " { { route('locations.index') }} " class = " btn btn-primary btn-sm " style = " width: 100% " > {{ trans ( 'general.viewall' ) }} </ a >
2021-06-28 19:46:56 -07:00
</ div >
</ div > <!-- /. row -->
</ div ><!-- /. box - body -->
</ div > <!-- /. box -->
2017-08-09 19:00:54 -07:00
</ div >
< div class = " col-md-6 " >
2017-05-31 05:23:54 -07:00
2017-08-09 19:00:54 -07:00
<!-- Categories -->
< div class = " box box-default " >
< div class = " box-header with-border " >
2020-03-31 23:36:56 -07:00
< h2 class = " box-title " > Asset {{ trans ( 'general.categories' ) }} </ h2 >
2017-08-09 19:00:54 -07:00
< div class = " box-tools pull-right " >
2020-03-28 01:37:49 -07:00
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " >
< i class = " fa fa-minus " aria - hidden = " true " ></ i >
< span class = " sr-only " > Collapse </ span >
2017-08-09 19:00:54 -07:00
</ button >
</ div >
</ div >
<!-- /. box - header -->
< div class = " box-body " >
< div class = " row " >
< div class = " col-md-12 " >
2018-05-01 21:32:36 -07:00
< div class = " table-responsive " >
2017-08-09 19:00:54 -07:00
< table
2018-02-16 13:22:55 -08:00
data - cookie - id - table = " dashCategorySummary "
data - height = " 400 "
2018-08-29 12:29:47 -07:00
data - pagination = " true "
2018-02-16 13:22:55 -08:00
data - side - pagination = " server "
data - sort - order = " desc "
data - sort - field = " assets_count "
id = " dashCategorySummary "
2017-08-09 19:00:54 -07:00
class = " table table-striped snipe-table "
2017-11-21 20:33:30 -08:00
data - url = " { { route('api.categories.index', ['sort' => 'assets_count', 'order' => 'asc']) }} " >
2018-02-16 13:22:55 -08:00
2017-08-09 19:00:54 -07:00
< thead >
< tr >
2018-02-16 13:22:55 -08:00
< th class = " col-sm-3 " data - visible = " true " data - field = " name " data - formatter = " categoriesLinkFormatter " data - sortable = " true " > {{ trans ( 'general.name' ) }} </ th >
2020-03-27 21:44:32 -07:00
< th class = " col-sm-3 " data - visible = " true " data - field = " category_type " data - sortable = " true " >
{{ trans ( 'general.type' ) }}
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " assets_count " data - sortable = " true " >
< i class = " fa fa-barcode " aria - hidden = " true " ></ i >
< span class = " sr-only " > Asset Count </ span >
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " accessories_count " data - sortable = " true " >
< i class = " fa fa-keyboard-o " aria - hidden = " true " ></ i >
< span class = " sr-only " > Accessories Count </ span >
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " consumables_count " data - sortable = " true " >
< i class = " fa fa-tint " aria - hidden = " true " ></ i >
< span class = " sr-only " > Consumables Count </ span >
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " components_count " data - sortable = " true " >
< i class = " fa fa-hdd-o " aria - hidden = " true " ></ i >
< span class = " sr-only " > Components Count </ span >
</ th >
< th class = " col-sm-1 " data - visible = " true " data - field = " licenses_count " data - sortable = " true " >
< i class = " fa fa-floppy-o " aria - hidden = " true " ></ i >
< span class = " sr-only " > Licenses Count </ span >
</ th >
2017-08-09 19:00:54 -07:00
</ tr >
</ thead >
</ table >
2018-05-01 21:32:36 -07:00
</ div >
2017-08-09 19:00:54 -07:00
</ div > <!-- /. col -->
2021-06-28 16:36:15 -07:00
< div class = " text-center col-md-12 " style = " padding-top: 10px; " >
2018-11-08 15:20:44 -08:00
< a href = " { { route('categories.index') }} " class = " btn btn-primary btn-sm " style = " width: 100% " > {{ trans ( 'general.viewall' ) }} </ a >
2017-08-09 19:00:54 -07:00
</ div >
</ div > <!-- /. row -->
</ div ><!-- /. box - body -->
</ div > <!-- /. box -->
</ div >
</ div >
2016-12-27 12:03:47 -08:00
2017-05-31 05:23:54 -07:00
@ endif
2016-12-27 12:03:47 -08:00
@ stop
2016-03-25 01:18:05 -07:00
2016-05-24 16:10:04 -07:00
@ section ( 'moar_scripts' )
2018-01-16 07:37:20 -08:00
@ include ( 'partials.bootstrap-table' , [ 'simple_view' => true , 'nopages' => true ])
2018-09-28 13:03:52 -07:00
@ stop
2017-05-23 09:25:45 -07:00
2018-09-28 13:03:52 -07:00
@ push ( 'js' )
2020-04-06 21:17:26 -07:00
2017-05-31 05:23:54 -07:00
2017-05-23 09:25:45 -07:00
2017-09-28 19:45:15 -07:00
< script nonce = " { { csrf_token() }} " >
2018-09-28 13:03:52 -07:00
// ---------------------------
// - ASSET STATUS CHART -
// ---------------------------
var pieChartCanvas = $ ( " #statusPieChart " ) . get ( 0 ) . getContext ( " 2d " );
var pieChart = new Chart ( pieChartCanvas );
var ctx = document . getElementById ( " statusPieChart " );
2019-01-15 14:02:49 -08:00
var pieOptions = {
legend : {
position : 'top' ,
responsive : true ,
maintainAspectRatio : true ,
}
};
2018-09-28 13:03:52 -07:00
$ . ajax ({
type : 'GET' ,
url : '{{ route(' api . statuslabels . assets . bytype ') }}' ,
headers : {
" X-Requested-With " : 'XMLHttpRequest' ,
" X-CSRF-TOKEN " : $ ( 'meta[name="csrf-token"]' ) . attr ( 'content' )
},
dataType : 'json' ,
success : function ( data ) {
var myPieChart = new Chart ( ctx ,{
type : 'doughnut' ,
2019-03-08 12:46:47 -08:00
data : data ,
2018-09-28 13:03:52 -07:00
options : pieOptions
});
},
error : function ( data ) {
// window.location.reload(true);
}
});
2016-05-24 16:10:04 -07:00
</ script >
2018-10-15 18:19:30 -07:00
@ endpush