2018-01-10 22:53:54 -08:00
< script src = " { { asset('js/bootstrap-table.min.js') }} " ></ script >
2017-05-31 12:34:05 -07:00
< script src = " { { asset('js/extensions/mobile/bootstrap-table-mobile.js') }} " ></ script >
< script src = " { { asset('js/extensions/export/bootstrap-table-export.js?v=1') }} " ></ script >
2018-01-10 22:53:54 -08:00
< script src = " { { asset('js/extensions/export/jquery.base64.js') }} " ></ script >
2017-05-31 12:34:05 -07:00
< script src = " { { asset('js/FileSaver.min.js') }} " ></ script >
2018-01-10 22:53:54 -08:00
< script src = " { { asset('js/xlsx.core.min.js') }} " ></ script >
2017-05-31 12:34:05 -07:00
< script src = " { { asset('js/jspdf.min.js') }} " ></ script >
< script src = " { { asset('js/jspdf.plugin.autotable.js') }} " ></ script >
2018-01-10 22:53:54 -08:00
< script src = " { { asset('js/extensions/export/tableExport.min.js') }} " ></ script >
@ if ( ! isset ( $simple_view ))
2017-05-31 12:34:05 -07:00
< script src = " { { asset('js/extensions/toolbar/bootstrap-table-toolbar.js') }} " ></ script >
2017-10-24 05:22:26 -07:00
< script src = " { { asset('js/extensions/sticky-header/bootstrap-table-sticky-header.js') }} " ></ script >
2017-05-23 14:32:58 -07:00
@ endif
2017-02-08 08:48:41 -08:00
2018-02-16 13:22:55 -08:00
< script src = " { { asset('js/extensions/cookie/bootstrap-table-cookie.js?v=1') }} " ></ script >
2017-10-24 05:22:26 -07:00
2018-01-10 22:53:54 -08:00
2018-02-16 13:22:55 -08:00
< script nonce = " { { csrf_token() }} " >
2018-01-10 22:53:54 -08:00
2017-10-24 05:22:26 -07:00
$ ( function () {
2018-02-16 13:22:55 -08:00
2017-10-24 05:22:26 -07:00
var stickyHeaderOffsetY = 0 ;
if ( $ ( '.navbar-fixed-top' ) . css ( 'height' ) ) {
stickyHeaderOffsetY = + $ ( '.navbar-fixed-top' ) . css ( 'height' ) . replace ( 'px' , '' );
}
if ( $ ( '.navbar-fixed-top' ) . css ( 'margin-bottom' ) ) {
stickyHeaderOffsetY += + $ ( '.navbar-fixed-top' ) . css ( 'margin-bottom' ) . replace ( 'px' , '' );
}
2017-11-02 11:19:34 -07:00
$ ( '.snipe-table' ) . bootstrapTable ( 'destroy' ) . bootstrapTable ({
2018-01-10 20:34:36 -08:00
classes : 'table table-responsive table-no-bordered' ,
2018-01-10 22:53:54 -08:00
ajaxOptions : {
headers : {
'X-CSRF-TOKEN' : $ ( 'meta[name="csrf-token"]' ) . attr ( 'content' )
}
},
2018-02-16 13:22:55 -08:00
stickyHeader : true ,
stickyHeaderOffsetY : stickyHeaderOffsetY + 'px' ,
2018-01-10 20:34:36 -08:00
undefinedText : '' ,
iconsPrefix : 'fa' ,
cookie : true ,
cookieExpire : '2y' ,
cookieIdTable : '{{ Route::currentRouteName() }}' ,
mobileResponsive : true ,
maintainSelected : true ,
2018-02-16 13:22:55 -08:00
trimOnSearch : false ,
2018-01-10 20:34:36 -08:00
paginationFirstText : " { { trans('general.first') }} " ,
paginationLastText : " { { trans('general.last') }} " ,
paginationPreText : " { { trans('general.previous') }} " ,
paginationNextText : " { { trans('general.next') }} " ,
2018-02-21 04:41:44 -08:00
pageList : [ '10' , '20' , '30' , '50' , '100' , '150' , '200' , '500' ],
2018-02-21 05:44:41 -08:00
pageSize : {{ (( $snipeSettings -> per_page != '' ) && ( $snipeSettings -> per_page > 0 )) ? $snipeSettings -> per_page : 20 }},
2018-02-16 13:22:55 -08:00
paginationVAlign : 'both' ,
2018-01-10 20:34:36 -08:00
formatLoadingMessage : function () {
return '<h4><i class="fa fa-spinner fa-spin" aria-hidden="true"></i> Loading... please wait.... </h4>' ;
},
2018-02-16 13:22:55 -08:00
2018-01-10 20:34:36 -08:00
icons : {
advancedSearchIcon : 'fa fa-search-plus' ,
paginationSwitchDown : 'fa-caret-square-o-down' ,
paginationSwitchUp : 'fa-caret-square-o-up' ,
columns : 'fa-columns' ,
refresh : 'fa-refresh'
},
2018-01-10 22:53:54 -08:00
exportTypes : [ 'csv' , 'excel' , 'doc' , 'txt' , 'json' , 'xml' , 'pdf' ],
2018-01-10 20:34:36 -08:00
2018-02-16 13:22:55 -08:00
});
2018-01-10 22:53:54 -08:00
2018-02-16 13:22:55 -08:00
});
2018-01-10 22:53:54 -08:00
2017-03-11 04:26:01 -08:00
2017-10-24 05:22:26 -07:00
2017-01-18 19:28:35 -08:00
2017-08-25 18:40:20 -07:00
function dateRowCheckStyle ( value ) {
2017-08-26 15:27:50 -07:00
if (( value . days_to_next_audit ) && ( value . days_to_next_audit < {{ $snipeSettings -> audit_warning_days ? : 0 }})) {
2017-08-25 18:40:20 -07:00
return { classes : " danger " }
}
return {};
}
2017-01-18 19:28:35 -08:00
// Handle whether or not the edit button should be disabled
$ ( '.snipe-table' ) . on ( 'check.bs.table' , function () {
$ ( '#bulkEdit' ) . removeAttr ( 'disabled' );
});
$ ( '.snipe-table' ) . on ( 'check-all.bs.table' , function () {
$ ( '#bulkEdit' ) . removeAttr ( 'disabled' );
});
$ ( '.snipe-table' ) . on ( 'uncheck.bs.table' , function () {
if ( $ ( '.snipe-table' ) . bootstrapTable ( 'getSelections' ) . length == 0 ) {
$ ( '#bulkEdit' ) . attr ( 'disabled' , 'disabled' );
}
});
$ ( '.snipe-table' ) . on ( 'uncheck-all.bs.table' , function ( e , row ) {
$ ( '#bulkEdit' ) . attr ( 'disabled' , 'disabled' );
});
2017-01-24 21:04:38 -08:00
// This only works for model index pages because it uses the row's model ID
function genericRowLinkFormatter ( destination ) {
return function ( value , row ) {
if ( value ) {
return '<a href="{{ url(' / ') }}/' + destination + '/' + row . id + '"> ' + value + '</a>' ;
}
};
2017-01-18 19:28:35 -08:00
}
2017-01-24 21:04:38 -08:00
// Use this when we're introspecting into a column object and need to link
function genericColumnObjLinkFormatter ( destination ) {
return function ( value , row ) {
2017-09-29 12:03:02 -07:00
if (( value ) && ( value . status_meta )) {
2017-09-29 15:24:33 -07:00
var text_color ;
var icon_style ;
2018-01-15 21:03:26 -08:00
var text_help ;
2018-01-23 18:08:54 -08:00
var status_meta = {
'deployed' : '{{ strtolower(trans(' general . deployed ')) }}' ,
'deployable' : '{{ strtolower(trans(' admin / hardware / general . deployable ')) }}' ,
'pending' : '{{ strtolower(trans(' general . pending ')) }}'
}
2017-09-29 15:24:33 -07:00
switch ( value . status_meta ) {
2018-01-23 18:08:54 -08:00
case 'deployed' :
2017-09-29 15:24:33 -07:00
text_color = 'blue' ;
icon_style = 'fa-circle' ;
2018-01-15 21:03:26 -08:00
text_help = '<label class="label label-default">{{ trans(' general . deployed ') }}</label>' ;
2017-09-29 15:24:33 -07:00
break ;
2018-01-23 18:08:54 -08:00
case 'deployable' :
2017-09-29 15:24:33 -07:00
text_color = 'green' ;
icon_style = 'fa-circle' ;
2018-01-15 21:03:26 -08:00
text_help = '' ;
2017-09-29 15:24:33 -07:00
break ;
2018-01-23 18:08:54 -08:00
case 'pending' :
2017-09-29 15:24:33 -07:00
text_color = 'orange' ;
icon_style = 'fa-circle' ;
2018-01-15 21:03:26 -08:00
text_help = '' ;
2017-09-29 15:24:33 -07:00
break ;
default :
text_color = 'red' ;
icon_style = 'fa-times' ;
2018-01-15 21:03:26 -08:00
text_help = '' ;
2017-09-29 15:24:33 -07:00
}
2018-01-23 18:08:54 -08:00
return '<nobr><a href="{{ url(' / ') }}/' + destination + '/' + value . id + '" data-tooltip="true" title="' + status_meta [ value . status_meta ] + '"> <i class="fa ' + icon_style + ' text-' + text_color + '"></i> ' + value . name + ' ' + text_help + ' </a> </nobr>' ;
2017-09-28 21:18:00 -07:00
} else if (( value ) && ( value . name )) {
2018-05-29 10:41:46 -07:00
// Add some overrides for any funny urls we have
var dest = destination ;
if ( destination == 'fieldsets' ) {
var dest = 'fields/fieldsets' ;
}
return '<nobr><a href="{{ url(' / ') }}/' + dest + '/' + value . id + '"> ' + value . name + '</a></span>' ;
2017-01-24 21:04:38 -08:00
}
};
2017-01-18 19:28:35 -08:00
}
2017-01-24 22:25:17 -08:00
// Make the edit/delete buttons
2017-01-24 21:04:38 -08:00
function genericActionsFormatter ( destination ) {
return function ( value , row ) {
2017-02-08 18:21:03 -08:00
var actions = '<nobr>' ;
2018-05-29 10:41:46 -07:00
// Add some overrides for any funny urls we have
2017-10-19 02:22:05 -07:00
var dest = destination ;
2018-05-29 10:41:46 -07:00
2017-10-19 02:22:05 -07:00
if ( destination == 'groups' ) {
var dest = 'admin/groups' ;
}
2018-05-29 10:41:46 -07:00
2018-02-16 13:22:55 -08:00
if ( destination == 'maintenances' ) {
var dest = 'hardware/maintenances' ;
}
2017-10-19 02:22:05 -07:00
2017-07-07 18:45:49 -07:00
if (( row . available_actions ) && ( row . available_actions . clone === true )) {
2017-10-19 02:22:05 -07:00
actions += '<a href="{{ url(' / ') }}/' + dest + '/' + row . id + '/clone" class="btn btn-sm btn-info" data-tooltip="true" title="Clone"><i class="fa fa-copy"></i></a> ' ;
2017-07-07 18:45:49 -07:00
}
2017-02-21 15:40:25 -08:00
if (( row . available_actions ) && ( row . available_actions . update === true )) {
2017-10-19 02:22:05 -07:00
actions += '<a href="{{ url(' / ') }}/' + dest + '/' + row . id + '/edit" class="btn btn-sm btn-warning" data-tooltip="true" title="Update"><i class="fa fa-pencil"></i></a> ' ;
2017-02-08 18:21:03 -08:00
}
2017-02-21 15:40:25 -08:00
if (( row . available_actions ) && ( row . available_actions . delete === true )) {
2017-10-19 02:22:05 -07:00
actions += '<a href="{{ url(' / ') }}/' + dest + '/' + row . id + '" '
2017-07-08 13:21:13 -07:00
+ ' class="btn btn-danger btn-sm delete-asset" data-tooltip="true" '
2017-02-15 23:04:49 -08:00
+ ' data-toggle="modal" '
2017-05-23 14:32:58 -07:00
+ ' data-content="{{ trans(' general . sure_to_delete ') }} ' + row . name + '?" '
2017-07-08 13:36:25 -07:00
+ ' data-title="{{ trans(' general . delete ') }}" onClick="return false;">'
2017-10-19 11:29:58 -07:00
+ '<i class="fa fa-trash"></i></a> ' ;
} else {
actions += '<a class="btn btn-danger btn-sm delete-asset disabled" onClick="return false;"><i class="fa fa-trash"></i></a> ' ;
2017-02-08 18:21:03 -08:00
}
2017-09-06 17:11:43 -07:00
if (( row . available_actions ) && ( row . available_actions . restore === true )) {
2017-10-19 02:22:05 -07:00
actions += '<a href="{{ url(' / ') }}/' + dest + '/' + row . id + '/restore" class="btn btn-sm btn-warning" data-tooltip="true" title="Restore"><i class="fa fa-retweet"></i></a> ' ;
2017-09-06 17:11:43 -07:00
}
2017-10-19 11:29:58 -07:00
actions += '</nobr>' ;
2017-02-08 18:21:03 -08:00
return actions ;
2017-01-24 21:04:38 -08:00
};
2017-01-18 19:28:35 -08:00
}
2017-05-23 14:32:58 -07:00
2017-10-18 06:24:36 -07:00
// This handles the icons and display of polymorphic entries
2017-05-23 14:32:58 -07:00
function polymorphicItemFormatter ( value ) {
var item_destination = '' ;
2017-09-29 17:32:16 -07:00
var item_icon ;
2017-05-23 14:32:58 -07:00
if (( value ) && ( value . type )) {
if ( value . type == 'asset' ) {
item_destination = 'hardware' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-barcode' ;
2017-05-23 14:32:58 -07:00
} else if ( value . type == 'accessory' ) {
item_destination = 'accessories' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-keyboard-o' ;
2017-05-23 14:32:58 -07:00
} else if ( value . type == 'component' ) {
item_destination = 'components' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-hdd-o' ;
2017-05-23 14:32:58 -07:00
} else if ( value . type == 'consumable' ) {
item_destination = 'consumables' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-tint' ;
2017-05-23 14:32:58 -07:00
} else if ( value . type == 'license' ) {
item_destination = 'licenses' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-floppy-o' ;
2017-05-23 14:32:58 -07:00
} else if ( value . type == 'user' ) {
item_destination = 'users' ;
2017-09-29 17:32:16 -07:00
item_icon = 'fa-user' ;
2017-09-05 17:54:58 -07:00
} else if ( value . type == 'location' ) {
item_destination = 'locations'
2017-09-29 17:32:16 -07:00
item_icon = 'fa-map-marker' ;
2017-05-23 14:32:58 -07:00
}
2017-10-28 07:12:47 -07:00
return '<nobr><a href="{{ url(' / ') }}/' + item_destination + '/' + value . id + '" data-tooltip="true" title="' + value . type + '"><i class="fa ' + item_icon + ' text-blue"></i> ' + value . name + '</a></nobr>' ;
2017-05-23 14:32:58 -07:00
} else {
2017-05-23 15:06:43 -07:00
return '' ;
2017-05-23 14:32:58 -07:00
}
}
2017-11-22 06:20:28 -08:00
// This just prints out the item type in the activity report
function itemTypeFormatter ( value , row ) {
if (( row ) && ( row . item ) && ( row . item . type )) {
return row . item . type ;
}
}
2017-05-23 14:32:58 -07:00
2018-02-16 21:38:56 -08:00
// Convert line breaks to <br>
function notesFormatter ( value ) {
if ( value ) {
return value . replace ( / ( ? : \r\n | \r | \n ) / g , '<br />' );;
}
}
2018-01-10 18:58:55 -08:00
// We need a special formatter for license seats, since they don't work exactly the same
2018-01-10 20:34:36 -08:00
// Checkouts need the license ID, checkins need the specific seat ID
2018-01-10 18:58:55 -08:00
2018-01-10 20:34:36 -08:00
function licenseSeatInOutFormatter ( value , row ) {
// The user is allowed to check the license seat out and it's available
if (( row . available_actions . checkout == true ) && ( row . user_can_checkout == true ) && (( ! row . asset_id ) && ( ! row . assigned_to ))) {
2018-07-23 20:28:45 -07:00
return '<a href="{{ url(' / ') }}/licenses/' + row . license_id + '/checkout/' + row . id + '" class="btn btn-sm bg-maroon" data-tooltip="true" title="Check this item out">{{ trans(' general . checkout ') }}</a>' ;
2018-01-10 20:34:36 -08:00
} else {
return '<a href="{{ url(' / ') }}/licenses/' + row . id + '/checkin" class="btn btn-sm bg-purple" data-tooltip="true" title="Check in this license seat.">{{ trans(' general . checkin ') }}</a>' ;
}
2018-01-10 18:58:55 -08:00
}
2017-01-24 22:25:17 -08:00
function genericCheckinCheckoutFormatter ( destination ) {
2017-01-24 21:04:38 -08:00
return function ( value , row ) {
2017-02-08 18:21:03 -08:00
// The user is allowed to check items out, AND the item is deployable
2018-01-10 18:58:55 -08:00
if (( row . available_actions . checkout == true ) && ( row . user_can_checkout == true ) && (( ! row . asset_id ) && ( ! row . assigned_to ))) {
return '<a href="{{ url(' / ') }}/' + destination + '/' + row . id + '/checkout" class="btn btn-sm bg-maroon" data-tooltip="true" title="Check this item out">{{ trans(' general . checkout ') }}</a>' ;
2017-02-08 18:21:03 -08:00
// The user is allowed to check items out, but the item is not deployable
2017-03-11 12:11:24 -08:00
} else if ((( row . user_can_checkout == false )) && ( row . available_actions . checkout == true ) && ( ! row . assigned_to )) {
2017-10-17 11:32:09 -07:00
return '<div data-tooltip="true" title="This item has a status label that is undeployable and cannot be checked out at this time."><a class="btn btn-sm bg-maroon disabled">{{ trans(' general . checkout ') }}</a></div>' ;
2017-02-08 18:21:03 -08:00
// The user is allowed to check items in
2017-09-28 21:18:00 -07:00
} else if ( row . available_actions . checkin == true ) {
if ( row . assigned_to ) {
2018-01-10 20:34:36 -08:00
return '<a href="{{ url(' / ') }}/' + destination + '/' + row . id + '/checkin" class="btn btn-sm bg-purple" data-tooltip="true" title="Check this item in so it is available for re-imaging, re-issue, etc.">{{ trans(' general . checkin ') }}</a>' ;
2017-09-28 21:18:00 -07:00
} else if ( row . assigned_pivot_id ) {
2018-01-10 20:34:36 -08:00
return '<a href="{{ url(' / ') }}/' + destination + '/' + row . assigned_pivot_id + '/checkin" class="btn btn-sm bg-purple" data-tooltip="true" title="Check this item in so it is available for re-imaging, re-issue, etc.">{{ trans(' general . checkin ') }}</a>' ;
2017-09-28 21:18:00 -07:00
}
2018-01-23 18:08:54 -08:00
}
2017-02-08 18:21:03 -08:00
2017-02-08 08:48:41 -08:00
}
2017-01-24 18:58:07 -08:00
}
2017-01-24 22:46:07 -08:00
2018-04-04 17:33:02 -07:00
// This is only used by the requestable assets section
function assetRequestActionsFormatter ( row , value ) {
if ( value . available_actions . cancel == true ) {
return '<form action="{{ url(' / ') }}/account/request-asset/' + value . id + '" method="GET"><button class="btn btn-danger btn-sm" data-tooltip="true" title="Cancel this item request">{{ trans(' button . cancel ') }}</button></form>' ;
} else if ( value . available_actions . request == true ) {
return '<form action="{{ url(' / ') }}/account/request-asset/' + value . id + '" method="GET"><button class="btn btn-primary btn-sm" data-tooltip="true" title="Request this item">{{ trans(' button . request ') }}</button></form>' ;
}
}
2017-01-24 22:25:17 -08:00
var formatters = [
'hardware' ,
2017-01-25 02:19:26 -08:00
'accessories' ,
2017-01-26 18:46:18 -08:00
'consumables' ,
'components' ,
2017-01-24 22:25:17 -08:00
'locations' ,
'users' ,
'manufacturers' ,
2018-02-16 13:22:55 -08:00
'maintenances' ,
2017-01-24 22:25:17 -08:00
'statuslabels' ,
'models' ,
'licenses' ,
'categories' ,
'suppliers' ,
2017-05-23 02:50:51 -07:00
'departments' ,
2017-01-24 22:25:17 -08:00
'companies' ,
'depreciations' ,
2017-02-01 18:50:28 -08:00
'fieldsets' ,
'groups'
2017-01-24 22:25:17 -08:00
];
2017-01-18 19:46:43 -08:00
2017-01-24 21:04:38 -08:00
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 ]);
2017-02-08 08:48:41 -08:00
window [ formatters [ i ] + 'InOutFormatter' ] = genericCheckinCheckoutFormatter ( formatters [ i ]);
2017-01-18 19:46:43 -08:00
}
2017-01-24 17:07:00 -08:00
2017-07-08 18:44:28 -07:00
// This is gross, but necessary so that we can package the API response
// for custom fields in a more useful way.
function customFieldsFormatter ( value , row ) {
2017-01-24 18:58:07 -08:00
2017-10-05 22:51:33 -07:00
if (( ! this ) || ( ! this . title )) {
return '' ;
}
2017-07-08 18:44:28 -07:00
var field_column = this . title ;
// Pull out any HTMl that might be passed via the presenter
// (for example, the locked icon for encrypted fields)
var field_column_plain = field_column . replace ( /< ( ? :.| \n ) * ?> ?/gm, '');
2017-08-23 03:28:13 -07:00
if (( row . custom_fields ) && ( row . custom_fields [ field_column_plain ])) {
2017-11-21 22:34:53 -08:00
// If the field type needs special formatting, do that here
if (( row . custom_fields [ field_column_plain ] . field_format ) && ( row . custom_fields [ field_column_plain ] . value )) {
if ( row . custom_fields [ field_column_plain ] . field_format == 'URL' ) {
return '<a href="' + row . custom_fields [ field_column_plain ] . value + '" target="_blank" rel="noopener">' + row . custom_fields [ field_column_plain ] . value + '</a>' ;
} else if ( row . custom_fields [ field_column_plain ] . field_format == 'EMAIL' ) {
return '<a href="mailto:' + row . custom_fields [ field_column_plain ] . value + '">' + row . custom_fields [ field_column_plain ] . value + '</a>' ;
}
}
2017-07-08 18:44:28 -07:00
return row . custom_fields [ field_column_plain ] . value ;
2017-11-21 22:34:53 -08:00
2017-07-08 18:44:28 -07:00
}
}
function createdAtFormatter ( value ) {
2017-01-24 21:04:38 -08:00
if (( value ) && ( value . date )) {
return value . date ;
2017-01-24 17:07:00 -08:00
}
}
2018-08-01 18:01:31 -07:00
function externalLinkFormatter ( value ) {
if ( value ) {
return '<a href="' + value + '" target="_blank">' + value + '</a>' ;
}
}
2017-10-17 21:43:57 -07:00
function groupsFormatter ( value ) {
if ( value ) {
var groups = '' ;
for ( var index in value . rows ) {
groups += '<a href="{{ url(' / ') }}/admin/groups/' + value . rows [ index ] . id + '" class="label label-default"> ' + value . rows [ index ] . name + '</a> ' ;
}
return groups ;
}
}
2017-12-12 04:59:28 -08:00
function changeLogFormatter ( value ) {
var result = '' ;
for ( var index in value ) {
result += index + ': <del>' + value [ index ] . old + '</del> <i class="fa fa-long-arrow-right" aria-hidden="true"></i> ' + value [ index ] . new + '<br>'
}
return result ;
}
2018-01-20 00:20:45 -08:00
// Create a linked phone number in the table list
function phoneFormatter ( value ) {
if ( value ) {
return '<a href="tel:' + value + '">' + value + '</a>' ;
}
}
2017-10-19 01:30:40 -07:00
function deployedLocationFormatter ( row , value ) {
if (( row ) && ( row != undefined )) {
return '<a href="{{ url(' / ') }}/locations/' + row . id + '"> ' + row . name + '</a>' ;
} else if ( value . rtd_location ) {
return '<a href="{{ url(' / ') }}/locations/' + value . rtd_location . id + '" data-tooltip="true" title="Default Location"> ' + value . rtd_location . name + '</a>' ;
}
}
2017-10-17 21:43:57 -07:00
function groupsAdminLinkFormatter ( value , row ) {
return '<a href="{{ url(' / ') }}/admin/groups/' + row . id + '"> ' + value + '</a>' ;
}
2018-03-05 16:26:40 -08:00
function assetTagLinkFormatter ( value , row ) {
return '<a href="{{ url(' / ') }}/hardware/' + row . asset . id + '"> ' + row . asset . asset_tag + '</a>' ;
}
function assetNameLinkFormatter ( value , row ) {
if (( row . asset ) && ( row . asset . name )) {
return '<a href="{{ url(' / ') }}/hardware/' + row . asset . id + '"> ' + row . asset . name + '</a>' ;
}
}
2018-05-01 21:35:07 -07:00
function trueFalseFormatter ( value ) {
2017-01-24 21:04:38 -08:00
if (( value ) && (( value == 'true' ) || ( value == '1' ))) {
2017-02-01 17:48:28 -08:00
return '<i class="fa fa-check text-success"></i>' ;
2017-01-24 21:04:38 -08:00
} else {
2017-02-01 17:48:28 -08:00
return '<i class="fa fa-times text-danger"></i>' ;
2017-01-18 19:28:35 -08:00
}
}
2018-05-01 21:35:07 -07:00
function dateDisplayFormatter ( value ) {
2017-03-03 17:29:41 -08:00
if ( value ) {
return value . formatted ;
}
}
2018-05-01 21:35:07 -07:00
function iconFormatter ( value ) {
2017-05-23 09:25:20 -07:00
if ( value ) {
2018-05-01 21:35:07 -07:00
return '<i class="' + value + ' icon-med"></i>' ;
2017-05-23 09:25:20 -07:00
}
}
2017-01-18 19:28:35 -08:00
2018-05-01 21:35:07 -07:00
function emailFormatter ( value ) {
2017-01-18 19:28:35 -08:00
if ( value ) {
return '<a href="mailto:' + value + '"> ' + value + '</a>' ;
}
}
2018-05-01 21:35:07 -07:00
function linkFormatter ( value ) {
2017-03-10 22:08:59 -08:00
if ( value ) {
return '<a href="' + value + '"> ' + value + '</a>' ;
}
}
2017-02-08 08:48:41 -08:00
function assetCompanyFilterFormatter ( value , row ) {
if ( value ) {
return '<a href="{{ url(' / ') }}/hardware/?company_id=' + row . id + '"> ' + value + '</a>' ;
}
}
function assetCompanyObjFilterFormatter ( value , row ) {
2017-11-22 06:20:51 -08:00
if (( row ) && ( row . company )) {
2017-02-08 08:48:41 -08:00
return '<a href="{{ url(' / ') }}/hardware/?company_id=' + row . company . id + '"> ' + row . company . name + '</a>' ;
}
}
function usersCompanyObjFilterFormatter ( value , row ) {
if ( value ) {
return '<a href="{{ url(' / ') }}/users/?company_id=' + row . id + '"> ' + value + '</a>' ;
} else {
return value ;
}
}
2017-07-26 16:47:47 -07:00
function employeeNumFormatter ( value , row ) {
2017-08-22 21:40:35 -07:00
2017-11-22 06:20:51 -08:00
if (( row ) && ( row . assigned_to ) && (( row . assigned_to . employee_number ))) {
2017-08-22 21:40:35 -07:00
return '<a href="{{ url(' / ') }}/users/' + row . assigned_to . id + '"> ' + row . assigned_to . employee_number + '</a>' ;
2017-07-26 16:47:47 -07:00
}
}
2017-02-08 08:48:41 -08:00
function orderNumberObjFilterFormatter ( value , row ) {
if ( value ) {
return '<a href="{{ url(' / ') }}/hardware/?order_number=' + row . order_number + '"> ' + row . order_number + '</a>' ;
}
}
2018-04-24 02:54:54 -07:00
function imageFormatter ( value ) {
2017-01-24 22:46:07 -08:00
if ( value ) {
2017-09-28 15:13:05 -07:00
return '<a href="' + value + '" data-toggle="lightbox" data-type="image"><img src="' + value + '" style="max-height: {{ $snipeSettings->thumbnail_max_h }}px; width: auto;" class="img-responsive"></a>' ;
2017-01-24 22:46:07 -08:00
}
}
2018-05-02 14:13:06 -07:00
function fileUploadFormatter ( value ) {
if (( value ) && ( value . url ) && ( value . inlineable )) {
return '<a href="' + value . url + '" data-toggle="lightbox" data-type="image"><img src="' + value . url + '" style="max-height: {{ $snipeSettings->thumbnail_max_h }}px; width: auto;" class="img-responsive"></a>' ;
} else if (( value ) && ( value . url )) {
return '<a href="' + value . url + '" class="btn btn-default"><i class="fa fa-download"></i></a>' ;
}
}
function fileUploadNameFormatter ( value ) {
console . dir ( value );
if (( value ) && ( value . filename ) && ( value . url )) {
return '<a href="' + value . url + '">' + value . filename + '</a>' ;
}
}
2017-10-18 06:24:36 -07:00
function sumFormatter ( data ) {
2018-02-16 13:22:55 -08:00
if ( Array . isArray ( data )) {
var field = this . field ;
var total_sum = data . reduce ( function ( sum , row ) {
return ( sum ) + ( parseFloat ( row [ field ]) || 0 );
}, 0 );
return total_sum . toFixed ( 2 );
}
return 'not an array' ;
2017-10-18 06:24:36 -07:00
}
2018-01-23 18:08:54 -08:00
2017-10-18 06:24:36 -07:00
2017-01-18 19:28:35 -08:00
$ ( function () {
$ ( '#bulkEdit' ) . click ( function () {
var selectedIds = $ ( '.snipe-table' ) . bootstrapTable ( 'getSelections' );
$ . each ( selectedIds , function ( key , value ) {
$ ( " #bulkForm " ) . append ( $ ( '<input type="hidden" name="ids[' + value . id + ']" value="' + value . id + '">' ));
});
});
});
2017-02-08 08:48:41 -08:00
2017-10-18 06:24:36 -07:00
// This is necessary to make the bootstrap tooltips work inside of the
// wenzhixin/bootstrap-table formatters
2017-07-08 13:21:13 -07:00
$ ( function () {
$ ( '#table' ) . on ( 'post-body.bs.table' , function () {
$ ( '[data-tooltip="true"]' ) . tooltip ({
container : 'body'
});
});
});
2017-02-08 08:48:41 -08:00
2017-10-18 06:24:36 -07:00
2016-11-23 05:56:08 -08:00
</ script >