From 0285f0a520dd0bb380c9fc69688411bbbbc6cdea Mon Sep 17 00:00:00 2001 From: elpatron Date: Mon, 17 Mar 2025 20:54:15 +0100 Subject: [PATCH] =?UTF-8?q?Suchfeld=20f=C3=BCr=20Telefonnummer=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 83 +++++++++++++++++++++----------------------- templates/index.html | 15 ++++++-- 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/app.py b/app.py index 72983f3..58ccc64 100644 --- a/app.py +++ b/app.py @@ -42,54 +42,51 @@ def index(): @app.route('/search') def search(): try: - # Spezifische Suchparameter - name = request.args.get('name', '').lower() - ort = request.args.get('ort', '').lower() - kundennummer = request.args.get('kundennummer', '').lower() - fachrichtung = request.args.get('fachrichtung', '').lower() - - # Allgemeine Suche (für die alte Funktionalität) - query = request.args.get('q', '').lower() - - logger.info(f"Suche nach - Name: {name}, Ort: {ort}, Kundennummer: {kundennummer}, Fachrichtung: {fachrichtung}, Query: {query}") - - df = load_data() - if df is None: - return jsonify({"error": "Datenbank konnte nicht geladen werden"}), 500 - - # Basis-Mask (immer True) - 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) + # Suchparameter aus der URL holen + name = request.args.get('name', '').strip() + ort = request.args.get('ort', '').strip() + kundennummer = request.args.get('kundennummer', '').strip() + fachrichtung = request.args.get('fachrichtung', '').strip() + telefon = request.args.get('telefon', '').strip() + query = request.args.get('q', '').strip() + + # Wenn keine spezifischen Suchkriterien angegeben sind, aber eine allgemeine Suche + if not any([name, ort, kundennummer, fachrichtung, telefon]) and query: + # Suche in allen relevanten Feldern + mask = ( + df['Vorname'].str.contains(query, case=False, na=False) | + df['Nachname'].str.contains(query, case=False, na=False) | + df['Ort'].str.contains(query, case=False, na=False) | + df['Nummer'].astype(str).str.contains(query, case=False, na=False) | + df['Fachrichtung'].str.contains(query, case=False, na=False) | + df['Tel'].astype(str).str.contains(query, case=False, na=False) ) - mask &= name_mask + else: + # Spezifische Suche + mask = pd.Series(True, index=df.index) - if ort: - ort_mask = df['Ort'].str.lower().str.contains(ort, na=False) - mask &= ort_mask + if name: + name_mask = ( + df['Vorname'].str.contains(name, case=False, na=False) | + df['Nachname'].str.contains(name, case=False, na=False) + ) + mask &= name_mask - if kundennummer: - kunden_mask = df['Nummer'].astype(str).str.contains(kundennummer, na=False) - mask &= kunden_mask + if ort: + ort_mask = df['Ort'].str.contains(ort, case=False, na=False) + mask &= ort_mask - if fachrichtung: - fach_mask = df['Fachrichtung'].str.lower().str.contains(fachrichtung, na=False) - mask &= fach_mask + if kundennummer: + kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False) + mask &= kundennummer_mask - # Wenn eine allgemeine Suche vorhanden ist, diese zusätzlich anwenden - if query: - query_mask = ( - df['Vorname'].str.lower().str.contains(query, na=False) | - df['Nachname'].str.lower().str.contains(query, na=False) | - df['Fachrichtung'].str.lower().str.contains(query, na=False) | - df['Ort'].str.lower().str.contains(query, na=False) | - df['Nummer'].astype(str).str.contains(query, na=False) - ) - mask &= query_mask + if fachrichtung: + fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False) + mask &= fachrichtung_mask + + if telefon: + telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False) + mask &= telefon_mask results = df[mask].to_dict('records') logger.info(f"{len(results)} Ergebnisse gefunden") diff --git a/templates/index.html b/templates/index.html index 7dbfc26..04fea3c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -168,6 +168,11 @@ placeholder="Fachrichtung..."> +
+ + +
@@ -264,10 +269,11 @@ const ort = document.getElementById('ortInput').value; const kundennummer = document.getElementById('kundennummerInput').value; const fachrichtung = document.getElementById('fachrichtungInput').value; + const telefon = document.getElementById('telefonInput').value; const query = document.getElementById('searchInput').value; // 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 = ''; lastResults = []; updateResultCounts(); @@ -284,6 +290,7 @@ if (ort) params.append('ort', ort); if (kundennummer) params.append('kundennummer', kundennummer); if (fachrichtung) params.append('fachrichtung', fachrichtung); + if (telefon) params.append('telefon', telefon); if (query) params.append('q', query); fetch(`/search?${params.toString()}`) @@ -352,6 +359,7 @@ document.getElementById('ortInput'), document.getElementById('kundennummerInput'), document.getElementById('fachrichtungInput'), + document.getElementById('telefonInput'), document.getElementById('searchInput') ]; @@ -360,6 +368,7 @@ document.getElementById('ortReset'), document.getElementById('kundennummerReset'), document.getElementById('fachrichtungReset'), + document.getElementById('telefonReset'), document.getElementById('searchReset') ]; @@ -386,15 +395,17 @@ const ort = urlParams.get('ort'); const kundennummer = urlParams.get('kundennummer'); const fachrichtung = urlParams.get('fachrichtung'); + const telefon = urlParams.get('telefon'); const query = urlParams.get('q'); if (name) document.getElementById('nameInput').value = name; if (ort) document.getElementById('ortInput').value = ort; if (kundennummer) document.getElementById('kundennummerInput').value = kundennummer; if (fachrichtung) document.getElementById('fachrichtungInput').value = fachrichtung; + if (telefon) document.getElementById('telefonInput').value = telefon; if (query) document.getElementById('searchInput').value = query; - if (name || ort || kundennummer || fachrichtung || query) { + if (name || ort || kundennummer || fachrichtung || telefon || query) { searchCustomers(); } });