scinote-web/app/assets/javascripts/repositories/stock.js

95 lines
3.1 KiB
JavaScript
Raw Normal View History

/* global dropdownSelector */
var RepositoryStockValues = (function() {
const UNIT_SELECTOR = '#repository-stock-value-units';
function initManageAction() {
$('.repository-show').on('click', '.manage-repository-stock-value-link', function() {
$.ajax({
url: $(this).closest('tr').data('manage-stock-url'),
type: 'GET',
dataType: 'json',
success: (result) => {
var $manageModal = $('#manage-repository-stock-value-modal');
$manageModal.find('.modal-content').html(result.html);
dropdownSelector.init(UNIT_SELECTOR, {
singleSelect: true,
closeOnSelect: true,
selectAppearance: 'simple',
onChange: function() {
$('.stock-final-container .units').text(dropdownSelector.getValues(UNIT_SELECTOR));
}
});
$manageModal.find('form').on('ajax:success', function() {
var dataTable = $('.dataTable').DataTable();
$manageModal.modal('hide');
dataTable.ajax.reload();
});
$('.stock-operator-option').click(function() {
var $stockInput = $('#stock-input-amount');
$('.stock-operator-option').removeClass('btn-primary').addClass('btn-secondary');
$(this).removeClass('btn-secondary').addClass('btn-primary');
$stockInput.data('operator', $(this).data('operator'));
dropdownSelector.selectValues(UNIT_SELECTOR, $('#initial_units').val());
switch ($(this).data('operator')) {
case 'set':
$stockInput.val($stockInput.data('currentAmount'));
dropdownSelector.enableSelector(UNIT_SELECTOR);
break;
case 'add':
$stockInput.val('');
dropdownSelector.disableSelector(UNIT_SELECTOR);
break;
case 'remove':
$stockInput.val('');
dropdownSelector.disableSelector(UNIT_SELECTOR);
break;
default:
break;
}
});
$('#stock-input-amount').on('input', function() {
var currentAmount = parseFloat($(this).data('currentAmount'));
var inputAmount = parseFloat($(this).val());
var newAmount;
if (!inputAmount) return;
switch ($(this).data('operator')) {
case 'set':
newAmount = inputAmount;
break;
case 'add':
newAmount = currentAmount + inputAmount;
break;
case 'remove':
newAmount = currentAmount - inputAmount;
break;
default:
newAmount = currentAmount;
break;
}
$('#repository_stock_value_amount').val(newAmount);
$('.stock-final-container .value').text(newAmount);
});
$manageModal.modal('show');
}
});
});
}
return {
init: () => {
initManageAction();
}
};
}());
RepositoryStockValues.init();