From 5161680b911953b11481ecba27c8414db463cd24 Mon Sep 17 00:00:00 2001 From: Magdalena Draszczyk Date: Thu, 2 May 2024 14:50:03 +0100 Subject: [PATCH 1/2] "Queue DOM structure changed - still not working" --- src/queue/queue-data-structure.js | 28 ++++++++++++--- src/queue/queue-dom.js | 58 ++++++++++++++++++++++++------- src/stack/stack-data-structure.js | 27 +++++++++++--- 3 files changed, 91 insertions(+), 22 deletions(-) diff --git a/src/queue/queue-data-structure.js b/src/queue/queue-data-structure.js index 98ac0fd0..a68b03f0 100644 --- a/src/queue/queue-data-structure.js +++ b/src/queue/queue-data-structure.js @@ -5,23 +5,41 @@ class Queue { } canEnqueue() { - // ... your code goes here + if (this.queueControl.length < this.MAX_SIZE) { + return true + } else { + return false + } } isEmpty() { - // ... your code goes here + if(this.queueControl.length === 0) { + return true + } else { + return false + } } enqueue(item) { - // ... your code goes here + if (this.canEnqueue() === true) { + this.queueControl.push(item) + } + else { + throw new Error('QUEUE_OVERFLOW') + } + return this.queueControl } dequeue() { - // ... your code goes here + if (this.isEmpty() === false) { + return this.queueControl.shift() + } else { + throw new Error('QUEUE_UNDERFLOW') + } } display() { - // ... your code goes here + return this.queueControl } } diff --git a/src/queue/queue-dom.js b/src/queue/queue-dom.js index 236675b7..0270654f 100644 --- a/src/queue/queue-dom.js +++ b/src/queue/queue-dom.js @@ -10,38 +10,72 @@ const dequeue = document.querySelector('.btn-take-dequeue'); const queue = new Queue(); const clearQueueInput = () => { - // ... your code goes here + queueInput.value = ''; }; const generateListQueue = () => { - // ... your code goes here + warningTopQueue.style.display = 'none'; + warningBottomQueue.style.display = 'none'; + queueUL.innerHTML = ''; + let length = queue.display().length; + let size = queue.MAX_SIZE - length; + queue.display().forEach(item => { + let li = document.createElement('li'); + li.className = 'active'; + li.innerText = item; + stackList.appendChild(li); + }); + for (let i=0; i < size; i++) { + let li = document.createElement('li'); + li.className = 'inactive'; + li.innerHTML = ' '; + stackList.appendChild(li); + } }; generateListQueue(); const generateWarningQueue = (type) => { if (type === 'underflow') { - // ... your code goes here + warningBottomQueue.style.display = 'block'; + warningBottomQueue.innerText = type; + } else if (type === 'overflow') { - // ... your code goes here + warningTopQueue.style.display = 'block' + warningTopQueue.innerText = type; } }; const addToQueue = () => { - try { - // ... your code goes here - } catch (error) { - // there was an overflow error, handle it + if(queue.push(queueInput.value) === 'Queue Overflow') { + generateWarningQueue('overflow'); + } else { + clearQueueInput(); + generateListQueue(); } }; +/* try { + clearQueueInput(); + generateListQueue(); + } catch (error) { + generateWarningQueue('overflow') + } */ + const removeFromQueue = () => { - try { - // ... your code goes here - } catch (error) { - // there was an underflow error, handle it + if(queue.pop() === 'Queue Underflow'){ + generateWarningQueue('underflow'); + } else { + generateListQueue(); } }; +/* try { + generateListQueue(); + } catch (error) { + generateWarningQueue('underflow') + } */ + + addQueue.addEventListener('click', addToQueue); dequeue.addEventListener('click', removeFromQueue); diff --git a/src/stack/stack-data-structure.js b/src/stack/stack-data-structure.js index 1106f6f3..a8a8cb94 100644 --- a/src/stack/stack-data-structure.js +++ b/src/stack/stack-data-structure.js @@ -5,23 +5,40 @@ class Stack { } canPush() { - // ... your code goes here + if (this.stackControl.length < this.MAX_SIZE) { + return true + } else { + return false + } } isEmpty() { - // ... your code goes here + if (this.stackControl.length === 0) { + return true + } else { + return false + } } push(item) { - // ... your code goes here + if (this.canPush() === true) { + this.stackControl.push(item) + } else { + throw new Error('STACK_OVERFLOW') + } + return this.stackControl } pop() { - // ... your code goes here + if(this.isEmpty() === false) { + return this.stackControl.pop() + } else { + throw new Error('STACK_UNDERFLOW') + } } display() { - // ... your code goes here + return this.stackControl } } From 5da623d612155eb3ee03c6e134f3e4349f5c1f1b Mon Sep 17 00:00:00 2001 From: Magdalena Draszczyk Date: Thu, 2 May 2024 15:04:32 +0100 Subject: [PATCH 2/2] Queue working --- src/queue/queue-dom.js | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/queue/queue-dom.js b/src/queue/queue-dom.js index 0270654f..98d82079 100644 --- a/src/queue/queue-dom.js +++ b/src/queue/queue-dom.js @@ -23,13 +23,13 @@ const generateListQueue = () => { let li = document.createElement('li'); li.className = 'active'; li.innerText = item; - stackList.appendChild(li); + queueUL.appendChild(li); }); for (let i=0; i < size; i++) { let li = document.createElement('li'); li.className = 'inactive'; li.innerHTML = ' '; - stackList.appendChild(li); + queueUL.appendChild(li); } }; @@ -47,33 +47,23 @@ const generateWarningQueue = (type) => { }; const addToQueue = () => { - if(queue.push(queueInput.value) === 'Queue Overflow') { - generateWarningQueue('overflow'); - } else { - clearQueueInput(); - generateListQueue(); - } -}; -/* try { + try { + queue.enqueue(queueInput.value) clearQueueInput(); generateListQueue(); } catch (error) { generateWarningQueue('overflow') - } */ - - -const removeFromQueue = () => { - if(queue.pop() === 'Queue Underflow'){ - generateWarningQueue('underflow'); - } else { - generateListQueue(); } }; -/* try { + +const removeFromQueue = () => { + try { + queue.dequeue() generateListQueue(); } catch (error) { generateWarningQueue('underflow') - } */ + } +};