2019-09-15 16:40:54 +02:00
$ ( '#save-quconversion-button' ). on ( 'click' , function ( e )
{
e . preventDefault ();
var jsonData = $ ( '#quconversion-form' ). serializeJSON ();
jsonData . from_qu_id = $ ( "#from_qu_id" ). val ();
Grocy . FrontendHelpers . BeginUiBusy ( "quconversion-form" );
2020-04-24 10:41:50 -05:00
if ( $ ( "#create_inverse" ). is ( ":checked" ))
{
var inverse_to_qu_id = $ ( "#from_qu_id" ). val ();
var inverse_from_qu_id = $ ( "#to_qu_id" ). val ();
}
2019-09-15 16:40:54 +02:00
if ( Grocy . EditMode === 'create' )
{
Grocy . Api . Post ( 'objects/quantity_unit_conversions' , jsonData ,
function ( result )
{
Grocy . EditObjectId = result . created_object_id ;
Grocy . Components . UserfieldsForm . Save ( function ()
{
2020-11-08 19:00:12 +01:00
if ( $ ( "#create_inverse" ). is ( ":checked" ))
2019-09-15 16:40:54 +02:00
{
2020-11-08 19:00:12 +01:00
jsonData . to_qu_id = inverse_to_qu_id ;
jsonData . from_qu_id = inverse_from_qu_id ;
jsonData . factor = 1 / jsonData . factor ;
//Create Inverse
Grocy . Api . Post ( 'objects/quantity_unit_conversions' , jsonData ,
function ( result )
{
Grocy . EditObjectId = result . created_object_id ;
Grocy . Components . UserfieldsForm . Save ( function ()
{
if ( typeof GetUriParam ( "qu-unit" ) !== "undefined" )
{
if ( GetUriParam ( "embedded" ) !== undefined )
{
window . parent . postMessage ( WindowMessageBag ( "Reload" ), Grocy . BaseUrl );
}
else
{
window . location . href = U ( "/quantityunit/" + GetUriParam ( "qu-unit" ));
}
}
else
{
window . parent . postMessage ( WindowMessageBag ( "ProductQUConversionChanged" ), U ( "/product/" + GetUriParam ( "product" )));
window . parent . postMessage ( WindowMessageBag ( "CloseAllModals" ), U ( "/product/" + GetUriParam ( "product" )));
}
});
},
function ( xhr )
{
Grocy . FrontendHelpers . EndUiBusy ( "quconversion-form" );
Grocy . FrontendHelpers . ShowGenericError ( 'Error while saving, probably this item already exists' , xhr . response )
}
);
2019-09-15 16:40:54 +02:00
}
else
{
2020-11-08 19:00:12 +01:00
if ( typeof GetUriParam ( "qu-unit" ) !== "undefined" )
{
if ( GetUriParam ( "embedded" ) !== undefined )
{
window . parent . postMessage ( WindowMessageBag ( "Reload" ), Grocy . BaseUrl );
}
else
{
window . location . href = U ( "/quantityunit/" + GetUriParam ( "qu-unit" ));
}
}
else
{
window . parent . postMessage ( WindowMessageBag ( "ProductQUConversionChanged" ), U ( "/product/" + GetUriParam ( "product" )));
window . parent . postMessage ( WindowMessageBag ( "CloseAllModals" ), U ( "/product/" + GetUriParam ( "product" )));
}
2019-09-15 16:40:54 +02:00
}
});
},
function ( xhr )
{
Grocy . FrontendHelpers . EndUiBusy ( "quconversion-form" );
Grocy . FrontendHelpers . ShowGenericError ( 'Error while saving, probably this item already exists' , xhr . response )
}
);
}
else
{
Grocy . Api . Put ( 'objects/quantity_unit_conversions/' + Grocy . EditObjectId , jsonData ,
function ( result )
{
Grocy . Components . UserfieldsForm . Save ( function ()
{
if ( typeof GetUriParam ( "qu-unit" ) !== "undefined" )
{
2020-11-08 19:00:12 +01:00
if ( GetUriParam ( "embedded" ) !== undefined )
{
window . parent . postMessage ( WindowMessageBag ( "Reload" ), Grocy . BaseUrl );
}
else
{
window . location . href = U ( "/quantityunit/" + GetUriParam ( "qu-unit" ));
}
2019-09-15 16:40:54 +02:00
}
else
{
2020-08-17 14:47:33 -05:00
window . parent . postMessage ( WindowMessageBag ( "ProductQUConversionChanged" ), U ( "/product/" + GetUriParam ( "product" )));
window . parent . postMessage ( WindowMessageBag ( "CloseAllModals" ), U ( "/product/" + GetUriParam ( "product" )));
2019-09-15 16:40:54 +02:00
}
});
},
function ( xhr )
{
Grocy . FrontendHelpers . EndUiBusy ( "quconversion-form" );
Grocy . FrontendHelpers . ShowGenericError ( 'Error while saving, probably this item already exists' , xhr . response )
}
);
}
});
$ ( '#quconversion-form input' ). keyup ( function ( event )
{
$ ( '.input-group-qu' ). trigger ( 'change' );
Grocy . FrontendHelpers . ValidateForm ( 'quconversion-form' );
});
$ ( '#quconversion-form input' ). keydown ( function ( event )
{
if ( event . keyCode === 13 ) //Enter
{
event . preventDefault ();
if ( document . getElementById ( 'quconversion-form' ). checkValidity () === false ) //There is at least one validation error
{
return false ;
}
else
{
$ ( '#save-quconversion-button' ). click ();
}
}
});
2020-04-24 10:41:50 -05:00
$ ( "#create_inverse" ). on ( "change" , function ()
{
var value = $ ( this ). is ( ":checked" );
if ( value )
{
2020-11-08 19:00:12 +01:00
$ ( '#qu-conversion-inverse-info' ). removeClass ( 'd-none' );
2020-04-24 10:41:50 -05:00
}
else
{
$ ( '#qu-conversion-inverse-info' ). addClass ( 'd-none' );
}
});
2019-09-15 16:40:54 +02:00
$ ( '.input-group-qu' ). on ( 'change' , function ( e )
{
var fromQuId = $ ( "#from_qu_id" ). val ();
var toQuId = $ ( "#to_qu_id" ). val ();
var factor = $ ( '#factor' ). val ();
if ( fromQuId == toQuId )
{
$ ( "#to_qu_id" ). parent (). find ( ".invalid-feedback" ). text ( __t ( 'This cannot be equal to %s' , $ ( "#from_qu_id option:selected" ). text ()));
$ ( "#to_qu_id" )[ 0 ]. setCustomValidity ( "error" );
}
else
{
$ ( "#to_qu_id" )[ 0 ]. setCustomValidity ( "" );
}
if ( fromQuId && toQuId )
{
2020-11-10 18:11:33 +01:00
$ ( '#qu-conversion-info' ). text ( __t ( 'This means 1 %1$s is the same as %2$s %3$s' , $ ( "#from_qu_id option:selected" ). text (), parseFloat (( 1 * factor )). toLocaleString ({ minimumFractionDigits : 0 , maximumFractionDigits : Grocy . UserSettings . stock_decimal_places_amounts }), __n (( 1 * factor ). toLocaleString ({ minimumFractionDigits : 0 , maximumFractionDigits : Grocy . UserSettings . stock_decimal_places_amounts }), $ ( "#to_qu_id option:selected" ). text (), $ ( "#to_qu_id option:selected" ). data ( "plural-form" ))));
2019-09-15 16:40:54 +02:00
$ ( '#qu-conversion-info' ). removeClass ( 'd-none' );
2020-04-24 10:41:50 -05:00
if ( Grocy . EditMode === 'create' )
{
2020-11-10 18:11:33 +01:00
$ ( '#qu-conversion-inverse-info' ). text ( __t ( 'This means 1 %1$s is the same as %2$s %3$s' , $ ( "#to_qu_id option:selected" ). text (), parseFloat (( 1 / factor )). toLocaleString ({ minimumFractionDigits : 0 , maximumFractionDigits : Grocy . UserSettings . stock_decimal_places_amounts }), __n (( 1 / factor ). toString (), $ ( "#from_qu_id option:selected" ). text (), $ ( "#from_qu_id option:selected" ). data ( "plural-form" ))));
2020-04-24 10:41:50 -05:00
$ ( '#qu-conversion-inverse-info' ). removeClass ( 'd-none' );
}
2019-09-15 16:40:54 +02:00
}
else
{
$ ( '#qu-conversion-info' ). addClass ( 'd-none' );
2020-04-24 10:41:50 -05:00
$ ( '#qu-conversion-inverse-info' ). addClass ( 'd-none' );
2019-09-15 16:40:54 +02:00
}
Grocy . FrontendHelpers . ValidateForm ( 'quconversion-form' );
});
Grocy . Components . UserfieldsForm . Load ();
$ ( '.input-group-qu' ). trigger ( 'change' );
$ ( '#from_qu_id' ). focus ();
Grocy . FrontendHelpers . ValidateForm ( 'quconversion-form' );
2020-11-10 18:11:33 +01:00
if ( GetUriParam ( "qu-unit" ) !== undefined )
{
$ ( "#from_qu_id" ). attr ( "disabled" , "" );
}