135 lines
3.8 KiB
JavaScript
135 lines
3.8 KiB
JavaScript
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(
|
|
'<tr id="row_' + item.id + '">' +
|
|
'<td>' + item.id + '</td>' +
|
|
'<td>' + item.name + '</td>' +
|
|
'<td><span class="mdi mdi-' + item.icon + '"></span></td>' +
|
|
'<td>' +
|
|
'<button class="btn btn-danger" id="delete_' + item.id + '" onclick="deleteItem(this)"><i class="fas fa-times"></i></button>' +
|
|
'<button class="btn btn-primary" id="edit_' + item.id + '" onclick="editItem(this)"><i class="fas fa-edit"></i></button>' +
|
|
'</td>' +
|
|
'</tr>'
|
|
);
|
|
}
|
|
|
|
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);
|
|
}
|