127 lines
4.0 KiB
JavaScript
127 lines
4.0 KiB
JavaScript
var FitnessAdmin;
|
|
|
|
FitnessAdmin = {};
|
|
|
|
FitnessAdmin.InventoryItem = {};
|
|
|
|
FitnessAdmin.InventoryItem.Update = new function(){
|
|
|
|
var defaults = {
|
|
'selector_product' : '#product_autocomplete',
|
|
'url_find_inventory_item' : 'inventory-item/update-item',
|
|
"products" : [],
|
|
"url_save" : '',
|
|
"id_product": null
|
|
};
|
|
|
|
var _SELECTORS = {
|
|
INVENTORY_PRODUCT_NAME: '#inventory_product_name',
|
|
INVENTORYITEM_TYPE: '#inventoryitem-type',
|
|
INVENTORYITEM_COUNT: '#inventoryitem-count',
|
|
INVENTORY_FORM: '#inventory-product'
|
|
};
|
|
|
|
var inventoryItem = null;
|
|
|
|
this.init = function (options) {
|
|
defaults = $.extend(defaults,options);
|
|
createGUI();
|
|
preselectProduct();
|
|
};
|
|
|
|
var preselectProduct = function () {
|
|
if ( defaults.id_product ){
|
|
for (var i = 0; i < defaults.products.length ;i++ ){
|
|
var p = defaults.products[i];
|
|
if ( p.id_product == defaults.id_product){
|
|
$(defaults.selector_product).val(p.name);
|
|
}
|
|
}
|
|
}else{
|
|
$(_SELECTORS.INVENTORY_FORM).hide();
|
|
}
|
|
$(defaults.selector_product).focus().select();
|
|
};
|
|
|
|
var createGUI = function () {
|
|
initAutoComplete();
|
|
};
|
|
|
|
var initAutoComplete = function () {
|
|
var $input = $(defaults.selector_product);
|
|
$input.typeahead({source : defaults.products,
|
|
autoSelect: true,
|
|
items: 20,
|
|
minLength: 3
|
|
});
|
|
$input.change(function() {
|
|
var current = $input.typeahead("getActive");
|
|
$("#filter_text").val('');
|
|
if (current) {
|
|
// Some item from your model is active!
|
|
if (current.name == $input.val()) {
|
|
// This means the exact match is found. Use toLowerCase() if you want case insensitive match.
|
|
//noinspection JSUnresolvedVariable
|
|
console.info(current);
|
|
_findProduct(current.id_inventory_item);
|
|
} else {
|
|
// This means it is only a partial match, you can either add a new item
|
|
// or take the active if you don't want new items
|
|
inventoryItem = null;
|
|
renderForm();
|
|
}
|
|
} else {
|
|
// Nothing is active so it is a new value (or maybe empty value)
|
|
inventoryItem = null;
|
|
renderForm();
|
|
}
|
|
});
|
|
};
|
|
|
|
var selectInventoryItem = function (data) {
|
|
console.info('data',data);
|
|
inventoryItem = data;
|
|
};
|
|
|
|
var _findProduct = function (id){
|
|
var data, url;
|
|
|
|
url = defaults.url_find_inventory_item;
|
|
data = {
|
|
'id' : id
|
|
};
|
|
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: url,
|
|
data: data
|
|
}).then(selectInventoryItem).then(renderForm);
|
|
};
|
|
|
|
function renderForm( ) {
|
|
console.info( "render",inventoryItem);
|
|
var name = "",type = "",count = "";
|
|
if ( inventoryItem){
|
|
name = inventoryItem.productName;
|
|
type = inventoryItem.type;
|
|
if ( inventoryItem.count != null ){
|
|
count = inventoryItem.count;
|
|
}
|
|
}
|
|
$(_SELECTORS.INVENTORY_PRODUCT_NAME).html(name);
|
|
$(_SELECTORS.INVENTORYITEM_TYPE).val(type);
|
|
$(_SELECTORS.INVENTORYITEM_COUNT).val(count);
|
|
|
|
var formContainer = $(_SELECTORS.INVENTORY_FORM);
|
|
var form = $(_SELECTORS.INVENTORY_FORM).find('form');
|
|
|
|
if ( inventoryItem == null ){
|
|
formContainer.hide();
|
|
}else {
|
|
formContainer.show();
|
|
form.attr('action', defaults.url_save +"&id="+inventoryItem.id_inventory_item);
|
|
$(_SELECTORS.INVENTORYITEM_COUNT).focus().select();
|
|
}
|
|
}
|
|
|
|
}; |