let currentDataset = []; let currentTypes = []; let originalEditedItem = {}; function initValuesFromPHPDump() { currentDataset = json_dump.articles; // json_dump is set using PHP currentTypes = json_dump.types; console.log(currentDataset); console.log(currentTypes); generateTable(currentTypes); } $(document).ready(function () { initValuesFromPHPDump(); setEditFieldValues('', '', ''); }); function generateTable(dataset) { for (let i = 0; i < dataset.length; i++) { generateLine(dataset[i]); } } function generateLine(item) { $.selector_cache('#categoriesTable').append( '' + '' + item.id + '' + '' + item.name + '' + '' + '' + '' + '' + '' + '' ); } function addNewItem() { if (isItemInputFilled()) { let item = { id: $.selector_cache('#idInput').val(), name: $.selector_cache('#nameInput').val(), icon: $.selector_cache('#iconInput').val(), }; if (isIdAvailable(item.id)) { updateExistingItemsType(originalEditedItem.id, item.id); setEditFieldValues('', '', ''); currentTypes.push(item); generateLine(item); } } } function editItem(elem) { if (isItemInputEmpty()) { let id = elem.id.replace('edit_', ''); let item = getTypeOfId(id); originalEditedItem = item; setEditFieldValues(item.id, item.name, item.icon); removeItemFromList(item); // Move the item in the edit fields } } function deleteItem(elem) { let id = elem.id.replace('delete_', ''); let item = getTypeOfId(id); updateExistingItemsType(id, undefined); removeItemFromList(item); } function removeItemFromList(item) { currentTypes.splice(currentTypes.indexOf(item), 1); $('#row_' + item.id).remove(); } function setEditFieldValues(id, name, icon) { $.selector_cache('#idInput').val(id); $.selector_cache('#nameInput').val(name); $.selector_cache('#iconInput').val(icon); } function updateExistingItemsType(oldTypeID, newTypeID) { for (let i = 0; i < currentDataset.length; i++) { for (let k = 0; k < currentDataset[i].type.length; k++) { if (currentDataset[i].type[k] === oldTypeID) { console.log(newTypeID); if (newTypeID !== undefined) currentDataset[i].type[k] = newTypeID; else currentDataset[i].type.splice(k, 1); break; } } } } function getTypeOfId(id) { let item = {}; for (let i = 0; i < currentTypes.length; i++) { if (currentTypes[i].id === id) { item = currentTypes[i]; break; } } return item; } function isIdAvailable(id) { let isAvailable = true; for (let i = 0; i < currentTypes.length; i++) { if (currentTypes[i].id === id) { isAvailable = false; break; } } return isAvailable; } function isItemInputEmpty() { return $.selector_cache('#idInput').val() === '' && $.selector_cache('#nameInput').val() === '' && $.selector_cache('#iconInput').val() === ''; } function isItemInputFilled() { return $.selector_cache('#idInput').val() !== '' && $.selector_cache('#nameInput').val() !== '' && $.selector_cache('#iconInput').val() !== ''; } function saveDataset() { SaveManager.saveData(currentTypes, currentDataset); }