Domino 9 und frühere Versionen > ND6: Entwicklung

Ansicht im Web

<< < (2/3) > >>

datenbanken24:
Ja, haben Sie:

1.)
Die Tags "<xKategorie>" sortieren die Ansicht.

Das "<x" soll dabei nur bewirken, dass der eigentliche Sortierwert nicht im Web sichtbar ist.

So steht bei <xKategorie> manchmal z.B.

"2004-11"
wenn in der Ansicht zur Anzeige
"November 2004"
steht, (bzw. an die JS-Funktion übergeben wird.)

2.)
Gleichzeitig nutzen wir das für die Schnellsuche.

Es ist lästig im Web, wenn man z.B bei 10.000 Dokumenten
ca. 200 mal auf

"Nächstes"

klicken muss, um in der Ansicht nach unten zu kommen bzw. zu navigieren.

Mit dieser Ansichtsform ist es auch einfach möglich,
eine Schnellsuche analog Notes zu machen,
man gibt den oder die Anfangsbuchstaben ein,
und die Ansicht springt zu dieser Kategorie.

Hier ist so ein Beispiel mit über 10.000 Dokumenten:
http://www.werbetruck-onlinekatalog.de

Gib einfach "W" oder "Zlat" ein,
und die Ansicht springt auf den gewünschten Eintrag - sonst müßte man hier im Beispiel ca. 200 mal "Next" klicken.

Der zugehörige Schnellsuche-Agent macht grob nix weiter, als mit

Set entry = view.getEntryByKey(Query, False)
                  
den Eintrag in der Notes-Ansicht zu finden und über

pos = entry.getPosition(".")

die URL-Parameter "Start, "Expand", etc) zu berechnen, die die Ansicht an der richtigen stelle aufmachen.

Gruss,
Uwe

HarryB:
Hm, ich habe noch eine weitere Frage: wie liest du den Parameter "Expand=..." aus, den du offensichtlich in die drei Variablen CurrentOpenCategoryX schreibst?

Viele Grüße
Harry

datenbanken24:
Wir nutzen der Einfachheit halber nur den "Expand"-Parameter.
Damit läßt sich alles erreichen, was man braucht,
den "Collapse"-Parameter braucht man eigentlich nicht wirklich.

Eine Ansicht wird z.B. geöffnet mit

...view?OpenView&Start=1&Count=30&Expand=2.4#2.4

Wenn man die aufgeklappte Kategorie wieder schließen will,
läßt man den Expand-Parameter einfach weg.

Die JS-Variablen:

var CurrentOpenedCategory1 = "2";
var CurrentOpenedCategory2 = "2.4";
var CurrentOpenedCategory3 = "2";

brauchen wir, um für jeden Katagorie-Link
den richtigen dahinterliegenden URL zu berechnen.
Ist die Kategorie offen,
soll Sie bei Anklicken zu gehen
und umgekehrt.

Wann immer aber die Kategorien auf oder zugeklappt werden,
wird eine neue Ansichts-URL abgesetzt, also die Ansicht neu geladen:

view?OpenView&Start=1&Count=30&Expand=2.4#2.4

Diesen String nimmst Du in der Maske
WebViewTemplate ($$ViewTemplateForXXX) der entsprechenden View,
z.B im "HTML Head Content"
auseinander:


_CurrentOpenedCategory1 :=
   @Word(@Word(
      @UrlQueryString("Expand");
      "#";
      1);
      ".";
      1)
;
_CurrentOpenedCategory2 :=
   @Word(
      @UrlQueryString("Expand");
      "#";
      1)
;
_CurrentOpenedCategory3 :=@LeftBack( _CurrentOpenedCategory2 ; ".");

@If(
   WebParameters_ = "ExpandView";
   @Set( "_CurrentOpenedCategory1"; "All");
   ""
);

wobei WebParameters_
nur ein computed for display Listenfeld ist, welches alle Parameter aus der URL liest,
über die Formel:


@ReplaceSubstring(
  @Explode(@Right(Query_String_Decoded; "&"); "&");
  "+" : "[Plus]" : "[Amp]" : "[Quot]" : "[Deg]" : "[Hash]" : "[Sect]" : "[AE]"  : "[OE]" : "[UE]" : "[ae]" : "[oe]" :  "[ue]" : "[sz]" : "[eacc1]" : "[eacc2]" : "[eacc3]": "[eacc4]" : "[aacc2]": "[uacc2]";
  " " : "+" : "&" : "\"" : "°" : "#" : "§" : "Ä" : "Ö" : "Ü" : "ä" : "ö" : "ü" : "ß" : "é" : "è" : "ê" : "ë" : "à" : "ù"
)


Der "HTML Head Content" schreibt dann diese @-Variablen als JS-variablen mit in den HTML-Quelltext.

@NewLine +
"<script language=JavaScript>" + @NewLine +

"var CurrentOpenedCategory1 = \"" + _CurrentOpenedCategory1 + "\";" +  @NewLine +
"var CurrentOpenedCategory2 = \"" + _CurrentOpenedCategory2 + "\";" +  @NewLine +
"var CurrentOpenedCategory3 = \"" + _CurrentOpenedCategory3 + "\";" +  @NewLine +

@NewLine +

"</script>" + @NewLine


wo sie die Funktion "WriteCategory" dann nutzt,
um die neuen URLs hinter die Kategorien zu setzen.


Auf die gleiche Art und Weise
kann man sich auch CSS-Styles, Ansichtskonstanten, Thumbnails, usw
aus Notes-Konfigurationsdokumenten holen und die alle als JS-Variablen zur Verfügung stellen
ohne dass die Notes-Ansicht "was davon mitbekommt" bzw. damit belastet wird.

Gruss,
Uwe

HarryB:
Ich wollte nur nachholen: vielen Dank für die Tipps. Sie haben mir sehr geholfen.

Das Ergebnis kann hier bewundert werden, aber leider nur zum lesen.

Viele Grüße
Harry

datenbanken24:
Sieht doch richtig gut aus.

Noch ein Hinweis:
Du hast noch ein Javascript-Fehler auf der Seite, den ich auch noch gut kenne:
Beim Aufklappen einiger Kategorien, z.B.

Studium fundamentale
  Soziologie
   Baecker, Dirk
    Beitrag in Zeitschrift

kommt der JS-Fehler.

Und zwar passiert das immer, wenn der Zeilentext ein Apostroph oder Anführungszeichen enthält.
hier z.B. wegen:
Lenin's Twist, or the R-Factor of Communication

Der Apostroph macht dann fälschlicherweise einen anderen Apostroph aus dem Code zu.
Am besten Du "replacedsubstringst" diese Zeichen bereist in der Ansicht mittels JS- bzw. HTML -Maskierung,
&xyz;

Habe einen Screenshot vom Fehler beigefügt.

Gruß,
Uwe

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln