let defaultStock = [ { name: 'Granola', quantity: '2', price: '1.3', code: '7622210601988', type: [ 'Alimentaire', ] } ]; let currentDataset = []; $(document).ready(function () { currentDataset = defaultStock; generateTable(currentDataset); }); function generateTable(dataset) { for (let i = 0; i < dataset.length; i++) { generateLine(dataset[i]); } } function generateLine(item) { $.selector_cache('#stockTable').append( '' + '' + item.name + '' + '' + item.quantity + '' + '' + item.price + '' + '' + item.code + '' + 'LINK' + '' + '' + '' + '' + '' ); } function getItemOfCode(code) { let item = {}; for (let i = 0; i < currentDataset.length; i++) { if (currentDataset[i].code === code) { item = currentDataset[i]; break; } } return item; } function editItem(elem) { if (isItemInputEmpty()) { let code = elem.id.replace('edit_', ''); let item = getItemOfCode(code); console.log(item); setEditFieldValues(item.name, item.quantity, item.price, item.code); removeItemFromList(item); // Move the item in the edit fields } } function deleteItem(elem) { let code = elem.id.replace('delete_', ''); let item = getItemOfCode(code); console.log(item); removeItemFromList(item); } function removeItemFromList(item) { currentDataset.splice(currentDataset.indexOf(item), 1); $('#row_' + item.code).remove(); } function setEditFieldValues(name, quantity, price, code) { $.selector_cache('#nameInput').val(name); $.selector_cache('#quantityInput').val(quantity); $.selector_cache('#priceInput').val(price); $.selector_cache('#codeInput').val(code); } function isItemInputEmpty() { return $.selector_cache('#nameInput').val() === '' && $.selector_cache('#quantityInput').val() === '' && $.selector_cache('#priceInput').val() === '' && $.selector_cache('#codeInput').val() === ''; } function addNewItem() { let item = { name: $.selector_cache('#nameInput').val(), quantity: $.selector_cache('#quantityInput').val(), price: $.selector_cache('#priceInput').val(), code: $.selector_cache('#codeInput').val(), }; setEditFieldValues('', '', '', ''); currentDataset.push(item); generateLine(item); }