4.0 KiB
4.0 KiB
Erweiterte SQL Autocomplete - SELECT & FROM
Übersicht
Die Autocomplete-Funktionalität wurde erweitert und unterstützt jetzt sowohl Spalten-Vorschläge nach SELECT als auch Tabellen-Vorschläge nach FROM.
Neue Funktionen
1. Spalten-Autocomplete nach SELECT
Aktivierung:
- Automatisch nach
SELECT(mit Leerzeichen) - Bei Komma-getrennten Spalten:
SELECT col1, - Bei partieller Eingabe:
SELECT USE(zeigt Spalten mit "USE")
Intelligente Erkennung:
- Erkennt Tabelle aus FROM-Klausel automatisch
- Lädt entsprechende Spalten-Schema dynamisch
- Fallback zu allgemeinen Spalten wenn keine Tabelle erkannt
2. Kontext-bewusste Vorschläge
Mit erkannter Tabelle:
SELECT | FROM USERS
↑ Zeigt Spalten von USERS-Tabelle
Ohne Tabelle (allgemeine Optionen):
SELECT |
↑ Zeigt: *, COUNT(*), COUNT(1), ROWNUM, SYSDATE
Funktionsweise
Muster-Erkennung
- Nach SELECT:
SELECT→ Spalten-Autocomplete - Spalten-Liste:
SELECT name,→ Weitere Spalten - Partielle Eingabe:
SELECT us→ Gefilterte Spalten - Nach FROM:
FROM→ Tabellen-Autocomplete
Schema-Integration
- Dynamisches Laden: Schema wird bei Bedarf vom Server abgerufen
- Typ-Anzeige: Spalten zeigen Datentyp an (z.B.
NAME (VARCHAR2)) - Icons: Unterschiedliche Icons für
*, Spalten und Tabellen
Keyboard-Navigation
- ↓/↑: Navigation durch Vorschläge
- Enter/Tab: Auswahl übernehmen
- Escape: Dropdown schließen
- Komma: Automatische Trennung bei Mehrfach-Auswahl
Beispiele
Einfache Spalten-Auswahl
1. Tippe: SELECT
2. Wähle: * oder spezifische Spalte
3. Ergebnis: SELECT column_name
Mehrere Spalten
1. Tippe: SELECT name,
2. Wähle: weitere Spalte aus Liste
3. Ergebnis: SELECT name, email
Mit FROM-Kontext
1. Tippe: SELECT FROM USERS
2. Autocomplete lädt USERS-Spalten automatisch
3. Wähle aus USERS-spezifischen Spalten
Gefilterte Suche
1. Tippe: SELECT user
2. Zeigt nur Spalten die "USER" enthalten
3. z.B.: USER_ID, USER_NAME, USERNAME
Technische Details
Neue JavaScript-Funktionen
shouldShowColumnAutocomplete() // Erkennt SELECT-Kontext
showColumnAutocomplete() // Zeigt Spalten-Dropdown
extractTableNameFromQuery() // Findet Tabelle in FROM
loadTableSchemaForAutocomplete() // Lädt Schema dynamisch
selectColumnFromAutocomplete() // Fügt Spalte ein
State-Management
autocompleteState = {
isVisible: boolean,
selectedIndex: number,
items: array,
triggerPosition: number,
type: 'table' | 'column' // NEU: Unterscheidet Typ
}
CSS-Verbesserungen
- Icons:
fa-columnsfür Spalten,fa-asteriskfür * - Typ-Info: Grauer Text für Datentypen
- Header: Kontextuelle Überschriften ("Spalten von USERS")
Intelligente Features
1. Kontext-Analyse
- Erkennt FROM-Klausel automatisch
- Lädt passende Spalten für die Tabelle
- Fallback bei fehlender/unklarer Tabelle
2. Smart-Insertion
- Erkennt Position in SELECT-Liste
- Ersetzt partielle Eingaben korrekt
- Respektiert Komma-Trennung
3. Performance-Optimierung
- Caching: Schema wird nicht doppelt geladen
- Limitierung: Max. 15 Spalten, 10 Tabellen
- Lazy Loading: Nur bei Bedarf laden
Workflow-Integration
Typischer Workflow
- Start:
SELECT→ Allgemeine Spalten oder * - Tabelle:
FROM tablename→ Spezifische Spalten verfügbar - Erweitern: Zurück zu SELECT → Tabellen-spezifische Vorschläge
- Verfeinern: Komma + weitere Spalten auswählen
Drag & Drop Integration
- Funktioniert weiterhin parallel zu Autocomplete
- Autocomplete für Tipper, Drag & Drop für Maus-User
- Beide Methoden ergänzen sich perfekt
Erweiterbarkeit
Die Architektur unterstützt zukünftige Erweiterungen:
- WHERE-Autocomplete: Spalten + Operatoren
- JOIN-Unterstützung: Multi-Tabellen-Queries
- Funktions-Vorschläge: SQL-Funktionen
- Alias-Erkennung: Tabellen-Aliases berücksichtigen