2018-07-09 19:27:22 +02:00
var batteriesOverviewTable = $ ( '#batteries-overview-table' ) . DataTable ( {
'paginate' : false ,
2018-05-13 09:38:22 +02:00
'order' : [ [ 2 , 'desc' ] ] ,
'columnDefs' : [
{ 'orderable' : false , 'targets' : 0 }
] ,
2018-07-10 20:37:13 +02:00
'language' : JSON . parse ( L ( 'datatables_localization' ) ) ,
2018-07-14 08:48:14 +02:00
'scrollY' : false ,
2018-07-14 10:17:12 +02:00
'colReorder' : true ,
'stateSave' : true
2017-11-05 12:41:00 +01:00
} ) ;
2018-05-13 09:38:22 +02:00
2018-07-09 19:27:22 +02:00
$ ( "#search" ) . on ( "keyup" , function ( )
{
var value = $ ( this ) . val ( ) ;
if ( value === "all" )
{
value = "" ;
}
batteriesOverviewTable . search ( value ) . draw ( ) ;
} ) ;
2018-05-13 09:38:22 +02:00
$ ( document ) . on ( 'click' , '.track-charge-cycle-button' , function ( e )
{
var batteryId = $ ( e . currentTarget ) . attr ( 'data-battery-id' ) ;
var batteryName = $ ( e . currentTarget ) . attr ( 'data-battery-name' ) ;
var trackedTime = moment ( ) . format ( 'YYYY-MM-DD HH:mm:ss' ) ;
Grocy . Api . Get ( 'batteries/track-charge-cycle/' + batteryId + '?tracked_time=' + trackedTime ,
function ( result )
{
$ ( '#battery-' + batteryId + '-last-tracked-time' ) . parent ( ) . effect ( 'highlight' , { } , 500 ) ;
$ ( '#battery-' + batteryId + '-last-tracked-time' ) . fadeOut ( 500 , function ( ) {
$ ( this ) . text ( trackedTime ) . fadeIn ( 500 ) ;
} ) ;
$ ( '#battery-' + batteryId + '-last-tracked-time-timeago' ) . attr ( 'datetime' , trackedTime ) ;
RefreshContextualTimeago ( ) ;
toastr . success ( L ( 'Tracked charge cylce of battery #1 on #2' , batteryName , trackedTime ) ) ;
2018-08-04 15:44:58 +02:00
RefreshStatistics ( ) ;
2018-05-13 09:38:22 +02:00
} ,
function ( xhr )
{
console . error ( xhr ) ;
}
) ;
} ) ;
2018-08-04 15:44:58 +02:00
function RefreshStatistics ( )
{
var nextXDays = $ ( "#info-due-batteries" ) . data ( "next-x-days" ) ;
Grocy . Api . Get ( 'batteries/get-current' ,
function ( result )
{
var dueCount = 0 ;
var overdueCount = 0 ;
var now = moment ( ) ;
var nextXDaysThreshold = moment ( ) . add ( nextXDays , "days" ) ;
result . forEach ( element => {
var date = moment ( element . next _estimated _charge _time ) ;
if ( date . isBefore ( now ) )
{
overdueCount ++ ;
}
else if ( date . isBefore ( nextXDaysThreshold ) )
{
dueCount ++ ;
}
} ) ;
$ ( "#info-due-batteries" ) . text ( Pluralize ( dueCount , L ( '#1 battery is due to be charged within the next #2 days' , dueCount , nextXDays ) , L ( '#1 batteries are due to be charged within the next #2 days' , dueCount , nextXDays ) ) ) ;
$ ( "#info-overdue-batteries" ) . text ( Pluralize ( overdueCount , L ( '#1 battery is overdue to be charged' , overdueCount ) , L ( '#1 batteries are overdue to be charged' , overdueCount ) ) ) ;
} ,
function ( xhr )
{
console . error ( xhr ) ;
}
) ;
}
RefreshStatistics ( ) ;