diff --git a/src/app.py b/src/app.py index c4a588e..b9d2b71 100644 --- a/src/app.py +++ b/src/app.py @@ -45,6 +45,14 @@ def add_item(): # item not valid or can't be parsed return jsonify({'status': 1}), 400 +@app.route('/delete', methods=['POST']) +def del_item(): + print("deleting item") + data = request.get_json() + uuid = data.get('uuid') + delete_item(uuid) + return jsonify({'deleted': uuid}), 200 + @app.route('/datahistory',methods = ['GET']) def data_history_request(): if request.method == 'GET': diff --git a/src/db.py b/src/db.py index bd45a81..42fe655 100644 --- a/src/db.py +++ b/src/db.py @@ -122,6 +122,26 @@ def check_exist(itemid, skuid): else: return True +def delete_item(uuid): + ''' + delete item and its history from database + ''' + connection = connect_db() + cursor = connection.cursor() + cursor.execute(""" + DELETE + FROM history + WHERE uuid = %s + """, (uuid,)) + cursor.execute(""" + DELETE + FROM history + WHERE uuid = %s + """, (uuid,)) + cursor.close() + connection.commit() + connection.close() + def export_csv(): '''join item and history data from database and export it in ./output.csv''' diff --git a/web/app.js b/web/app.js index 02341c6..124e225 100644 --- a/web/app.js +++ b/web/app.js @@ -319,9 +319,7 @@ fetch_history().then(async function(data) { document.getElementById("addbutton").addEventListener("click", addItem); async function addItem() { - const apiUrl = `${currentUrl}app/add`; - const postData = { itemid: document.getElementById("additemid").value, attributes: document.getElementById("addattributes").value @@ -344,16 +342,41 @@ async function addItem() { console.error('Error during POST request:', error); }); - if (response.ok) { console.log(response); // reload window to display new item location.reload(); - } else { throw new Error('Error in server response'); } +} +async function delItem(uuid) { +const apiUrl = `${currentUrl}app/delete`; + const postData = { + uuid: uuid + }; + + const requestOptions = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(postData) + }; + + const response = await fetch(apiUrl, requestOptions) + .catch(error => { + console.error('Error during POST request:', error); + }); + + if (response.ok) { + console.log(response); + // reload window to stop displaying deleted item + location.reload(); + } else { + throw new Error('Error in server response'); + } } @@ -363,13 +386,11 @@ document.addEventListener('DOMContentLoaded', function () { const noBtn = document.getElementById('noBtn'); yesBtn.addEventListener('click', function () { // Add your function to execute on 'Yes' click - console.log('Yes clicked'); - console.log(del_key); + delItem(del_key); confirmationPopup.style.display = 'none'; }); noBtn.addEventListener('click', function () { // Add your function to execute on 'No' click - console.log('No clicked'); confirmationPopup.style.display = 'none'; }); });