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.

stock.js 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. let listContainer = $("#dataList");
  2. let displayedItems = [];
  3. let fetchedData = {};
  4. let currentMode = "buy";
  5. let sellClass = 'btn-danger';
  6. let buyClass = 'btn-success';
  7. $(document).ready(async function () {
  8. await generateList();
  9. $('#buyButton').addClass(buyClass);
  10. $('#saveButton').addClass(buyClass);
  11. $('#buyButton').on('click', function () {
  12. if (!$(this).hasClass(buyClass)) {
  13. $(this).addClass(buyClass);
  14. $('#sellButton').removeClass(sellClass);
  15. $('#saveButton').removeClass(sellClass).addClass(buyClass);
  16. currentMode = "buy";
  17. }
  18. });
  19. $('#sellButton').on('click', function () {
  20. if (!$(this).hasClass(sellClass)) {
  21. $(this).addClass(sellClass);
  22. $('#buyButton').removeClass(buyClass);
  23. $('#saveButton').removeClass(buyClass).addClass(sellClass);
  24. currentMode = "sell";
  25. }
  26. });
  27. $('#saveButton').on('click', function () {
  28. let values = getValues();
  29. let message = 'Voulez vous vraimer ajouter ces articles au stock ?<br><ul>';
  30. let color = 'green';
  31. if (currentMode === "sell"){
  32. message = 'Voulez vous vraiment supprimer ces articles du stock ?<br><ul>';
  33. color = 'red';
  34. }
  35. for (let i = 0; i < values.length; i++) {
  36. if (values[i]['value'] > 0){
  37. message += '<li>' + fetchedData['articles'][i]['name'] + ' : ' + values[i]['value'] + '</li>'
  38. }
  39. }
  40. message += '</ul>';
  41. $.confirm({
  42. title: 'Confirmer',
  43. content: message,
  44. type: color,
  45. buttons: {
  46. formSubmit: {
  47. text: 'Confirmer',
  48. action: async function () {
  49. await AjaxManager.saveStockChange(getFormattedValues(values), currentMode === "sell");
  50. await generateList();
  51. }
  52. },
  53. cancel: {
  54. text: 'Annuler',
  55. }
  56. }
  57. });
  58. });
  59. });
  60. function getListItem(item) {
  61. const inputId = 'stockDiffInput' + item['id'];
  62. const labelId = 'stockDiffLabel' + item['id'];
  63. return (
  64. '<div class="grid-item">' +
  65. '<div class="grid-container">' +
  66. '<div class="img-container">' +
  67. '<img class="list-image" src="../uploaded_images/' + item['id'] + '.jpg"/>' +
  68. '</div>' +
  69. '<h5>' + item['name'] + '</h5>' +
  70. '<p>Quantité : <strong>' + item['quantity'] + '</strong></p>' +
  71. '<label for="' + inputId + '" id="' + labelId + '">À Ajouter :</label>' +
  72. '<input id="' + inputId + '" placeholder="Nombre" type="number" value="0" class="form-control" onchange="onStockDiffInputChange(this)"/>' +
  73. '</div>' +
  74. '</div>');
  75. }
  76. function onStockDiffInputChange(input) {
  77. if ($(input).val() < 0 || isNaN(parseInt($(input).val()))) {
  78. $(input).val(0);
  79. }
  80. }
  81. async function generateList() {
  82. fetchedData = await AjaxManager.getAll();
  83. displayedItems = [];
  84. listContainer.html('');
  85. for (let i = 0; i < fetchedData['articles'].length; i++) {
  86. let listItem = getListItem(fetchedData['articles'][i]);
  87. displayedItems.push($(listItem));
  88. listContainer.append(displayedItems[i]);
  89. }
  90. }
  91. function getValues() {
  92. let values = [];
  93. for (let i = 0; i < displayedItems.length; i++) {
  94. let value = displayedItems[i].find('input').val();
  95. let id = fetchedData['articles'][i]['id'];
  96. values.push({id: id, value: value});
  97. }
  98. return values;
  99. }
  100. function getFormattedValues(values) {
  101. let newValues = [];
  102. for (let i = 0; i < values.length; i++) {
  103. if (values[i]['value'] > 0)
  104. newValues.push(values[i]);
  105. }
  106. return newValues;
  107. }