Fixed removing entry if missing is 0

This commit is contained in:
FrederikBaerentsen 2024-03-04 12:17:19 -05:00
parent a8cc82f7cb
commit 172e371656
4 changed files with 50 additions and 10 deletions

28
app.py
View File

@ -1,4 +1,4 @@
from flask import Flask, request, jsonify, render_template
from flask import Flask, request, redirect, jsonify, render_template
import json
from pprint import pprint as pp
from pathlib import Path
@ -54,17 +54,33 @@ def save_number(tmp):
data = '{"brick" : {"ID":"' + part_num + '","is_spare": "' + is_spare + '","color_name": "' + color + '","amount":"' + number + '"}}'
for i in json_file['unit'][int(index)]['bricks']['missing']:
if i['brick']['ID'] == part_num and i['brick']['is_spare'] == is_spare and i['brick']['color_name'] == color:
print(i)
if len(json_file['unit'][int(index)]['bricks']['missing']) == 0:
json_file['unit'][int(index)]['bricks']['missing'].append(json.loads(data))
print(json_file)
elif number == '0':
for idx,i in enumerate(json_file['unit'][int(index)]['bricks']['missing']):
if i['brick']['ID'] == part_num and i['brick']['is_spare'] == is_spare and i['brick']['color_name'] == color:
json_file['unit'][int(index)]['bricks']['missing'].pop(0)
else:
found = False
for idx,i in enumerate(json_file['unit'][int(index)]['bricks']['missing']):
if not found and i['brick']['ID'] == part_num and i['brick']['is_spare'] == is_spare and i['brick']['color_name'] == color:
print('found one ')
print(part_num,i['brick']['ID'])
print(is_spare,i['brick']['is_spare'])
print(color,i['brick']['color_name'])
json_file['unit'][int(index)]['bricks']['missing'].append(json.loads(data))
json_file['unit'][int(index)]['bricks']['missing'][idx]['brick']['amount'] = number
found = True
if not found:
json_file['unit'][int(index)]['bricks']['missing'].append(json.loads(data))
if not number == '':
with open('./info/'+tmp+'.json', 'w') as dump_file:
json.dump(json_file,dump_file)
return ('', 204)
return redirect('/{}'.format(tmp))
if __name__ == '__main__':
app.run(host='192.168.10.109', debug=True, port=3333)

View File

@ -9,4 +9,4 @@
}
}
]
}
}

View File

@ -193,6 +193,17 @@ td img{
max-height: 90%;
}
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
/* Firefox */
input[type=number] {
-moz-appearance: textfield;
}
</style>

View File

@ -21,7 +21,7 @@
{% if brick.is_spare == False %}
<tr>
{% if brick.element_id == None %}
<td><img src="{{ '/static/none.jpg' }}" style="height: 50px; width: auto;"></td>
<td><img src="{{ '/static/none.jpg' }}" class="lightbox-trigger" style="height: 50px; width: auto;"></td>
{% else %}
<td><img src="{{ '/static/parts/' + brick.element_id + '.jpg' }}" class="lightbox-trigger" style="height: 50px; width: auto;"></td>
{% endif %}
@ -34,7 +34,7 @@
<td class="centered-cell">
<div class="inputContainer">
{% set ns = namespace(count='') %}
<form action="/{{ tmp }}/saveNumber" method="post">
<form id="number-form" action="/{{ tmp }}/saveNumber" method="post">
<input type="hidden" name="brick.part.part_num" value="{{ brick.part.part_num }}">
<input type="hidden" name="count" value="{{ i }}">
<input type="hidden" name="index" value="{{ loop.index0 }}">
@ -50,7 +50,7 @@
{% endif %}
{% endfor %}
<div class='inputField'>
<input type="text" id="numberInput" name="numberInput" value={{ ns.count }}>
<input type="number" style="text-align:center;" id="numberInput" name="numberInput" value="{{ ns.count }}" pattern="\d+" required>
<button class="square-button" type="submit">
<img src="/static/save.svg" alt="Save Icon">
</button>
@ -196,6 +196,19 @@ document.addEventListener('DOMContentLoaded', function () {
});
});
document.addEventListener('DOMContentLoaded', function () {
const numberInput = document.getElementById('numberInput');
// Add event listener to input to prevent non-numeric input
numberInput.addEventListener('input', function () {
// Remove non-numeric characters
this.value = this.value.replace(/\D/g, '');
});
// Force numeric keyboard on mobile devices
numberInput.setAttribute('inputmode', 'numeric');
});
</script>
{% endblock %}