Add duplicate detection when adding items
- normalizeName() strips punctuation and normalizes whitespace/case - findDuplicates() checks for matching normalized names - Shows confirmation dialog if similar item exists 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
31
index.html
31
index.html
@@ -993,6 +993,22 @@
|
|||||||
return div.innerHTML;
|
return div.innerHTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function normalizeName(name) {
|
||||||
|
return name
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/[^\w\s]/g, '') // Remove punctuation
|
||||||
|
.replace(/\s+/g, ' ') // Normalize whitespace
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
function findDuplicates(name, excludeId = null) {
|
||||||
|
const normalized = normalizeName(name);
|
||||||
|
return inventory.filter(item => {
|
||||||
|
if (excludeId && item.id === excludeId) return false;
|
||||||
|
return normalizeName(item.name) === normalized;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function updateStats() {
|
function updateStats() {
|
||||||
const total = inventory.length;
|
const total = inventory.length;
|
||||||
const inStock = inventory.filter(i => !i.outOfStock).length;
|
const inStock = inventory.filter(i => !i.outOfStock).length;
|
||||||
@@ -1225,9 +1241,20 @@
|
|||||||
showToast('Please enter an item name');
|
showToast('Please enter an item name');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for duplicates when adding new items
|
||||||
|
if (!editingId) {
|
||||||
|
const duplicates = findDuplicates(name);
|
||||||
|
if (duplicates.length > 0) {
|
||||||
|
const dupNames = duplicates.map(d => d.name).join(', ');
|
||||||
|
if (!confirm(`Similar item exists: "${dupNames}"\n\nAdd anyway?`)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
showLoading();
|
showLoading();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (editingId) {
|
if (editingId) {
|
||||||
// Update existing
|
// Update existing
|
||||||
|
|||||||
Reference in New Issue
Block a user