Ultronprime commited on
Commit
572e913
·
verified ·
1 Parent(s): e9ca488

Update events.js

Browse files
Files changed (1) hide show
  1. events.js +40 -22
events.js CHANGED
@@ -1,13 +1,15 @@
1
  // events.js - Manages all event listeners
2
 
3
- import { appState, saveState } from './state.js';
4
  import { handleUpdateStock, handleRestock } from './services.js';
5
  import { refreshUI, showToast, renderReport } from './ui.js';
 
6
 
7
  export function attachAllListeners() {
8
  attachProductInputListeners();
9
  attachMaxStockEditListeners();
10
  attachRestockListeners();
 
11
  attachModalListeners();
12
  }
13
 
@@ -57,28 +59,42 @@ function attachMaxStockEditListeners() {
57
  }
58
 
59
  function attachRestockListeners() {
60
- const showRestockForm = (e) => {
61
- const parentEl = e.target.closest('[data-material-name]');
62
- const materialName = parentEl.dataset.materialName;
63
- const formContainer = parentEl.querySelector('.restock-form');
 
 
 
64
 
65
- if (formContainer.classList.contains('hidden')) {
66
- document.querySelectorAll('.restock-form').forEach(f => { f.classList.add('hidden'); f.innerHTML = ''; });
67
- formContainer.classList.remove('hidden');
68
- formContainer.innerHTML = `<div class="flex items-center gap-2"><input type="number" placeholder="Qty" class="input-field w-20"><button class="btn btn-primary text-xs confirm-restock-btn">Add</button></div>`;
69
- const input = formContainer.querySelector('input');
70
- input.focus();
71
- formContainer.querySelector('.confirm-restock-btn').addEventListener('click', () => { handleRestock(materialName, parseInt(input.value, 10)); });
72
- input.addEventListener('keydown', (event) => { if (event.key === 'Enter') handleRestock(materialName, parseInt(input.value, 10)); if (event.key === 'Escape') formContainer.classList.add('hidden'); });
73
- } else {
74
- formContainer.classList.add('hidden');
75
- formContainer.innerHTML = '';
76
- }
77
- };
78
- document.querySelectorAll('.restock-icon, .restock-btn-reorder').forEach(btn => {
 
 
 
 
79
  if (btn.dataset.listenerAttached) return;
80
  btn.dataset.listenerAttached = true;
81
- btn.addEventListener('click', showRestockForm);
 
 
 
 
 
 
 
82
  });
83
  }
84
 
@@ -86,12 +102,13 @@ function attachModalListeners() {
86
  const resetModal = document.getElementById('reset-modal');
87
  const reportsModal = document.getElementById('reports-modal');
88
 
 
89
  const showResetModalBtn = document.getElementById('show-reset-modal-btn');
90
  if (!showResetModalBtn.dataset.listenerAttachedForReset) {
91
  showResetModalBtn.addEventListener('click', () => resetModal.classList.remove('hidden'));
92
  resetModal.addEventListener('click', (e) => {
93
  const target = e.target.closest('button');
94
- if (target && target.id === 'cancel-reset-btn' || e.target.id === 'reset-modal') {
95
  resetModal.classList.add('hidden');
96
  }
97
  if (target && target.id === 'confirm-reset-btn') {
@@ -102,12 +119,13 @@ function attachModalListeners() {
102
  showResetModalBtn.dataset.listenerAttachedForReset = true;
103
  }
104
 
 
105
  const showReportsModalBtn = document.getElementById('show-reports-modal-btn');
106
  if (!showReportsModalBtn.dataset.listenerAttachedForReports) {
107
  showReportsModalBtn.addEventListener('click', () => reportsModal.classList.remove('hidden'));
108
  reportsModal.addEventListener('click', (e) => {
109
  const target = e.target.closest('button');
110
- if (target && target.id === 'close-reports-modal-btn' || e.target.id === 'reports-modal') {
111
  reportsModal.classList.add('hidden');
112
  }
113
  if (target && target.id === 'report-prod-summary') renderReport('production');
 
1
  // events.js - Manages all event listeners
2
 
3
+ import { appState, saveState, loadState } from './state.js';
4
  import { handleUpdateStock, handleRestock } from './services.js';
5
  import { refreshUI, showToast, renderReport } from './ui.js';
6
+ import { generatePurchaseOrder } from './purchaseOrderService.js';
7
 
8
  export function attachAllListeners() {
9
  attachProductInputListeners();
10
  attachMaxStockEditListeners();
11
  attachRestockListeners();
12
+ attachPurchaseOrderListeners();
13
  attachModalListeners();
14
  }
15
 
 
59
  }
60
 
61
  function attachRestockListeners() {
62
+ document.querySelectorAll('.restock-icon').forEach(btn => {
63
+ if (btn.dataset.listenerAttached) return;
64
+ btn.dataset.listenerAttached = true;
65
+ btn.addEventListener('click', (e) => {
66
+ const parentEl = e.target.closest('[data-material-name]');
67
+ const materialName = parentEl.dataset.materialName;
68
+ const formContainer = parentEl.querySelector('.restock-form');
69
 
70
+ if (formContainer.classList.contains('hidden')) {
71
+ document.querySelectorAll('.restock-form').forEach(f => { f.classList.add('hidden'); f.innerHTML = ''; });
72
+ formContainer.classList.remove('hidden');
73
+ formContainer.innerHTML = `<div class="flex items-center gap-2"><input type="number" placeholder="Qty" class="input-field w-20"><button class="btn btn-primary text-xs confirm-restock-btn">Add</button></div>`;
74
+ const input = formContainer.querySelector('input');
75
+ input.focus();
76
+ formContainer.querySelector('.confirm-restock-btn').addEventListener('click', () => { handleRestock(materialName, parseInt(input.value, 10)); });
77
+ input.addEventListener('keydown', (event) => { if (event.key === 'Enter') handleRestock(materialName, parseInt(input.value, 10)); if (event.key === 'Escape') formContainer.classList.add('hidden'); });
78
+ } else {
79
+ formContainer.classList.add('hidden');
80
+ formContainer.innerHTML = '';
81
+ }
82
+ });
83
+ });
84
+ }
85
+
86
+ function attachPurchaseOrderListeners() {
87
+ document.querySelectorAll('.generate-po-btn').forEach(btn => {
88
  if (btn.dataset.listenerAttached) return;
89
  btn.dataset.listenerAttached = true;
90
+ btn.addEventListener('click', (e) => {
91
+ const materialName = e.target.closest('[data-material-name]').dataset.materialName;
92
+ const material = appState.materials.find(m => m.name === materialName);
93
+ if (material) {
94
+ generatePurchaseOrder(material);
95
+ showToast(`Generated PO for ${material.name}`, 'success');
96
+ }
97
+ });
98
  });
99
  }
100
 
 
102
  const resetModal = document.getElementById('reset-modal');
103
  const reportsModal = document.getElementById('reports-modal');
104
 
105
+ // Reset Modal
106
  const showResetModalBtn = document.getElementById('show-reset-modal-btn');
107
  if (!showResetModalBtn.dataset.listenerAttachedForReset) {
108
  showResetModalBtn.addEventListener('click', () => resetModal.classList.remove('hidden'));
109
  resetModal.addEventListener('click', (e) => {
110
  const target = e.target.closest('button');
111
+ if ((target && target.id === 'cancel-reset-btn') || e.target.id === 'reset-modal') {
112
  resetModal.classList.add('hidden');
113
  }
114
  if (target && target.id === 'confirm-reset-btn') {
 
119
  showResetModalBtn.dataset.listenerAttachedForReset = true;
120
  }
121
 
122
+ // Reports Modal
123
  const showReportsModalBtn = document.getElementById('show-reports-modal-btn');
124
  if (!showReportsModalBtn.dataset.listenerAttachedForReports) {
125
  showReportsModalBtn.addEventListener('click', () => reportsModal.classList.remove('hidden'));
126
  reportsModal.addEventListener('click', (e) => {
127
  const target = e.target.closest('button');
128
+ if ((target && target.id === 'close-reports-modal-btn') || e.target.id === 'reports-modal') {
129
  reportsModal.classList.add('hidden');
130
  }
131
  if (target && target.id === 'report-prod-summary') renderReport('production');