grocy/public/viewjs/batterytracking.js
Bernd Bestel 91d8eaeb74
Squashed commit
Improve journal pages loading time (new date range filter)
Various small style adjustments (meal plan page and others)
Pulled German translations from Transifex
Show the shopping list total value (closes #1309)
Make it possible to copy recipes (closes #714)
Implemented optional "auto decimal separator for price inputs" (closes #1345)
Removed table grouped column fixed order restriction (closes #1402)
Don't filter out style, class, id attributes of html text (closes #1298)
Added product picture as column on the stock overview page (closes #1283)
Added grocycodes also for chores and batteries (+ camera barcode scanning for /choretracking and /batterytracking, this now closes #221)
2021-07-13 19:29:23 +02:00

159 lines
4.1 KiB
JavaScript

$('#save-batterytracking-button').on('click', function(e)
{
e.preventDefault();
if ($(".combobox-menu-visible").length)
{
return;
}
var jsonForm = $('#batterytracking-form').serializeJSON();
Grocy.FrontendHelpers.BeginUiBusy("batterytracking-form");
Grocy.Api.Get('batteries/' + jsonForm.battery_id,
function(batteryDetails)
{
Grocy.Api.Post('batteries/' + jsonForm.battery_id + '/charge', { 'tracked_time': $('#tracked_time').find('input').val() },
function(result)
{
Grocy.FrontendHelpers.EndUiBusy("batterytracking-form");
toastr.success(__t('Tracked charge cycle of battery %1$s on %2$s', batteryDetails.battery.name, $('#tracked_time').find('input').val()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoChargeCycle(' + result.id + ')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
Grocy.Components.BatteryCard.Refresh($('#battery_id').val());
$('#battery_id').val('');
$('#battery_id_text_input').focus();
$('#battery_id_text_input').val('');
$('#tracked_time').find('input').val(moment().format('YYYY-MM-DD HH:mm:ss'));
$('#tracked_time').find('input').trigger('change');
$('#battery_id_text_input').trigger('change');
Grocy.FrontendHelpers.ValidateForm('batterytracking-form');
},
function(xhr)
{
Grocy.FrontendHelpers.EndUiBusy("batterytracking-form");
console.error(xhr);
}
);
},
function(xhr)
{
Grocy.FrontendHelpers.EndUiBusy("batterytracking-form");
console.error(xhr);
}
);
});
$('#battery_id').on('change', function(e)
{
var input = $('#battery_id_text_input').val().toString();
$('#battery_id_text_input').val(input);
$('#battery_id').data('combobox').refresh();
var batteryId = $(e.target).val();
if (batteryId)
{
Grocy.Components.BatteryCard.Refresh(batteryId);
$('#tracked_time').find('input').focus();
Grocy.FrontendHelpers.ValidateForm('batterytracking-form');
}
});
$('.combobox').combobox({
appendId: '_text_input',
bsVersion: '4',
clearIfNoMatch: false
});
$('#battery_id').val('');
$('#battery_id_text_input').focus();
$('#battery_id_text_input').val('');
$('#battery_id_text_input').trigger('change');
Grocy.Components.DateTimePicker.GetInputElement().trigger('input');
Grocy.FrontendHelpers.ValidateForm('batterytracking-form');
$('#batterytracking-form input').keyup(function(event)
{
Grocy.FrontendHelpers.ValidateForm('batterytracking-form');
});
$('#batterytracking-form input').keydown(function(event)
{
if (event.keyCode === 13) //Enter
{
event.preventDefault();
if (document.getElementById('batterytracking-form').checkValidity() === false) //There is at least one validation error
{
return false;
}
else
{
$('#save-batterytracking-button').click();
}
}
});
$('#tracked_time').find('input').on('keypress', function(e)
{
Grocy.FrontendHelpers.ValidateForm('batterytracking-form');
});
$(document).on("Grocy.BarcodeScanned", function(e, barcode, target)
{
if (!(target == "@batterypicker" || target == "undefined" || target == undefined)) // Default target
{
return;
}
$('#battery_id_text_input').val(barcode).trigger('change');
});
function UndoChargeCycle(chargeCycleId)
{
Grocy.Api.Post('batteries/charge-cycles/' + chargeCycleId.toString() + '/undo', {},
function(result)
{
toastr.success(__t("Charge cycle successfully undone"));
},
function(xhr)
{
console.error(xhr);
}
);
};
$('#battery_id_text_input').on('blur', function(e)
{
if ($('#battery_id').hasClass("combobox-menu-visible"))
{
return;
}
var input = $('#battery_id_text_input').val().toString();
var possibleOptionElement = [];
// grocycode handling
if (input.startsWith("grcy"))
{
var gc = input.split(":");
if (gc[1] == "b")
{
possibleOptionElement = $("#battery_id option[value=\"" + gc[2] + "\"]").first();
}
}
if (possibleOptionElement.length > 0)
{
$('#battery_id').val(possibleOptionElement.val());
$('#battery_id').data('combobox').refresh();
$('#battery_id').trigger('change');
}
else
{
$('#battery_id').val(null);
$('#battery_id_text_input').val("");
$('#battery_id').data('combobox').refresh();
$('#battery_id').trigger('change');
}
});