[Usermeinung] phpTreeGraph

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

  • [Usermeinung] phpTreeGraph

    Hallo,

    mein erster Beitrag hier und ich wollte gleich mal was sinnvolles posten.

    Habe vor einiger Zeit nach einem php Modul das Baumdiagramme zeichnen kann gesucht.

    Da ich bis jetzt nichts brauchbares gefunden habe, hab ich mal selbst was entwickelt.

    Also wer eine Klasse zum zeichnen von hierarchischen Strukturen sucht kann diese benutzen.
    http://code.google.com/p/phptreegraph/

    Dokumentation und Demo

    http://hammam.ha.ohost.de/Demo1.php
    http://hammam.ha.ohost.de/Demo2.php

    http://hammam.ha.ohost.de/doc/html/
    Herrmann Web develoment

  • #2
    Sieht für den Anfang nicht schlecht aus. Habe mich allerdings noch nie damit beschäftigt und kenne nichts vergleichbares.

    Kommentar


    • #3
      echt gute arbeit

      hätte das vor einiger zeit gut brauchen können, für eine art "techtree"
      hab das dann ziemlich kompliziert gelöst.

      werde mir das mal genauer anschauen!

      danke =)

      Kommentar


      • #4
        nicht schlecht!
        hätte ich vor ein paar Jahren für eine headhunter-Software gut brauchen können

        php-Entwicklung | ebiz-consult.de
        PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
        die PHP Marktplatz-Software | ebiz-trader.de

        Kommentar


        • #5
          http://graphviz.org/Gallery.php

          http://pear.php.net/package/Image_Graphviz

          Kommentar


          • #6
            Ja das kenne ich auch.

            Graphviz ist eine super Visualisierungssoftware, aber das PEAR Package stellt nur eine Schnittstelle bereit, man benötigt also noch die eigentliche Graphviz Software auf dem Server, was nicht immer möglich ist.
            Herrmann Web develoment

            Kommentar


            • #7
              Original geschrieben von mazeh22
              Ja das kenne ich auch.

              Graphviz ist eine super Visualisierungssoftware, aber das PEAR Package stellt nur eine Schnittstelle bereit, man benötigt also noch die eigentliche Graphviz Software auf dem Server, was nicht immer möglich ist.
              Ich meine irgendwo gelesen zu haben, das die neue Version das ohne die Graphviz Binaries kann.

              Ist jetzt aber von mir nicht geprüft

              Kommentar


              • #8
                Oh nett, gut Arbeit!

                Was ich hinsichtlich der ersten Demo noch dachte: Es wär echt genial wenn es eine Methode gäbe, der man praktisch ein assoziatives Array übergibt, die dann alles gleich passend einträgt Wie gesagt nur ein Vorschlag, (der ja nich allzuschwer umsetzbar ist) wennde willst kann ich dir auchn patch senden. Hab mir nur gedacht, wenn ich die Klasse brauchen würde wär das ein echt einfacher Weg zur Benutzung des der Klasse

                edit:

                Sowas meint' ich:
                PHP-Code:
                $cur_key 0;
                $cur_tree 0;
                $last_tree 0;

                public function 
                addArray($array) {
                    foreach(
                $array as $key => $value) {
                        if(
                is_array($key)) {
                            
                $this->add(++$cur_key$cur_tree$key);
                            
                $last_tree $cur_tree;
                            
                $cur_tree $cur_key;
                            
                $this->addArray($key);
                            
                $cur_tree $last_tree;
                        } else {
                            
                $this->add(++$cur_key$cur_tree$value);
                        }
                    }

                dann könnt zB son array nen einfachen tree ergeben:

                PHP-Code:
                $array = array("click" => array("Mein Name""Mein Deo""Meine Maus"),
                                             
                "php" => array("Sprache""Klasse"),
                                             
                "test",
                                             
                "ne");

                $objTree.>addArray($array); 
                Wie gesagt, nur son Gedanke (Der Sourcecode is auch noch ned getestet )
                Zuletzt geändert von Click; 28.11.2007, 16:44.
                Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                Denk' mal drüber nach!

                Kommentar


                • #9
                  Wow, sehr cool! Zieh mir gleich mal die Source und teste ein wenig rum, dann kann ich dir ein wenig Feedback geben. Die Demos sehen aber super aus


                  Edit:
                  Ganz cool fände ich, wenn man direkt mit den Node-Objekten den Baum aufbauen könnte:
                  PHP-Code:
                  $root = new Node'Wurzel' );
                  $root->addChild$un1 = new Node'Unterknoten 1' ) );
                  $root->addChild$un2 = new Node'Unterknoten 2' ) );
                  $root->addChild$un3 = new Node'Unterknoten 3' ) );
                  $un1->addChild$un1_1 = new Node'Unterknoten 1.1' ) );
                  // ...
                  foreach( $root->childNodes as $node ) {
                     
                  $node->image 'anyimage.jpg';

                  Ziemlich cool wäre auch, wenn man direkt am Knoten die Rahmenfarbe etc. setzen kann.
                  Zuletzt geändert von PHP-Desaster; 28.11.2007, 19:07.

                  Kommentar


                  • #10
                    Assoziative Arrays zur Konfiguration des Baums zu benutzen ist keine schlechte Idee. Ich werd mir das mal überlegen.
                    Das ganze könnte dann so aussehen:

                    PHP-Code:
                    $tree['config']['LevelSeparation'] = 40;
                    $tree['config']['SiblingSeparation'] = 40;
                    $tree['config']['SubtreeSeparation'] = 80;
                    $tree['config']['defaultWidth'] = 40;
                    $tree['config']['defaultHeight'] = 20;
                    $tree['nodes']['species']['style']['border'] = 2;
                    $tree['nodes']['species']['style']['bordercolor'] = '#0080FF';
                    $tree['nodes']['species']['style']['font'] = 'Arial.ttf';
                    $tree['nodes']['species']['style']['fontsize'] = '12';
                    $tree['nodes']['species']['style']['textposition'] = CENTER;
                    $tree['nodes']['species']['plants']['style']['bgimage'] = 'images/plant.png';
                    $tree['nodes']['species']['plants']['style']['border'] = 0;
                    $tree['nodes']['species']['animals']['style']['border'] = 1
                    PHP-Code:
                    Array
                    (
                        [
                    config] => Array
                            (
                                [
                    LevelSeparation] => 40
                                
                    [SiblingSeparation] => 40
                                
                    [SubtreeSeparation] => 80
                                
                    [defaultWidth] => 40
                                
                    [defaultHeight] => 20
                            
                    )

                        [
                    nodes] => Array
                            (
                                [
                    species] => Array
                                    (
                                        [
                    style] => Array
                                            (
                                                [
                    border] => 2
                                                
                    [bordercolor] => #0080FF
                                                
                    [font] => Arial.ttf
                                                
                    [fontsize] => 12
                                                
                    [textposition] => CENTER
                                            
                    )

                                        [
                    plants] => Array
                                            (
                                                [
                    style] => Array
                                                    (
                                                        [
                    bgimage] => images/plant.png
                                                        
                    [border] => 0
                                                    
                    )

                                            )

                                        [
                    animals] => Array
                                            (
                                                [
                    style] => Array
                                                    (
                                                        [
                    border] => 1
                                                    
                    )

                                            )

                                    )

                            )


                    oder im einfachsten Fall ohne jegliche Konfiguration des Baums eben so
                    PHP-Code:
                    $array = array("click" => array("Mein Name""Mein Deo""Meine Maus"), 
                    Herrmann Web develoment

                    Kommentar


                    • #11
                      Die Idee von PHP Desaster finde ich auch nett. Die IDee errinert mich übrigends stark an XML & Co

                      @ mazeh:

                      So in etwa meinte ich das, man müsste halt in der Routine addArray (so ähnlich wie ich die geschrieben hab nur noch einen if Zweig einführen, der auf das "style" Array prüft. SO könnte man sich dann immer ganz einfach die Struktur des Arrays übersichtlich als Bild generieren lassen. IMHO sehr praktisch
                      Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                      Denk' mal drüber nach!

                      Kommentar


                      • #12
                        Die IDee errinert mich übrigends stark an XML & Co
                        Darum ja. Perfekt wäre ein direktes Rendern von XML-Dokumenten ^^ Oder der Import eines DOMDocument-Objektes.

                        Kommentar

                        Lädt...
                        X