Diagramy #13: číslování v rámci stránky + u diagramů ze souboru použijeme název souboru se zadáním.
1.1 --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Sat Jan 07 17:34:57 2012 +0100
1.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Sat Jan 07 18:45:54 2012 +0100
1.3 @@ -23,6 +23,8 @@
1.4 import java.util.Date;
1.5 import java.net.URI;
1.6 import java.net.URISyntaxException;
1.7 +import java.net.URLDecoder;
1.8 +import java.nio.charset.Charset;
1.9 import static cz.frantovo.xmlWebGenerator.NástrojeCLI.*;
1.10
1.11 /**
1.12 @@ -41,6 +43,7 @@
1.13 private static final String PŘÍKAZ_MARKDOWN = "markdown";
1.14 private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
1.15 private static int počítadloDiagramů = 0;
1.16 + private static String počítadloDiagramůKontext = "";
1.17
1.18 /**
1.19 * Zjištuje, kdy byl naposledy daný soubor změněn.
1.20 @@ -115,12 +118,38 @@
1.21 * @param zadání definice diagramu ve formátu dot
1.22 * @param vodorovně zda má být graf orientovaný vodorovně (funguje jen při <code>kompletní = false</code>)
1.23 * @param kompletní false, pokud k zadání chceme doplnit <code>digraph d {…}</code>
1.24 + * @param kontext kam diagram patří – typicky název stránky, do které je vložen
1.25 + * diagramy se pak budou číslovat v rámci tohoto kontextu
1.26 + * → nebude docházet k přepisování diagramů jiných stránek při částečném přegenerování webu.
1.27 + * @param souborZadání null pokud chceme automatické číslování | nebo zadáme název souboru se zadáním diagramu – vygenerovaný diagram se pak bude jmenovat stejně
1.28 * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě.
1.29 */
1.30 - public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní) throws IOException, InterruptedException {
1.31 + public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní, String kontext, String souborZadání) throws IOException, InterruptedException {
1.32 if (isPříkazDostupný(PŘÍKAZ_DOT)) {
1.33 - počítadloDiagramů++;
1.34 - String soubor = "diagram-" + počítadloDiagramů;
1.35 + System.err.println("XXX Kontext: " + URLDecoder.decode(kontext, Charset.defaultCharset().name()));
1.36 + System.err.println("XXX Soubor: " + souborZadání);
1.37 +
1.38 + String soubor;
1.39 + if (souborZadání == null) {
1.40 + if (kontext == null) {
1.41 + počítadloDiagramů++;
1.42 + soubor = "diagram-" + počítadloDiagramů;
1.43 + } else {
1.44 + // TODO: tohle by se mělo udělat v XSLT
1.45 + kontext = URLDecoder.decode(kontext, Charset.defaultCharset().name());
1.46 +
1.47 + // Každá stránka bude mít svoje diagramy číslované od 1
1.48 + if (!počítadloDiagramůKontext.equals(kontext)) {
1.49 + počítadloDiagramůKontext = kontext;
1.50 + počítadloDiagramů = 0;
1.51 + }
1.52 +
1.53 + počítadloDiagramů++;
1.54 + soubor = "diagram-" + kontext + "-" + počítadloDiagramů;
1.55 + }
1.56 + } else {
1.57 + soubor = souborZadání;
1.58 + }
1.59 String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor;
1.60
1.61 String zdroják;
2.1 --- a/šablona/makra/diagramy.xsl Sat Jan 07 17:34:57 2012 +0100
2.2 +++ b/šablona/makra/diagramy.xsl Sat Jan 07 18:45:54 2012 +0100
2.3 @@ -51,13 +51,19 @@
2.4 <xsl:template name="vložDiagram">
2.5 <xsl:param name="zadání"/>
2.6 <xsl:param name="kompletní"/>
2.7 - <xsl:variable name="souborDiagramu" select="j:vytvořDiagram($zadání, @orientace = 'vodorovně', $kompletní)"/>
2.8 + <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(
2.9 + $zadání,
2.10 + @orientace = 'vodorovně',
2.11 + $kompletní,
2.12 + tokenize(base-uri(), '/')[last()],
2.13 + @src
2.14 + )"/>
2.15 <xsl:choose>
2.16 <xsl:when test="$souborDiagramu">
2.17 <div class="diagram">
2.18 - <a href="{$souborDiagramu}.svg">
2.19 + <a href="{encode-for-uri($souborDiagramu)}.svg">
2.20 <img
2.21 - src="{$souborDiagramu}.svg"
2.22 + src="{encode-for-uri($souborDiagramu)}.svg"
2.23 alt="Diagram {(@nadpis, $souborDiagramu)[1]} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
2.24 title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
2.25 </a>