Autor Thema: Ansicht mit ?ReadViewEntries und Prototype auslesen  (Gelesen 2715 mal)

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Ich bin dabei, eine Ansicht mit der Prototype.js-Bibliothek auszulesen. Obwohl es dazu einige Beispiele im Web gibt finde ich nichts konkretes.
Momentan stochere ich hier rum aber irgendwie drehe ich mich im Kreis, bekomme immer die gleichen Nodes:

Code
function parseResponse(theText) {
   	viewEntries = $A(theText.responseXML.getElementsByTagName('viewentry'));
		
	var entries = viewEntries.each(function(node){
				   entryData = node.getElementsByTagName('entrydata');
				   return( $A(entryData));
					});
	 var zugmoData = $A(entries.each(function(entry){
											return($A(entry));
											}));	
	var childNodes = zugmoData.each(function(childNode){
							return($A(getXmlNodeValue(childNode)));
						});
	return zugmoData;
	}
 
function getXmlNodeValue(xmlNode){
	return Try.these(
		function() {return xmlNode.text;},
		function() {return xmlNode.textContent;}
		);
}

William Beh hatte ein Beispiel dazu, aber er hat irgendwie die Prototype-Befehle gar nicht genutzt sondern normale for-Schleifen genommen. Hat jemand das schon mal durchgängig mit Prototype (oder Scriptaculous o.ä.) gemacht? Oder eine Idee für mich? Ich hatte das obige Beispiel auch schon geschachtelt aber irgendwie gehe ich methodisch falsch vor, sehe aber heute nix mehr  O0

sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #1 am: 05.02.07 - 20:10:27 »
Keine Ahnung. Aber mit 7.02 wird auch JSON unterstützt (allerdings inoffiziell und das Format wird sich noch ändern).
http://www.codestore.net/store.nsf/unid/BLOG-20070125
Xml Parsing mit javaScript muss wirklich nicht so einfach sein.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #2 am: 06.02.07 - 07:17:17 »
bei Codestore war ich natürlich als allererstes. 7.0.2 hab ich noch nicht, ich möchte nicht nur wegen dieser Anwendung alle Server bei uns upgraden. Ausserdem ist dieses JSON wohl 7.0.2-spezifisch, da noch unsupported.
Ich habe auch schon überlegt, eine View oder einen Agenten zu bauen, die mir JSON liefern. Aber dann verteilt sich die Logik wieder auf mehrere Stellen, das gefällt mir nicht so.

Vielleicht habe ich heute bessere Ideen. Prototype wurde ja extra für AJAX und ähnliches gemacht, daher sind da sicher geeignete Methoden drin, um die XML-Response zu parsen. Ich muss wohl noch etwas in der Hilfe lesen...
sagt Mark.



slowfood.de

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #3 am: 06.02.07 - 10:59:16 »
ich mache das jetzt klassisch, nutze nur ein paar Prototype-Hilfen, ist auch noch Alpha-Stadium. So bekomme ich aus einer View die Werte einer Spalte (Parameter fieldName). Wichtig ist, dass man im zugehörigen ?ReadViewEntries die Option PreFormat wählt, da nur dann auch Zahlen und Daten übernommen werden (sonst müsste noch eine Unterscheidung bei
Code
 entryText = entryData[ie].getElementsByTagName("text");
dazu, ob es "text" oder "datetime" o.ä. ist.

Code
function getResult(req, fieldName) {
  var xmlDoc = req.responseXML;
  var allEntry = new Array(0);
  viewEntries = xmlDoc.getElementsByTagName('viewentry');
   
   for (var i=0; i < viewEntries.length; i++) {
   var colEntry = new Array(10);
      entryData = viewEntries[i].getElementsByTagName("entrydata");
      for (var ie=0; ie < entryData.length; ie++) {
      	if (entryData[ie].getAttribute('name') ==fieldName) {
            entryText = entryData[ie].getElementsByTagName("text");
            try {
          	  for (var it=0; it < entryText.length; it++) {
          	        if (entryText[it].firstChild) {
               	         colEntry[ie] = entryText[it].firstChild.nodeValue;
               	        }
               	    else {
               	    	 colEntry[ie] = null;
					}
            	      }
            	}
           	catch (e) {
            		alert (e);
			}
		}
        	 }
        	 if (colEntry)
			allEntry.push($A(colEntry).compact());
      }

	return allEntry.sortBy(function(zahl){
				if ( isNaN(zahl)) {
							return 0;
					}
				else {
							return zahl;
					}
			});
}     
« Letzte Änderung: 06.02.07 - 11:01:37 von Mark³ »
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #4 am: 06.02.07 - 11:20:27 »
Diese Libraries wie DOJO oder Prototype oder überhaupt nur alles Libraries sind ja Abstraktionen, die das Programmieren nicht zwangsläufig immer einfacher machen. Charles Lowell von DrunkAndRetired hat sich ja oft recht deftig über die übertriebene OO der JavaScript Libraries geäussert. Es gibt 2 Möglichkeiten (wobei beides auch in verschiedenen Mischungsverhältnissen auftreten kann):
a) du kennst die Libraries nicht gut genug.
b) die Libraries stehen dir für deinen Zweck im Weg.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #5 am: 06.02.07 - 11:32:33 »
ich finde Prototype lohnt auch schon für Kleinigkeiten, wenn die 70kB netzwerktechnisch nicht zu viel sind (im LAN merke ich nix davon):

