add delete button

This commit is contained in:
King Kévin 2023-01-26 00:42:54 +01:00
parent 8f2027ca6e
commit 18d5aed9de
3 changed files with 55 additions and 1 deletions

View File

@ -40,6 +40,7 @@
<thead><tr><th>property</th><th>value(s)</th></tr></thead>
<tbody id="properties"></tbody>
</table>
<button type="button" onclick="delete_part()">delete part (including children)</button>
</div>
</td>
</tr>

View File

@ -144,3 +144,24 @@ function select()
}
}
function delete_part()
{
if (null == parts) {
return;
}
const results = document.getElementById('results');
if (results.selectedIndex < 0) {
return;
}
const part_selected = parseInt(results.options[results.selectedIndex].value);
const xhr = new XMLHttpRequest();
xhr.open('GET', '/delete/' + part_selected, true);
xhr.onload = function() {
search(); // refresh search
};
xhr.onerror = function() {
console.log("delete part failed");
};
xhr.send();
}

View File

@ -142,7 +142,7 @@ end
get '/search/:terms' do
terms = params['terms'].split(" ")
terms.keep_if {|term| term.length >= 3}
halt 404 if terms.empty?
halt 400 if terms.empty?
# search in names, description, and category
statements = []
statements << @db.prepare("SELECT id FROM part WHERE name LIKE ?")
@ -177,3 +177,35 @@ get '/search/:terms' do
parts.sort! {|x,y| x["name"] <=> y["name"]}
parts.to_json
end
def delete_part(id)
# first delete all children
statement = @db.prepare("SELECT id FROM part WHERE family = ?")
statement.execute(id).each do |row|
puts "child: #{row['id']}"
delete_part(row['id'])
puts "deleted"
end
# delete all fields
statements = []
statements << @db.prepare("DELETE FROM property_value WHERE part = ?")
statements << @db.prepare("DELETE FROM assembly WHERE assembled = ?")
statements << @db.prepare("DELETE FROM assembly WHERE component = ?")
statements << @db.prepare("DELETE FROM drawing WHERE part = ?")
statements << @db.prepare("DELETE FROM attachment WHERE part = ?")
statements << @db.prepare("DELETE FROM distribution WHERE part = ?")
statements << @db.prepare("DELETE FROM property_value WHERE part = ?")
statements << @db.prepare("DELETE FROM inventory WHERE part = ?")
statements << @db.prepare("DELETE FROM part WHERE id = ?")
statements.each do |statement|
statement.execute(id)
end
end
get '/delete/:id' do
statement = @db.prepare("SELECT id FROM part WHERE id = ?")
result = statement.execute(params['id'])
halt 400 if result.to_a.empty?
delete_part(params['id'])
return 200
end