2018-07-09 19:27:22 +02:00
var shoppingListTable = $ ( '#shoppinglist-table' ) . DataTable ( {
'paginate' : false ,
'order' : [ [ 1 , 'asc' ] ] ,
2018-09-24 13:02:52 +02:00
"orderFixed" : [ [ 3 , 'asc' ] ] ,
2018-07-09 19:27:22 +02:00
'columnDefs' : [
2018-09-24 13:02:52 +02:00
{ 'orderable' : false , 'targets' : 0 } ,
{ 'visible' : false , 'targets' : 3 }
2018-07-09 19:27:22 +02:00
] ,
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 ,
2018-09-08 08:56:32 +02:00
'stateSave' : true ,
'stateSaveParams' : function ( settings , data )
{
data . search . search = "" ;
2018-09-25 08:50:28 +02:00
data . columns . forEach ( column =>
{
column . search . search = "" ;
} ) ;
2018-09-24 13:02:52 +02:00
} ,
'rowGroup' : {
dataSrc : 3
2018-09-08 08:56:32 +02:00
}
2018-07-09 19:27:22 +02:00
} ) ;
2019-01-05 20:06:35 +01:00
$ ( '#shoppinglist-table tbody' ) . removeClass ( "d-none" ) ;
2019-03-04 17:43:12 +01:00
shoppingListTable . columns . adjust ( ) . draw ( ) ;
2018-07-09 19:27:22 +02:00
$ ( "#search" ) . on ( "keyup" , function ( )
{
var value = $ ( this ) . val ( ) ;
if ( value === "all" )
{
value = "" ;
}
2019-01-19 00:37:21 -07:00
2018-07-09 19:27:22 +02:00
shoppingListTable . search ( value ) . draw ( ) ;
} ) ;
2018-09-24 19:13:53 +02:00
$ ( "#status-filter" ) . on ( "change" , function ( )
{
var value = $ ( this ) . val ( ) ;
if ( value === "all" )
{
value = "" ;
}
// Transfer CSS classes of selected element to dropdown element (for background)
$ ( this ) . attr ( "class" , $ ( "#" + $ ( this ) . attr ( "id" ) + " option[value='" + value + "']" ) . attr ( "class" ) + " form-control" ) ;
2019-01-19 00:37:21 -07:00
2018-09-24 19:13:53 +02:00
shoppingListTable . column ( 4 ) . search ( value ) . draw ( ) ;
} ) ;
2019-04-20 17:04:40 +02:00
$ ( "#selected-shopping-list" ) . on ( "change" , function ( )
{
var value = $ ( this ) . val ( ) ;
window . location . href = U ( '/shoppinglist?list=' + value ) ;
} ) ;
2018-09-24 19:13:53 +02:00
$ ( ".status-filter-button" ) . on ( "click" , function ( )
{
var value = $ ( this ) . data ( "status-filter" ) ;
$ ( "#status-filter" ) . val ( value ) ;
$ ( "#status-filter" ) . trigger ( "change" ) ;
} ) ;
2019-04-20 17:04:40 +02:00
$ ( "#delete-selected-shopping-list" ) . on ( "click" , function ( )
{
var objectName = $ ( "#selected-shopping-list option:selected" ) . text ( ) ;
var objectId = $ ( "#selected-shopping-list" ) . val ( ) ;
bootbox . confirm ( {
message : L ( 'Are you sure to delete shopping list "#1"?' , objectName ) ,
buttons : {
confirm : {
label : L ( 'Yes' ) ,
className : 'btn-success'
} ,
cancel : {
label : L ( 'No' ) ,
className : 'btn-danger'
}
} ,
callback : function ( result )
{
if ( result === true )
{
Grocy . Api . Delete ( 'objects/shopping_lists/' + objectId , { } ,
function ( result )
{
window . location . href = U ( '/shoppinglist' ) ;
} ,
function ( xhr )
{
console . error ( xhr ) ;
}
) ;
}
}
} ) ;
} ) ;
$ ( document ) . on ( 'click' , '.shoppinglist-delete-button' , function ( e )
2017-04-21 15:36:04 +02:00
{
2018-09-24 09:30:26 +02:00
e . preventDefault ( ) ;
2019-01-19 00:37:21 -07:00
2018-08-11 14:07:44 +02:00
var shoppingListItemId = $ ( e . currentTarget ) . attr ( 'data-shoppinglist-id' ) ;
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . BeginUiBusy ( ) ;
2018-08-11 14:07:44 +02:00
2019-01-19 14:51:51 +01:00
Grocy . Api . Delete ( 'objects/shopping_list/' + shoppingListItemId , { } ,
2017-04-21 15:36:04 +02:00
function ( result )
{
2018-08-11 14:07:44 +02:00
$ ( '#shoppinglistitem-' + shoppingListItemId + '-row' ) . fadeOut ( 500 , function ( )
{
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . EndUiBusy ( ) ;
2018-08-11 14:07:44 +02:00
$ ( this ) . remove ( ) ;
2018-11-17 14:50:52 +01:00
OnListItemRemoved ( ) ;
2018-08-11 14:07:44 +02:00
} ) ;
2017-04-21 15:36:04 +02:00
} ,
function ( xhr )
{
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . EndUiBusy ( ) ;
2017-04-21 15:36:04 +02:00
console . error ( xhr ) ;
}
) ;
} ) ;
$ ( document ) . on ( 'click' , '#add-products-below-min-stock-amount' , function ( e )
{
2019-04-20 17:04:40 +02:00
Grocy . Api . Post ( 'stock/shoppinglist/add-missing-products' , { "list_id" : $ ( "#selected-shopping-list" ) . val ( ) } ,
2017-04-21 15:36:04 +02:00
function ( result )
{
2019-04-20 17:04:40 +02:00
window . location . href = U ( '/shoppinglist?list=' + $ ( "#selected-shopping-list" ) . val ( ) ) ;
2017-04-21 15:36:04 +02:00
} ,
function ( xhr )
{
console . error ( xhr ) ;
}
) ;
} ) ;
2018-07-15 08:29:26 +02:00
$ ( document ) . on ( 'click' , '#clear-shopping-list' , function ( e )
{
bootbox . confirm ( {
2019-04-20 17:04:40 +02:00
message : L ( 'Are you sure to empty shopping list "#1"?' , $ ( "#selected-shopping-list option:selected" ) . text ( ) ) ,
2018-07-15 08:29:26 +02:00
buttons : {
confirm : {
label : L ( 'Yes' ) ,
className : 'btn-success'
} ,
cancel : {
label : L ( 'No' ) ,
className : 'btn-danger'
}
} ,
callback : function ( result )
{
if ( result === true )
{
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . BeginUiBusy ( ) ;
2019-04-20 17:04:40 +02:00
Grocy . Api . Post ( 'stock/shoppinglist/clear' , { "list_id" : $ ( "#selected-shopping-list" ) . val ( ) } ,
2018-07-15 08:29:26 +02:00
function ( result )
{
2018-08-11 14:16:11 +02:00
$ ( '#shoppinglist-table tbody tr' ) . fadeOut ( 500 , function ( )
{
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . EndUiBusy ( ) ;
2018-08-11 14:16:11 +02:00
$ ( this ) . remove ( ) ;
2018-11-17 14:50:52 +01:00
OnListItemRemoved ( ) ;
2018-08-11 14:16:11 +02:00
} ) ;
2018-07-15 08:29:26 +02:00
} ,
function ( xhr )
{
2018-11-24 19:40:50 +01:00
Grocy . FrontendHelpers . EndUiBusy ( ) ;
2018-07-15 08:29:26 +02:00
console . error ( xhr ) ;
}
) ;
}
}
} ) ;
} ) ;
2018-11-14 21:40:17 +01:00
2018-11-17 14:50:52 +01:00
$ ( document ) . on ( 'click' , '.shopping-list-stock-add-workflow-list-item-button' , function ( e )
2018-11-14 21:40:17 +01:00
{
2018-11-17 14:50:52 +01:00
e . preventDefault ( ) ;
2019-01-19 00:37:21 -07:00
2018-11-17 14:50:52 +01:00
var href = $ ( e . currentTarget ) . attr ( 'href' ) ;
$ ( "#shopping-list-stock-add-workflow-purchase-form-frame" ) . attr ( "src" , href ) ;
$ ( "#shopping-list-stock-add-workflow-modal" ) . modal ( "show" ) ;
if ( Grocy . ShoppingListToStockWorkflowAll )
{
2018-11-18 14:19:50 +01:00
$ ( "#shopping-list-stock-add-workflow-purchase-item-count" ) . removeClass ( "d-none" ) ;
2018-11-17 14:50:52 +01:00
$ ( "#shopping-list-stock-add-workflow-purchase-item-count" ) . text ( L ( "Adding shopping list item #1 of #2" , Grocy . ShoppingListToStockWorkflowCurrent , Grocy . ShoppingListToStockWorkflowCount ) ) ;
2018-11-26 20:02:01 +01:00
$ ( "#shopping-list-stock-add-workflow-skip-button" ) . removeClass ( "d-none" ) ;
}
else
{
$ ( "#shopping-list-stock-add-workflow-skip-button" ) . addClass ( "d-none" ) ;
2018-11-17 14:50:52 +01:00
}
} ) ;
Grocy . ShoppingListToStockWorkflowAll = false ;
Grocy . ShoppingListToStockWorkflowCount = 0 ;
Grocy . ShoppingListToStockWorkflowCurrent = 0 ;
$ ( document ) . on ( 'click' , '#add-all-items-to-stock-button' , function ( e )
{
Grocy . ShoppingListToStockWorkflowAll = true ;
Grocy . ShoppingListToStockWorkflowCount = $ ( ".shopping-list-stock-add-workflow-list-item-button" ) . length ;
Grocy . ShoppingListToStockWorkflowCurrent ++ ;
$ ( ".shopping-list-stock-add-workflow-list-item-button" ) . first ( ) . click ( ) ;
} ) ;
2018-11-26 20:02:01 +01:00
$ ( "#shopping-list-stock-add-workflow-modal" ) . on ( "hidden.bs.modal" , function ( e )
{
Grocy . ShoppingListToStockWorkflowAll = false ;
Grocy . ShoppingListToStockWorkflowCount = 0 ;
Grocy . ShoppingListToStockWorkflowCurrent = 0 ;
} )
2018-11-17 14:50:52 +01:00
$ ( window ) . on ( "message" , function ( e )
{
var data = e . originalEvent . data ;
2019-01-19 00:37:21 -07:00
2018-11-17 14:50:52 +01:00
if ( data . Message === "AfterItemAdded" )
{
$ ( ".shoppinglist-delete-button[data-shoppinglist-id='" + data . Payload + "']" ) . click ( ) ;
}
else if ( data . Message === "Ready" )
{
if ( ! Grocy . ShoppingListToStockWorkflowAll )
{
$ ( "#shopping-list-stock-add-workflow-modal" ) . modal ( "hide" ) ;
}
else
{
Grocy . ShoppingListToStockWorkflowCurrent ++ ;
if ( Grocy . ShoppingListToStockWorkflowCurrent <= Grocy . ShoppingListToStockWorkflowCount )
{
$ ( ".shopping-list-stock-add-workflow-list-item-button" ) [ 1 ] . click ( ) ;
}
else
{
$ ( "#shopping-list-stock-add-workflow-modal" ) . modal ( "hide" ) ;
}
}
}
else if ( data . Message === "ShowSuccessMessage" )
{
toastr . success ( data . Payload ) ;
}
} ) ;
2018-11-26 20:02:01 +01:00
$ ( document ) . on ( 'click' , '#shopping-list-stock-add-workflow-skip-button' , function ( e )
{
e . preventDefault ( ) ;
2019-01-19 00:37:21 -07:00
2018-11-26 20:02:01 +01:00
window . postMessage ( WindowMessageBag ( "Ready" ) , Grocy . BaseUrl ) ;
} ) ;
2018-11-17 14:50:52 +01:00
function OnListItemRemoved ( )
{
if ( $ ( ".shopping-list-stock-add-workflow-list-item-button" ) . length === 0 )
{
$ ( "#add-all-items-to-stock-button" ) . addClass ( "disabled" ) ;
}
2018-11-14 21:40:17 +01:00
}
2018-11-17 14:50:52 +01:00
OnListItemRemoved ( ) ;