einen Array aus einem Objekt erstellen: var myArray = $A(object)
diesen Array sortieren: myArray.sortBy(function...)
in diesem Array nur Werte nehmen, die ein RegExp erfüllen: myArray.grep(pattern, element)

Das gibt schon recht viele geniale Funktionen. Zudem ist es crossbrowser-kompatibel (einigermassen jedenfalls). Und wenn es dann an UI-Effekte geht (die nutze ich noch nicht) dann ist Scriptaculous oder YUI.ext o.ä. viel zu gut um sowas noch selbst zu machen.
Das momentane Problem ist nur, dass es noch zu viel verschiedene Dinge gibt, die ähnliches liefern. Ein Nebeneffekt ist auch, dass immer mehr Leute merken, wie mächtig Javascript ist (unter anderem ich selbst). Leider wird Javascript in der Designer-IDE nicht gut unterstützt, das ist ein gravierendes Manko, genau wie bei Java. Kennt jemand einen guten Javascript-Editor? Er sollte schon alles können was die Domino-IDE bei LotusScript kann...
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #6 am: 06.02.07 - 13:46:16 »
Ich lass mir gerade dieses Buch schicken: http://www.amazon.com/gp/product/1590597273/302-5403289-5322433 . Davon erhoffe ich mir eine schnellen und aktuellen Überblick gerade bezüglich IDE features wie Debugging etc. Ist aber z.Zt. nicht meine Baustelle und davon wirklich eine Menge.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #7 am: 06.02.07 - 13:58:11 »
hab jetzt auch noch Scriptaculous eingebunden. Visuelle Effekte sind zwar potentiell Spielkram aber diese drei Zeilen

Code
new Effect.Highlight('result1');
var mydrag = new Draggable('result');
var mydrop = new Droppable('result3');

wären wohl ohne diese Libs schon einige Stunden Programmieraufwand, um ein Feld kurz gelb aufleuchten zu lassen und zwei weitere Felder als Drag-Source bzw. Drop-Target zu aktivieren. In der echten Anwendung verzichte ich wahrscheinlich auf Drag&Drop, aber faszinierend ist das schon.

Das Debugging geht sehr gut mit FireBug (ohne solch ein Tool ist es sinnlos), als IDE muss ich mal nach einem Eclipse-Plugin Ausschau halten.
sagt Mark.



slowfood.de

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Ansicht mit ?ReadViewEntries und Prototype auslesen
« Antwort #8 am: 06.02.07 - 14:38:48 »
Kennt jemand einen guten Javascript-Editor? Er sollte schon alles können was die Domino-IDE bei LotusScript kann...

Evtl schaust du dir http://www.aptana.com/ mal an. Ich hab den aber nur mal kurz ausprobiert, sah aber sehr schön aus. Wobei das schon etwas mehr als Javascript kann
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz