Create Inverse QU Conversions (#788)

This commit is contained in:
kriddles 2020-04-24 10:41:50 -05:00 committed by GitHub
parent 60f321d9c2
commit 385e7287fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 1 deletions

View File

@ -5,6 +5,11 @@
var jsonData = $('#quconversion-form').serializeJSON();
jsonData.from_qu_id = $("#from_qu_id").val();
Grocy.FrontendHelpers.BeginUiBusy("quconversion-form");
if ($("#create_inverse").is(":checked"))
{
var inverse_to_qu_id = $("#from_qu_id").val();
var inverse_from_qu_id = $("#to_qu_id").val();
}
if (Grocy.EditMode === 'create')
{
@ -30,6 +35,36 @@
Grocy.FrontendHelpers.ShowGenericError('Error while saving, probably this item already exists', xhr.response)
}
);
if ($("#create_inverse").is(":checked"))
{
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")
{
window.location.href = U("/quantityunit/" + GetUriParam("qu-unit"));
}
else
{
window.location.href = U("/product/" + GetUriParam("product"));
}
});
},
function(xhr)
{
Grocy.FrontendHelpers.EndUiBusy("quconversion-form");
Grocy.FrontendHelpers.ShowGenericError('Error while saving, probably this item already exists', xhr.response)
}
);
}
}
else
{
@ -80,6 +115,20 @@ $('#quconversion-form input').keydown(function(event)
}
});
$("#create_inverse").on("change", function()
{
var value = $(this).is(":checked");
if (value)
{
$('#qu-conversion-inverse-info').removeClass('d-none');
}
else
{
$('#qu-conversion-inverse-info').addClass('d-none');
}
});
$('.input-group-qu').on('change', function(e)
{
var fromQuId = $("#from_qu_id").val();
@ -100,10 +149,17 @@ $('.input-group-qu').on('change', function(e)
{
$('#qu-conversion-info').text(__t('This means 1 %1$s is the same as %2$s %3$s', $("#from_qu_id option:selected").text(), (1 * factor).toString(), __n((1 * factor).toString(), $("#to_qu_id option:selected").text(), $("#to_qu_id option:selected").data("plural-form"))));
$('#qu-conversion-info').removeClass('d-none');
if (Grocy.EditMode === 'create')
{
$('#qu-conversion-inverse-info').text(__t('This means the inverse of 1 %1$s is the same as %2$s %3$s will also be created', $("#to_qu_id option:selected").text(), (1 / factor).toString(), __n((1 / factor).toString(), $("#from_qu_id option:selected").text(), $("#from_qu_id option:selected").data("plural-form"))));
$('#qu-conversion-inverse-info').removeClass('d-none');
}
}
else
{
$('#qu-conversion-info').addClass('d-none');
$('#qu-conversion-inverse-info').addClass('d-none');
}
Grocy.FrontendHelpers.ValidateForm('quconversion-form');

View File

@ -41,7 +41,7 @@
<select required disabled class="form-control input-group-qu" id="from_qu_id" name="from_qu_id">
<option></option>
@foreach($quantityunits as $quantityunit)
<option @if(($product != null && $quantityunit->id == $product->qu_id_stock) || ($defaultQuUnit != null && $quantityunit->id == $defaultQuUnit->id))) selected="selected" @endif value="{{ $quantityunit->id }}">{{ $quantityunit->name }}</option>
<option @if(($product != null && $quantityunit->id == $product->qu_id_stock) || ($defaultQuUnit != null && $quantityunit->id == $defaultQuUnit->id))) selected="selected" @endif value="{{ $quantityunit->id }}" data-plural-form="{{ $quantityunit->name_plural }}">{{ $quantityunit->name }}</option>
@endforeach
</select>
<div class="invalid-feedback">{{ $__t('A quantity unit is required') }}</div>
@ -70,6 +70,13 @@
'additionalCssClasses' => 'input-group-qu'
))
<div class="checkbox @if($mode == 'edit') d-none @endif">
<label for="create_inverse">
<input type="checkbox" id="create_inverse" name="create_inverse:skip" checked> {{ $__t('Create Inverse QU Conversion') }}
</label>
<p id="qu-conversion-inverse-info" class="form-text text-info d-none"></p>
</div>
@include('components.userfieldsform', array(
'userfields' => $userfields,
'entity' => 'quantity_unit_conversions'