Autor Thema: Preloader für XPages ?  (Gelesen 6730 mal)

Driri

  • Gast
Preloader für XPages ?
« am: 08.06.10 - 15:44:53 »
Hallo,

ich habe mich ein wenig mit dem Thema XPages beschäftigt und eine relativ simple Applikation mit XPages webfähig gemacht. Die Applikation soll in unserem WebSphere Portal via Clipping eingebunden werden.

Generell funktioniert alles, allerdings sind die Ladezeiten beim ersten Aufruf der Applikation doch recht hoch (unabhängig von Portaleinbindung oder Direktaufruf). Es dauert so ca. 20-30 Sekunden, bis die Seite geladen ist. Anschließend ist die Applikation dann sehr schnell.

Ich befürchte jetzt aber, daß die lange Erst-Ladezeit zu Problemen führen wird, weil die User ungeduldig sind und die Seite einfach schließen, denn sie bekommen während der Ladezeit nur eine weiße Seite angezeigt.

Jetzt hatte ich überlegt, einen Preloader einzubauen, in einfachster Form einfach ein animiertes GIF oder nur eine Meldung ala "Seite wird geladen, bitte haben Sie einen Moment Geduld". Ich bekomme das allerdings nicht geregelt und bin auch im Web nicht wirklich fündig geworden.

Hat das schon einmal jemand umgesetzt oder kann mir einen Wink geben, in welche Richtung ich weitersuchen kann ?
« Letzte Änderung: 31.08.10 - 13:11:06 von Driri »

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Preloader für XPages ?
« Antwort #1 am: 08.06.10 - 15:48:22 »
Die Lange dauer am Anfang kommt meiner Meinung nach daher, dass da erst eine JSP bzw. JSF seite kompiliert wird (so erklär ich mir das zumindest).

Schalte doch für den Preloader einfach eine normale Page (die geht ja schnell) vor und mache auf der mittels Ajax einen Request auf die eigentliche Seite.
Sobald Du den Response hast mache einen Redirect.

Hab ich noch nicht so gemacht sollte aber tun denke ich.

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Driri

  • Gast
Re: Preloader für XPages ?
« Antwort #2 am: 08.06.10 - 16:58:18 »
Hallo David,

danke für den Tipp. Ich habe mal Google gequält und bin auf eine Lösung gekommen, bei der zwei DIV-Tags definiert werden, die sich überlagern. Klappt ganz gut, wobei ich mir nicht sicher bin, ob das mit dem IFrame so super hinhaut. Im Portal kann die Seite so zumindest nicht geladen werden.

Ich bin nicht so fit in HTML, etc. Fällt da jemandem noch was Schlaues zu ein ? Gibt es evtl. auch eine andere Möglichkeit, die XSP im DIV-Tag einzubinden oder eine völlig andere Alternative ?

Code
<html>
<head>

<title>Titel</title>
<script type="text/javascript">
function overlay() {
	elem = document.getElementById("overlay");
	elem.style.visibility="hidden";
	elem = document.getElementById("bodydiv");
	elem.style.visibility="visible"; 
 }
</script>

</head>

<body onLoad="overlay()">

<div id="overlay" align="center" style="width:100%; height:100%; position: absolute; background-color:#ffffff;">
    <table><tr><td valign="center" height="100%" width="100%">
        <div align="center">
		<img src="loader.gif">
        </div>
    </td></tr></table>
</div>

<div id="bodydiv" style="visibility:hidden;">
<iframe src="xMain.xsp" width="100%" height="100%" name="xMainPage">
</div>

</body>
</html>

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Preloader für XPages ?
« Antwort #3 am: 08.06.10 - 21:49:18 »
Hi Ingo,

warum haut das im Portal so nicht hin? Sieht doch ganz gut aus - ist halt nicht "portal-safe" weil die ID's nicht mehrfach in Portlets verwendet werden können, aber einmal sollte es schon klappen.

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Driri

  • Gast
Re: Preloader für XPages ?
« Antwort #4 am: 10.06.10 - 10:40:15 »
Ich habe die Vermutung, daß aus irgendeinem Grund die Pfadangaben zum GIF und zur XSP nicht ziehen, wenn ich das im Portal aufrufe.

