Changeset 32:6bc25517ac4f

Show
Ignore:
Timestamp:
08/23/11 16:45:30 (13 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

Diagramy #13 – první verze, celkem funguje.

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • vstup/css/styl.css

    r31 r32  
    6161        border-radius: 4px; 
    6262} 
     63 
     64.diagram { 
     65        background-color: #ddf; 
     66        padding: 6px; 
     67        border-radius: 4px; 
     68        text-align: center; 
     69        max-width: 100%; 
     70        overflow: auto; 
     71} 
     72 
     73.diagram .nadpis { 
     74        font-size: 60%; 
     75        padding: 4px; 
     76        margin-top: 6px; 
     77        margin-bottom: -6px; 
     78        margin-left: -6px; 
     79        margin-right: -6px;      
     80        background-color: #d0d0f0; 
     81        border-radius: 0px 0px 4px 4px; 
     82} 
  • vstup/kontakt.xml

    r18 r32  
    1 <stránka xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"> 
     1<stránka 
     2        xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana" 
     3        xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"> 
    24        <nadpis>Kontakt</nadpis> 
    35        <perex>Kde nás najdete.</perex> 
     
    1315                        Česká republika 
    1416        </p> 
     17         
     18        <h2>Organizační struktura</h2> 
     19         
     20        <p> 
     21                Zde je orgranizační struktura naší skvělé firmy: 
     22        </p> 
     23         
     24        <m:diagram nadpis="Naše organizační struktura">                  
     25                        tovarnik[label="pan továrník\n(majitel)"]; 
     26                        reditel[label="pan ředitel"]; 
     27                        sekretarka[label="slečna sekretářka"]; 
     28                        root[label="Linuxový guru"]; 
     29                        architekt[label="Softwarový architekt"]; 
     30                         
     31                        tovarnik -> reditel; 
     32                         
     33                        reditel -> sekretarka; 
     34                        reditel -> architekt; 
     35                        reditel -> root; 
     36        </m:diagram> 
     37         
     38        <h2>Procesy</h2> 
     39         
     40        <p> 
     41                Ve firmě máme spoustu procesů. Jeden z nich vypadá takto: 
     42        </p> 
     43         
     44        <m:diagram orientace="vodorovně"> 
     45                        A -> B; 
     46                        B -> C; 
     47        </m:diagram> 
     48         
     49        <p> 
     50                Ale protože je to tajné, tak vám neřekneme, co A, B a C znamenají. 
     51        </p> 
     52         
    1553    </text> 
    1654 
  • šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java

    r31 r32  
    1414 * Knihovna funkcí volaných z XSLT. 
    1515 *   
    16  * TODO: časem rozdělit na více modulů (jmenných prostorů). 
     16 * TODO:  
     17 *      - rozdělit na více modulů (jmenných prostorů). 
     18 *      - CLI konektor 
    1719 *  
    1820 * @author fiki 
     
    2123 
    2224        private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize"; 
     25        private static final String PŘÍKAZ_DOT = "dot"; 
    2326        private static final String PŘÍKAZ_WHICH = "which"; 
     27        private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup"; 
     28        private static int počítadloDiagramů = 0; 
    2429 
    2530        /** 
     
    9297 
    9398        /** 
     99         * Vytvoří obrázek s diagramem. 
     100         * @param zadání definice diagramu ve formátu dot 
     101         * @param vodorovně zda má být graf orientovaný vodorovně 
     102         * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě. 
     103         */ 
     104        public static String vytvořDiagram(String zadání, boolean vodorovně) throws IOException, InterruptedException { 
     105                if (isPrikazDostupny(PŘÍKAZ_DOT)) { 
     106                        počítadloDiagramů++; 
     107                        String soubor = "diagram-" + počítadloDiagramů; 
     108                        String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor; 
     109 
     110                        StringBuilder zdroják = new StringBuilder(zadání.length() + 200); 
     111 
     112                        zdroják.append("digraph d {\n"); 
     113                        zdroják.append("\tbgcolor=\"transparent\";\n"); 
     114                        if (vodorovně) { 
     115                                zdroják.append("\trankdir=LR;"); 
     116                        } 
     117                        zdroják.append(zadání); 
     118                        zdroják.append("}\n"); 
     119 
     120                        Runtime r = Runtime.getRuntime(); 
     121                        Process p = r.exec(new String[]{PŘÍKAZ_DOT, "-T", "svg", "-o", souborSložka + ".svg"}); 
     122 
     123                        /** 
     124                         * TODO: generovat i PNG bitmapu 
     125                         */ 
     126                        PrintStream vstupProcesu = new PrintStream(p.getOutputStream()); 
     127                        vstupProcesu.print(zdroják.toString()); 
     128                        vstupProcesu.close(); 
     129 
     130                        String chyby = načtiProud(p.getErrorStream()); 
     131 
     132                        p.waitFor(); 
     133 
     134                        if (chyby.length() == 0) { 
     135                                return soubor; 
     136                        } else { 
     137                                System.err.print("Při vytváření diagramu došlo k chybě: " + chyby); 
     138                                return null; 
     139                        } 
     140                } else { 
     141                        System.err.println("Příkaz " + PŘÍKAZ_DOT + " není na vašem systému dostupný → diagramy nelze vygreslit."); 
     142                        System.err.println("Můžete ho nainstalovat pomocí:"); 
     143                        System.err.println("\t$ aptitude install graphviz   # (Debian/Ubuntu)"); 
     144                        System.err.println("\t$ yum install graphviz        # (Fedora/RedHat)"); 
     145                        return null; 
     146                } 
     147        } 
     148 
     149        /** 
    94150         * Čte proud dat dokud to jde a výsledek pak vrátí jako text. 
    95151         * @param proud vstupní proud 
  • šablona/stránka.xsl

    r29 r32  
    130130                </xsl:otherwise> 
    131131        </xsl:choose> 
    132     </xsl:template>    
     132    </xsl:template> 
     133     
     134    <!-- 
     135        Makro pro diagramy/grafy 
     136    --> 
     137    <xsl:template match="m:diagram"> 
     138        <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/> 
     139        <xsl:choose> 
     140                        <xsl:when test="$souborDiagramu"> 
     141                                <div class="diagram"> 
     142                                        <a href="{$souborDiagramu}.svg"> 
     143                                                <img src="{$souborDiagramu}.svg" alt="Diagram {$souborDiagramu}"/> 
     144                                        </a> 
     145                                        <!-- TODO: SVG+PNG  
     146                                        <object data="{$souborDiagramu}.svg" type="image/svg+xml"> 
     147                                                <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/> 
     148                                        </object> 
     149                                         --> 
     150                                        <xsl:if test="@nadpis"> 
     151                                                <p class="nadpis"><xsl:value-of select="@nadpis"/></p> 
     152                                        </xsl:if> 
     153                                </div> 
     154                        </xsl:when> 
     155                        <xsl:otherwise> 
     156                                <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message> 
     157                        </xsl:otherwise> 
     158        </xsl:choose> 
     159    </xsl:template> 
    133160 
    134161</xsl:stylesheet>