Site du proximo, utilisé pour gérer le stock.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

categories.js 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. let currentDataset = [];
  2. let currentTypes = [];
  3. let originalEditedItem = {};
  4. function initValuesFromPHPDump() {
  5. currentDataset = json_dump.articles; // json_dump is set using PHP
  6. currentTypes = json_dump.types;
  7. console.log(currentDataset);
  8. console.log(currentTypes);
  9. generateTable(currentTypes);
  10. }
  11. $(document).ready(function () {
  12. initValuesFromPHPDump();
  13. setEditFieldValues('', '', '');
  14. });
  15. function generateTable(dataset) {
  16. for (let i = 0; i < dataset.length; i++) {
  17. generateLine(dataset[i]);
  18. }
  19. }
  20. function generateLine(item) {
  21. $.selector_cache('#categoriesTable').append(
  22. '<tr id="row_' + item.id + '">' +
  23. '<td>' + item.id + '</td>' +
  24. '<td>' + item.name + '</td>' +
  25. '<td><span class="mdi mdi-' + item.icon + '"></span></td>' +
  26. '<td>' +
  27. '<button class="btn btn-danger" id="delete_' + item.id + '" onclick="deleteItem(this)"><i class="fas fa-times"></i></button>' +
  28. '<button class="btn btn-primary" id="edit_' + item.id + '" onclick="editItem(this)"><i class="fas fa-edit"></i></button>' +
  29. '</td>' +
  30. '</tr>'
  31. );
  32. }
  33. function addNewItem() {
  34. if (isItemInputFilled()) {
  35. let item = {
  36. id: $.selector_cache('#idInput').val(),
  37. name: $.selector_cache('#nameInput').val(),
  38. icon: $.selector_cache('#iconInput').val(),
  39. };
  40. if (isIdAvailable(item.id)) {
  41. updateExistingItemsType(originalEditedItem.id, item.id);
  42. setEditFieldValues('', '', '');
  43. currentTypes.push(item);
  44. generateLine(item);
  45. }
  46. }
  47. }
  48. function editItem(elem) {
  49. if (isItemInputEmpty()) {
  50. let id = elem.id.replace('edit_', '');
  51. let item = getTypeOfId(id);
  52. originalEditedItem = item;
  53. setEditFieldValues(item.id, item.name, item.icon);
  54. removeItemFromList(item); // Move the item in the edit fields
  55. }
  56. }
  57. function deleteItem(elem) {
  58. let id = elem.id.replace('delete_', '');
  59. let item = getTypeOfId(id);
  60. updateExistingItemsType(id, undefined);
  61. removeItemFromList(item);
  62. }
  63. function removeItemFromList(item) {
  64. currentTypes.splice(currentTypes.indexOf(item), 1);
  65. $('#row_' + item.id).remove();
  66. }
  67. function setEditFieldValues(id, name, icon) {
  68. $.selector_cache('#idInput').val(id);
  69. $.selector_cache('#nameInput').val(name);
  70. $.selector_cache('#iconInput').val(icon);
  71. }
  72. function updateExistingItemsType(oldTypeID, newTypeID) {
  73. for (let i = 0; i < currentDataset.length; i++) {
  74. for (let k = 0; k < currentDataset[i].type.length; k++) {
  75. if (currentDataset[i].type[k] === oldTypeID) {
  76. console.log(newTypeID);
  77. if (newTypeID !== undefined)
  78. currentDataset[i].type[k] = newTypeID;
  79. else
  80. currentDataset[i].type.splice(k, 1);
  81. break;
  82. }
  83. }
  84. }
  85. }
  86. function getTypeOfId(id) {
  87. let item = {};
  88. for (let i = 0; i < currentTypes.length; i++) {
  89. if (currentTypes[i].id === id) {
  90. item = currentTypes[i];
  91. break;
  92. }
  93. }
  94. return item;
  95. }
  96. function isIdAvailable(id) {
  97. let isAvailable = true;
  98. for (let i = 0; i < currentTypes.length; i++) {
  99. if (currentTypes[i].id === id) {
  100. isAvailable = false;
  101. break;
  102. }
  103. }
  104. return isAvailable;
  105. }
  106. function isItemInputEmpty() {
  107. return $.selector_cache('#idInput').val() === '' &&
  108. $.selector_cache('#nameInput').val() === '' &&
  109. $.selector_cache('#iconInput').val() === '';
  110. }
  111. function isItemInputFilled() {
  112. return $.selector_cache('#idInput').val() !== '' &&
  113. $.selector_cache('#nameInput').val() !== '' &&
  114. $.selector_cache('#iconInput').val() !== '';
  115. }
  116. function saveDataset() {
  117. SaveManager.saveData(currentTypes, currentDataset);
  118. }