Zumindest bekomme ich im Portal einen 404. Wenn ich die Seite direkt aufrufe, funktioniert alles.

Driri

  • Gast
Re: Preloader für XPages ?
« Antwort #5 am: 10.06.10 - 10:45:12 »
Ok, Vermutung hat sich bestätigt. Nachdem ich die Pfadangabe ergänzt habe, funktionierts auch im Portal.

Allerdings habe ich jetzt durch den IFrame wohl das Problem, daß ich zusätzliche Scrolleisten erhalte. Gibt es eine andere Möglichkeit, im DIV-Tag die XSP einzubinden, als über einen IFrame ?

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Preloader für XPages ?
« Antwort #6 am: 10.06.10 - 11:11:24 »
Naja du kannst im IFrame die Scrollbars unterdrucken:

Code
<iframe src="bild.jpg" name="Bildframe" width="300" height="200" align="left"
        scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
  <p>Ihr Browser kann leider keine eingebetteten Frames anzeigen:
    <img src="bild.jpg" width="464" height="580" border="0" alt="Bild">
  </p>
</iframe>

oder aber Du setzt per JavaScript den Inhalt Deines Divs im Portal.

ala

Code
/* *********************************************************************
 * viewPostLoadRT
 * PostLoad RichText via Dojo - Ajax
 */
function viewPostLoadRT(unid){
	var rturl = getDBURL() + "/(rtBody)/" + unid + "?OpenDocument";
	var id = "itRow" + unid;
	
	dojo.xhrGet ({
    	// Location of the HTML content we want to grab
    	url: rturl,

    	// Called when the page loaded successfully
    	load: function (data) {
			//alert(rturl);
    		//alert(data);
    		//alert(id);
    		//alert(dojo.byId(id).innerHTML);
            var newDiv = document.createElement("div");
            newDiv.innerHTML = data;
            var obj = dojo.byId(id);
            obj.removeChild(obj.firstChild);
            obj.appendChild(newDiv);
        },

        // Called if there was an error (such as a 404 response)
        error: function (data) {
            console.error('Error: ', data);
        }
    });
	
	return false;
}

Allerdings mußt du schauen, dass die XPage dir keine komplette HTML Seite liefert sondern nur ein HTML-Fragment, dass Du einbinden willst.

Ich mache das so um RichText in WebViews anzuzeigen.

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Driri

  • Gast
Re: Preloader für XPages ?
« Antwort #7 am: 10.06.10 - 16:12:33 »
Hallo David,

danke für die Tipps. Das Unterdrücken der Scrollbars funktioniert zwar, allerdings ist dann das Problem, daß die Scrollbar des "äußeren" IFrame nicht den Inhalt des "inneren" IFrame scrollt.

Ich muß mich mal mit meinem Kollegen von der Web-Fraktion zusammensetzen, evtl. könnte man ja Einfluß auf den "äußeren" IFrame nehmen und da den Scrollbar ausblenden.

Die Lösung mit dem JavaScript klingt interessant. Da muß ich mich dann aber erstmal hinsetzen und mich da reindenken.

Mal schauen, was ich da so zustande bekomme. Wird wohl ein bißchen dauern  ;)

Vielen Dank nochmal.

Driri

  • Gast
Re: Preloader für XPages ?
« Antwort #8 am: 31.08.10 - 13:10:54 »
Nach einer Pause habe ich mich jetzt die letzten Tage wieder mit dem Thema beschäftigen können. Meine Versuche, eine Lade-Bildschirm via Dojo direkt in die XPage zu integrieren sind gescheitert. Dojo ist für mich auch zu neu, vermutlich scheitert es schon daran.

Ich habe daher jetzt einfach eine simple Page mit Passthru-HTML erstellt und das benötigte Script, CSS, etc. hier geklaut :

Full Screen JavaScript Load Page

Funktioniert wunderbar  :)


Nochmal Danke an David für die Unterstützung.
« Letzte Änderung: 31.08.10 - 13:12:58 von Driri »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz