This question about Using an extension: Task closed

GraphvizPlugin table example: string ran past end of line

I just installed the GraphvizPlugin and tried to generate a Graph as described in GraphvizPlugin#Graphviz_from_Table (using the exact same code as on the Plugin Page). It looks like this:
| *Node* | *Attributes* |
| hello | color="red" |
| world | shape=box |

| *Source* | *Label* | *Target* | *Attributes* |
| hello | | world | |

Given these two tables where the only two tables in a topic then this would render the appropriate graph:

%GRAPHVIZ{
   topic="GraphvizTest"

   nodestable="0" 
   nodecol="0"
   nodeattrcol="1"

   edgestable="1"
   sourcecol="0"
   labelcol="1"
   targetcol="2"
   edgeattrcol="3"
}%

After saving the page for the first time I got this message (instead of a graph):
Warning: string ran past end of line
Error: /tmp/QRNZOFPrVI.dot:4: syntax error near line 4
context:   "world" [1]"]  "hello" -> "world" [xlabel="", >>>  3]"] <<< }
00001: digraph GraphViz {
00002: 
00003: 
00004:   "hello" [1]"]
00005:   "world" [1]"]  "hello" -> "world" [xlabel="", 3]"]}

After reloading the page, a graph was being displayed, but not the one I expected (more nodes with square brackets, probably resulting from the error above).
  • I use foswiki 2.1.3
  • Checked the InstalledPlugins page - no errors
-- EinExperte - 21 Oct 2017

Good morning anonymous expert. You are correct. The example does not work.

There is an error in the code of the GraphvizPlugin/TableParser.pm module. Here is the patch:
diff --git a/lib/Foswiki/Plugins/GraphvizPlugin/TableParser.pm b/lib/Foswiki/Plugins/GraphvizPlugin/TableParser.pm
index 162c7d3..947173e 100644
--- a/lib/Foswiki/Plugins/GraphvizPlugin/TableParser.pm
+++ b/lib/Foswiki/Plugins/GraphvizPlugin/TableParser.pm
@@ -47,7 +47,7 @@ sub getNodes {
       $index++;
       next if $index == 1;# skip header
       my @attrs = ();
-      push @attrs, "$params->{nodeattrcol}]\"" if defined $params->{nodeattrcol};
+      push @attrs, "$row->[$params->{nodeattrcol}]" if defined $params->{nodeattrcol};
       my $attrs = '';
       $attrs = "[".join(", ", @attrs)."]" if @attrs;
       push @lines, "  \"$row->[$params->{nodecol}]\" $attrs";
@@ -77,7 +77,7 @@ sub getEdges {
       next if $index == 1;# skip header
       my @attrs = ();
       push @attrs, "xlabel=\"$row->[$params->{labelcol}]\"" if defined $params->{labelcol};
-      push @attrs, "$params->{edgeattrcol}]\"" if defined $params->{edgeattrcol};
+      push @attrs, "$row->[$params->{edgeattrcol}]" if defined $params->{edgeattrcol};
       my $attrs = '';
       $attrs = "[".join(", ", @attrs)."]" if @attrs;
       push @lines, "  \"$row->[$params->{sourcecol}]\" -> \"$row->[$params->{targetcol}]\" $attrs";

I will create a task and uploadt the change to github

-- BramVanOosterhout - 20 Nov 2017

Awesome. Will create a new release based on Tasks.Item14531

-- MichaelDaum - 20 Nov 2017
 

QuestionForm edit

Subject Using an extension
Extension GraphvizPlugin
Version Foswiki 2.1.3
Status Task closed
Related Topics Tasks.Item14531
Topic revision: r3 - 20 Nov 2017, MichaelDaum - This page was cached on 17 Nov 2018 - 23:56.

The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy