Ankündigung

Einklappen
Keine Ankündigung bisher.

Misterhouse - iPhone-Visu: Asynchrones Nachladen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Misterhouse - iPhone-Visu: Asynchrones Nachladen

    Hallo,

    da meine mh-iPhone-Visu recht viele Seiten hat und mein iPod touch (1.Gen) recht lahm hat mich schon seit geraumer Zeit die Ladezeit gestört. Insbesondere wer unterwegs ist, sein UMTS-Limit erschöpft hat und nur mit GPRS auf die Visu zugreifen kann, wird verstehen, was ich meine...

    Daher habe ich mich dran gemacht, die Möglichkeit des asynchronen Nachladens von Layern per Ajax zu untersuchen und möchte Euch hier das Resultat vorstellen.

    Bisher lädt die Visu beim Zugriff von index.shtml sämtliche Layers auf einmal und wechselt beim Navigieren dann nur die sichtbare Layer aus ohne etwas neu zu laden. Die Idee ist nun, immer nur die Daten zu laden, welche für die anzuzeigende Layer relevant sind. Das reduziert die initial zu übertragende Datenmenge erheblich und hat noch den netten Nebeneffekt, dass die Stati der Objekte im Untermenü wirklich aktuell sind (da sie ja erst on-demand geladen werden).

    Das ganze funktioniert bei mir super gut und der Benutzer merkt von asynchronen Zugriffen im Hintergrund fast gar nichts.

    Ich habe die Änderungen so gestaltet, dass es komplett rückwärtskompatibel ist. Soll heißen, Ihr könnt meinen Patch einspielen und es sollte erstmal alles laufen, wie bisher.

    Die geänderten Dateien sind mh/lib/http_server.pl und mh/code/public/iphone.pl. Die Patches habe ich angehängt. Wer keine Patches mag, findet die aktuellen Dateien auch im iphone-async.zip.

    Um die asynchronen Zugriffe zu aktivieren, braucht Ihr den folgenden Eintrag in der mh.private.ini:
    Code:
    iphone_async = 1
    Zusätzlich muss noch in der index.shtml eine neue JS-Funktion eingetragen werden:
    Code:
            function AsyncLoad(item) {
                WA.Request("../SUB;&iphoneWebApp('" + item +"','iasyncLayer')#_" + item, null, -1, true, null);
            }
    Die angepasste "standard" index.shtml findet sich ebenfalls im Zip. Die meisten werden jedoch eine individuelle Startseite haben, daher ist das eintragen der obigen Funktion sehr wichtig. Um eine Async-Layer auf einer individuellen Startseite einzubinden benötigt man die folgende Zeile:
    Code:
                    <li><a href="#_Gruppenname" onclick="AsyncLoad('Gruppenname')"><img src="/graphics/gruppenicon.png" width=29 height=29 />Gruppenname</a></li>
    Auch hier habe ich eine Beispielseite ins Zip gepackt.

    Ich benutze übrigens die neueste Version des WebApp-UI-Frameworks, kann also nicht garantieren, dass es auch alles sauber auf einer älteren Version davon funktioniert. Aber ich würde sowieso ein Upgrade empfehlen (einfach das web/iphone/WebApp Verzeichnis austauschen), da in der letzten Zeit dort auch zahlreiche Bugs gefixt wurden.

    Ich würde mich über Euer Feedback dazu freuen! Wenn's positiv ausfällt werde ich zusehen, das ganze ins mh-SVN committen zu lassen.

    Viele Grüße,
    Kai

    P.S.: Seit wann sind in der iphone.pl die Icons nicht mehr 29x29 sondern 32x20 groß? Bei mir sieht nach dem letzten SVN update alles ziemlich gestaucht aus...
    Angehängte Dateien

    #2
    Klasse!

    Werde ich gleich mal ausprobieren...

    Ich hatte selber vor die Visu mithilfe des xml-Servers von misterhouse zu ajaxifieren - aber ich hab meine Visu gerade erst fertig - da kann ich nicht schon wieder alles umbauen, das gäbe Haue vom Vorstand.

    Was mich jetzt noch interessieren würde ist:

    Wie Wende ich so einen Patch eigenlich an? Habe sowas noch nie gemacht.
    Gibt es da ein Tool für, oder macht man das händisch?

    Danke und gruß,

    Thorsten

    Kommentar


      #3
      Gute Idee, ich habe auch eine längere Ladezeit zu Beginn. Werde deine Modifikationen dann auch in kürze Testen.
      Gruß,
      Marc

      Kommentar


        #4
        Freut mich, dass sich so schnell ein paar freiwillige Tester finden

        Zitat von thoweiss Beitrag anzeigen
        Ich hatte selber vor die Visu mithilfe des xml-Servers von misterhouse zu ajaxifieren - aber ich hab meine Visu gerade erst fertig - da kann ich nicht schon wieder alles umbauen, das gäbe Haue vom Vorstand.
        Das wäre mein nächster Wunsch - Automatisches Update der Stati auf der Seite per Ajax bei Änderung. Hast Du Deine Visu auf dem iPhone-UI von RaK oder auf dem mh_client von Arno aufgebaut?

        Zitat von thoweiss Beitrag anzeigen
        Wie Wende ich so einen Patch eigenlich an? Habe sowas noch nie gemacht.
        Gibt es da ein Tool für, oder macht man das händisch?
        Wenn Du SVN installiert hast (was ich hoffe ), dann geht das einfach mit dem "patch" Kommando:
        Code:
        cd /opt/misterhouse/mh/lib
        patch http_server.pl -i /home/kai/http_server.pl.patch.txt
        Die Patches selbst erstellt man mit
        Code:
        svn diff http_server.pl > /home/kai/http_server.pl.patch.txt
        Dies gibt dann alle lokalen Änderungen im Vergleich zum offiziellen Repository.

        Kommentar


          #5
          Ja auch meine Visu ist auf der von Rak aufgebaut (siehe hier)

          Allerding bin ich nicht so fit mit Ajax und Html - ich müsste mich da erstmal reinfuchsen.

          Aber mit der xmlserver.pl von mh ( im /lib Ordner) sollte es gehen.

          Ich hab nur noch nicht raus wie man den Status eines bestimmten objektes abfragen kann.

          Damit
          http://localhost:8080/sub?xml(groups=$Lueftungsanlage,fields=state)
          bekommt man den status aller objekte in einer Gruppe.

          Un damit den Staus aller Objekte (aber wirklich aller!)

          http://localhost:8080/sub?xml(objects,fields=state)

          Aber wie ich das jetzt auswerte und wieder in die Visu bekomme, da hörts bei mir auf...

          Kommentar


            #6
            Ja auch meine Visu ist auf der von Rak aufgebaut (siehe hier)
            Stimmt, das hatte ich ja bereits diese Tage gesehen

            Allein den XML-Aufruf hin zu bekommen, wird nicht reichen, da man ja ein Polling vom Server braucht, um nur bei Status-Änderungen aktiv zu werden.

            Mike hatte in diesem Thread (Kommentar #36) dazu schon einiges realisiert, was dann - soweit ich es verstehe - im mh_client aufgegangen ist. RaK hat im Kommentar #37 auch schon den Wunsch geäußert, das für die iPhone-Visu nutzbar zu machen. Leider habe ich seitdem nichts neues mehr davon gehört und würde es daher gerne wieder aufgreifen. IMHO sollten wir aber nutzen, was existiert, schon um die iPhone-Visu und den mh_client einigermaßen kompatibel (zumindest gleichzeitig einsetzbar) zu halten.

            Kommentar


              #7
              Wie gesagt - mit der ganzen Ajax geschichte hab ich es nichtz so.

              Ich bekommen gerade noch das normale iphone html hin...

              man müsste das ganze sich maöl genauer anschauen wie die kommunikation da läuft.

              Kommentar


                #8
                Gratulor!

                Das schaue ich mir garantiert an. Wann ich dazu komme steht noch in den Sternen . Im Moment habe ich 2 Fulltime Jobs parallel. Dazu ist heute ein riesen EIB paket (Hardware) bei mir angekommen. Der Winter kommt und die Heizung viel ver"eibt" werden . Mal schauen wie weit ich komme.

                LG

                Kommentar


                  #9
                  Zitat von RaK Beitrag anzeigen
                  Der Winter kommt und die Heizung viel ver"eibt" werden
                  Das Gute am Winter ist doch, dass die Nächste länger werden. Und wann außer nachts schraubt man schon an seiner iPhone-Visu?

                  Ich werde mich mal mit Mike und/oder Arno in Verbindung setzen und schauen, ob ich auch bzgl. Ajax-Statusupdates weiterkomme; spätestens dann wirst Du jeden Fulltime-Job niedriger priorisieren als Dein Visu-Upgrade

                  Kommentar


                    #10
                    P.S.: Seit wann sind in der iphone.pl die Icons nicht mehr 29x29 sondern 32x20 groß? Bei mir sieht nach dem letzten SVN update alles ziemlich gestaucht aus...
                    Hat dazu eigentlich jemand eine Antwort oder Meinung?
                    Alle Screenshots, die ich hier im Forum gesehen habe, arbeiten mit quadratischen Icons... Spricht etwas dagegen, wenn wir das wieder auf 29x29 abändern?

                    Kommentar


                      #11
                      Meine sind noch in 29x29, wo ist denn die iphone.pl mit einer anderen größe her?
                      Gruß,
                      Marc

                      Kommentar


                        #12
                        Zitat von aggie89go Beitrag anzeigen
                        Meine sind noch in 29x29, wo ist denn die iphone.pl mit einer anderen größe her?
                        Das ist der letzte Stand im mh SVN: https://misterhouse.svn.sourceforge....blic/iphone.pl

                        Dort sind die Icons seit dem letzten Commit am 22.01.09 durch "hplato" plötzlich 32x20 Pixel groß.

                        Kommentar


                          #13
                          Zitat von kkreuzer Beitrag anzeigen
                          Das ist der letzte Stand im mh SVN: https://misterhouse.svn.sourceforge....blic/iphone.pl

                          Dort sind die Icons seit dem letzten Commit am 22.01.09 durch "hplato" plötzlich 32x20 Pixel groß.

                          Stimmt das ist mir auch schon komisch aufgefallen...
                          ich habe ja einfach in der iphone.pl den wert wieder zurückgesetzt..


                          Wo bekommt man jetzt eigenlich den aktuellsten stand der iphone.pl ?
                          Aus dem SVN oder von hier aus dem Downloadbereich.

                          Kommentar


                            #14
                            Zitat von thoweiss Beitrag anzeigen
                            Wo bekommt man jetzt eigenlich den aktuellsten stand der iphone.pl ?
                            Aus dem SVN oder von hier aus dem Downloadbereich.
                            Also ich wäre stark für SVN - diese Frage versuche ich gerade hier zu klären.

                            Kommentar


                              #15
                              Hallo,

                              muss diesen alten Thread mal vorholen :-).

                              Habe leider das Problem nach dem Austausch der Dateien werden nurnoch die $MAIN menü´s angezeigt, beim klicken darauf passiert nichts. Ist dieser Fehler bekannt?


                              Grüße
                              Steven

                              Kommentar

                              Lädt...
                              X