Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: machineslave am 19.09.13 - 10:38:23

Titel: Typeahead
Beitrag von: machineslave am 19.09.13 - 10:38:23
Hallo,

ich habe mich mal an dem Type Ahead versucht, aber irgendwie will es nicht funktionieren.
Der Code sieht wie folgt aus:

<xp:inputText id="superior" value="#{document1.Superior}">
     <xp:this.defaultValue><![CDATA[#{javascript:db = new Array(getComponent("server").getValue(), getComponent("addressBook").getValue());
@DbLookup(db,"($VIMPeople)",getComponent("commonName").getValue(), "Manager")}]]>
     </xp:this.defaultValue>
     <xp:typeAhead mode="partial" minChars="3" var="aKey" valueListSeparator="," ignoreCase="true" valueMarkup="true">
     <xp:this.valueList><![CDATA[#{javascript:db = new Array(getComponent("server").getValue(), getComponent("addressBook").getValue());
          var aKey = getComponent("superior").getValue();
@DbLookup(db,"(PeopleByFirstname)",aKey,1,"[PARTIALMATCH]")}]]>
     </xp:this.valueList>
     </xp:typeAhead>
</xp:inputText>

Der Lookup für sich alleine genommen funktioniert, aber ich bekomme keine Vorschläge angezeigt.
Titel: Re: Typeahead
Beitrag von: Sven Hasselbach am 19.09.13 - 11:17:01
Das liegt daran, das Du zum Einen die Variable aKey überschreibst, und zum Anderen daran, dass die Komponente superior nicht den eingegebenen Wert enhält, der beim Typeahead eingetippt wird.

Wenn Du die Zeile
Code
 var aKey = getComponent("superior").getValue();

löschst, sollte es funktionieren.
Titel: Re: Typeahead
Beitrag von: machineslave am 19.09.13 - 13:30:25
Hab die Zeile entfernt, bekomme aber immer noch keine Vorschläge angezeigt.
Titel: Re: Typeahead
Beitrag von: Sven Hasselbach am 19.09.13 - 13:43:00
Ah, und da Du kein HTML generierst, setze valueMarkup auf false
Titel: Re: Typeahead
Beitrag von: umi am 19.09.13 - 13:43:07
an dem fehlenden ;
in der Zeile "@DbLookup(db,"(PeopleByFirstname)",aKey,1,"[PARTIALMATCH]")}]]>" wirds wohl nicht liegen...
Titel: Re: Typeahead
Beitrag von: machineslave am 19.09.13 - 13:52:58
Habe valueMarkup auf false gesetzt (und das ; sicherheitshalber angefügt) aber ich bekomme trotzdem keine Vorschläge angezeigt.
Titel: Re: Typeahead
Beitrag von: umi am 19.09.13 - 13:56:09
Hi
Verwendest du zufällig Chrome/Firefox? Dann schau mal mit den Developer Tools was da retourkommt.
Titel: Re: Typeahead
Beitrag von: Sven Hasselbach am 19.09.13 - 14:02:11
Was liefert denn der Server zurück (HTTP Response via Firebug Toolbar)?
Titel: Re: Typeahead
Beitrag von: machineslave am 19.09.13 - 14:04:06
Hab mir das grad mal mit Firebug angeschaut. Die Anfrage an den Server wird gesendet, jedoch bekomme ich einen Timeout zurück :-(
Titel: Re: Typeahead
Beitrag von: umi am 19.09.13 - 15:03:58
Moin
die Ansicht ist im Web sichtbar und der Zugriff ist auf diese DB per Browser möglich?
bzw. in der ACL ist dort etwa maximum Internet Access  eingeschränkt ?
Titel: Re: Typeahead
Beitrag von: machineslave am 19.09.13 - 16:19:36
Die Ansicht ist über den Browser abrufbar; Max Internet Access ist nicht eingeschränkt.
Titel: Re: Typeahead
Beitrag von: Jens Winkelmann am 19.09.13 - 22:58:42
Punkt 1)
Entferne die Property valueMarkup="true".
Diese ist vermutlich nur notwendig, wenn man XML über die Formel berechnet.

Punkt 2)
Den Nutzen der Property var="aKey" verstehe ich nicht.
Bitte mal löschen.

Punkt 3)
Auch die Berechnung der Vorschlagsliste verstehe ich nicht ganz.
Du machst ein Lookup auf eine Ansicht mit dem aktuellen Wert des Feldes.
Diese Formel wird aber erst bei einem Refresh des Feldes aktualisiert.
Also nicht bei jedem Eintippen eines Buchstaben im Feld selbst.

Versuch doch mal zum Testen die nachfolgende Formel:
db = new Array(getComponent("server").getValue(), getComponent("addressBook").getValue());
return @DbColumn(db,"($VIMPeople)",1);

Wenn es kein Überlauf gibt, sollte die Funktionalität wenigstens klappen.

Titel: Re: Typeahead
Beitrag von: Sven Hasselbach am 20.09.13 - 07:09:50
Zitat
Den Nutzen der Property var="aKey" verstehe ich nicht.
In der Variable ist der eingegebene String enthalten (Sonst wäre ja ein Refresh der Inputbox nötig)

Zitat
Lookup auf eine Ansicht mit dem aktuellen Wert des Feldes.
Diese Formel wird aber erst bei einem Refresh des Feldes aktualisiert.
Also nicht bei jedem Eintippen eines Buchstaben im Feld selbst.
siehe oben.

Das ein Timeout auftritt, ist jedoch recht merkwürdig. Ich würde mir den Lookup näher anschauen. Was ist denn, wenn die Typeahead-Liste hardgecoded ist?