Suchfeld für Telefonnummer hinzugefügt
This commit is contained in:
81
app.py
81
app.py
@@ -42,54 +42,51 @@ def index():
|
|||||||
@app.route('/search')
|
@app.route('/search')
|
||||||
def search():
|
def search():
|
||||||
try:
|
try:
|
||||||
# Spezifische Suchparameter
|
# Suchparameter aus der URL holen
|
||||||
name = request.args.get('name', '').lower()
|
name = request.args.get('name', '').strip()
|
||||||
ort = request.args.get('ort', '').lower()
|
ort = request.args.get('ort', '').strip()
|
||||||
kundennummer = request.args.get('kundennummer', '').lower()
|
kundennummer = request.args.get('kundennummer', '').strip()
|
||||||
fachrichtung = request.args.get('fachrichtung', '').lower()
|
fachrichtung = request.args.get('fachrichtung', '').strip()
|
||||||
|
telefon = request.args.get('telefon', '').strip()
|
||||||
|
query = request.args.get('q', '').strip()
|
||||||
|
|
||||||
# Allgemeine Suche (für die alte Funktionalität)
|
# Wenn keine spezifischen Suchkriterien angegeben sind, aber eine allgemeine Suche
|
||||||
query = request.args.get('q', '').lower()
|
if not any([name, ort, kundennummer, fachrichtung, telefon]) and query:
|
||||||
|
# Suche in allen relevanten Feldern
|
||||||
logger.info(f"Suche nach - Name: {name}, Ort: {ort}, Kundennummer: {kundennummer}, Fachrichtung: {fachrichtung}, Query: {query}")
|
mask = (
|
||||||
|
df['Vorname'].str.contains(query, case=False, na=False) |
|
||||||
df = load_data()
|
df['Nachname'].str.contains(query, case=False, na=False) |
|
||||||
if df is None:
|
df['Ort'].str.contains(query, case=False, na=False) |
|
||||||
return jsonify({"error": "Datenbank konnte nicht geladen werden"}), 500
|
df['Nummer'].astype(str).str.contains(query, case=False, na=False) |
|
||||||
|
df['Fachrichtung'].str.contains(query, case=False, na=False) |
|
||||||
# Basis-Mask (immer True)
|
df['Tel'].astype(str).str.contains(query, case=False, na=False)
|
||||||
mask = pd.Series(True, index=df.index)
|
|
||||||
|
|
||||||
# Spezifische Suchkriterien anwenden
|
|
||||||
if name:
|
|
||||||
name_mask = (
|
|
||||||
df['Vorname'].str.lower().str.contains(name, na=False) |
|
|
||||||
df['Nachname'].str.lower().str.contains(name, na=False)
|
|
||||||
)
|
)
|
||||||
mask &= name_mask
|
else:
|
||||||
|
# Spezifische Suche
|
||||||
|
mask = pd.Series(True, index=df.index)
|
||||||
|
|
||||||
if ort:
|
if name:
|
||||||
ort_mask = df['Ort'].str.lower().str.contains(ort, na=False)
|
name_mask = (
|
||||||
mask &= ort_mask
|
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||||
|
df['Nachname'].str.contains(name, case=False, na=False)
|
||||||
|
)
|
||||||
|
mask &= name_mask
|
||||||
|
|
||||||
if kundennummer:
|
if ort:
|
||||||
kunden_mask = df['Nummer'].astype(str).str.contains(kundennummer, na=False)
|
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||||
mask &= kunden_mask
|
mask &= ort_mask
|
||||||
|
|
||||||
if fachrichtung:
|
if kundennummer:
|
||||||
fach_mask = df['Fachrichtung'].str.lower().str.contains(fachrichtung, na=False)
|
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||||
mask &= fach_mask
|
mask &= kundennummer_mask
|
||||||
|
|
||||||
# Wenn eine allgemeine Suche vorhanden ist, diese zusätzlich anwenden
|
if fachrichtung:
|
||||||
if query:
|
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||||
query_mask = (
|
mask &= fachrichtung_mask
|
||||||
df['Vorname'].str.lower().str.contains(query, na=False) |
|
|
||||||
df['Nachname'].str.lower().str.contains(query, na=False) |
|
if telefon:
|
||||||
df['Fachrichtung'].str.lower().str.contains(query, na=False) |
|
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||||
df['Ort'].str.lower().str.contains(query, na=False) |
|
mask &= telefon_mask
|
||||||
df['Nummer'].astype(str).str.contains(query, na=False)
|
|
||||||
)
|
|
||||||
mask &= query_mask
|
|
||||||
|
|
||||||
results = df[mask].to_dict('records')
|
results = df[mask].to_dict('records')
|
||||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||||
|
@@ -168,6 +168,11 @@
|
|||||||
placeholder="Fachrichtung...">
|
placeholder="Fachrichtung...">
|
||||||
<i class="fa-solid fa-xmark reset-icon" id="fachrichtungReset"></i>
|
<i class="fa-solid fa-xmark reset-icon" id="fachrichtungReset"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="search-field">
|
||||||
|
<input type="text" id="telefonInput" class="form-control"
|
||||||
|
placeholder="Telefon...">
|
||||||
|
<i class="fa-solid fa-xmark reset-icon" id="telefonReset"></i>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="result-counts">
|
<div class="result-counts">
|
||||||
@@ -264,10 +269,11 @@
|
|||||||
const ort = document.getElementById('ortInput').value;
|
const ort = document.getElementById('ortInput').value;
|
||||||
const kundennummer = document.getElementById('kundennummerInput').value;
|
const kundennummer = document.getElementById('kundennummerInput').value;
|
||||||
const fachrichtung = document.getElementById('fachrichtungInput').value;
|
const fachrichtung = document.getElementById('fachrichtungInput').value;
|
||||||
|
const telefon = document.getElementById('telefonInput').value;
|
||||||
const query = document.getElementById('searchInput').value;
|
const query = document.getElementById('searchInput').value;
|
||||||
|
|
||||||
// Prüfe, ob mindestens ein Suchfeld ausgefüllt ist
|
// Prüfe, ob mindestens ein Suchfeld ausgefüllt ist
|
||||||
if (!name && !ort && !kundennummer && !fachrichtung && !query) {
|
if (!name && !ort && !kundennummer && !fachrichtung && !telefon && !query) {
|
||||||
document.getElementById('results').innerHTML = '';
|
document.getElementById('results').innerHTML = '';
|
||||||
lastResults = [];
|
lastResults = [];
|
||||||
updateResultCounts();
|
updateResultCounts();
|
||||||
@@ -284,6 +290,7 @@
|
|||||||
if (ort) params.append('ort', ort);
|
if (ort) params.append('ort', ort);
|
||||||
if (kundennummer) params.append('kundennummer', kundennummer);
|
if (kundennummer) params.append('kundennummer', kundennummer);
|
||||||
if (fachrichtung) params.append('fachrichtung', fachrichtung);
|
if (fachrichtung) params.append('fachrichtung', fachrichtung);
|
||||||
|
if (telefon) params.append('telefon', telefon);
|
||||||
if (query) params.append('q', query);
|
if (query) params.append('q', query);
|
||||||
|
|
||||||
fetch(`/search?${params.toString()}`)
|
fetch(`/search?${params.toString()}`)
|
||||||
@@ -352,6 +359,7 @@
|
|||||||
document.getElementById('ortInput'),
|
document.getElementById('ortInput'),
|
||||||
document.getElementById('kundennummerInput'),
|
document.getElementById('kundennummerInput'),
|
||||||
document.getElementById('fachrichtungInput'),
|
document.getElementById('fachrichtungInput'),
|
||||||
|
document.getElementById('telefonInput'),
|
||||||
document.getElementById('searchInput')
|
document.getElementById('searchInput')
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -360,6 +368,7 @@
|
|||||||
document.getElementById('ortReset'),
|
document.getElementById('ortReset'),
|
||||||
document.getElementById('kundennummerReset'),
|
document.getElementById('kundennummerReset'),
|
||||||
document.getElementById('fachrichtungReset'),
|
document.getElementById('fachrichtungReset'),
|
||||||
|
document.getElementById('telefonReset'),
|
||||||
document.getElementById('searchReset')
|
document.getElementById('searchReset')
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -386,15 +395,17 @@
|
|||||||
const ort = urlParams.get('ort');
|
const ort = urlParams.get('ort');
|
||||||
const kundennummer = urlParams.get('kundennummer');
|
const kundennummer = urlParams.get('kundennummer');
|
||||||
const fachrichtung = urlParams.get('fachrichtung');
|
const fachrichtung = urlParams.get('fachrichtung');
|
||||||
|
const telefon = urlParams.get('telefon');
|
||||||
const query = urlParams.get('q');
|
const query = urlParams.get('q');
|
||||||
|
|
||||||
if (name) document.getElementById('nameInput').value = name;
|
if (name) document.getElementById('nameInput').value = name;
|
||||||
if (ort) document.getElementById('ortInput').value = ort;
|
if (ort) document.getElementById('ortInput').value = ort;
|
||||||
if (kundennummer) document.getElementById('kundennummerInput').value = kundennummer;
|
if (kundennummer) document.getElementById('kundennummerInput').value = kundennummer;
|
||||||
if (fachrichtung) document.getElementById('fachrichtungInput').value = fachrichtung;
|
if (fachrichtung) document.getElementById('fachrichtungInput').value = fachrichtung;
|
||||||
|
if (telefon) document.getElementById('telefonInput').value = telefon;
|
||||||
if (query) document.getElementById('searchInput').value = query;
|
if (query) document.getElementById('searchInput').value = query;
|
||||||
|
|
||||||
if (name || ort || kundennummer || fachrichtung || query) {
|
if (name || ort || kundennummer || fachrichtung || telefon || query) {
|
||||||
searchCustomers();
|
searchCustomers();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user