2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 17:26:34 +00:00

10_MQTT2_DEVICE.pm: add dashed lines to the map (Forum #101737)

git-svn-id: https://svn.fhem.de/fhem/trunk@19709 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2019-06-25 10:54:12 +00:00
parent b86ee78ce5
commit 3b65781ed0
3 changed files with 16 additions and 9 deletions

View File

@ -657,12 +657,14 @@ MQTT2_DEVICE_nlData($)
$h{$n}{title} = $v; $h{$n}{title} = $v;
$fo = $n if(!$fo); $fo = $n if(!$fo);
my @a; my @a; $h{$n}{neighbors} = \@a;
$h{$n}{neighbors} = \@a; my @b; $h{$n}{neighborstyles} = \@b;
} elsif($l =~ m/^\s*"([^"]+)"\s*->\s*"([^"]+)"\s\[label="([^"]*)"/) { } elsif($l =~ m/^\s*"([^"]+)"\s*->\s*"([^"]+)".*label="([^"]*)"/) {
push @{$h{$1}{neighbors}}, $2; my ($from,$to,$title) = ($1,$2,$3);
$h{$1}{title} .= "${div}lqi:$3"; push @{$h{$from}{neighbors}}, $to;
$h{$from}{title} .= "${div}lqi:$title";
push @{$h{$from}{neighborstyles}}, ($l =~ m/style="([^"]+)"/ ? $1 : "");
} }
} }
@ -672,13 +674,15 @@ MQTT2_DEVICE_nlData($)
for my $k (keys %h) { for my $k (keys %h) {
my $n = $h{$k}{neighbors}; my $n = $h{$k}{neighbors};
my $ns = $h{$k}{neighborstyles};
push @ret, '"'.$k.'":{'. push @ret, '"'.$k.'":{'.
'"class":"'.$h{$k}{class}.' col_link col_oddrow",'. '"class":"'.$h{$k}{class}.' col_link col_oddrow",'.
'"img":"'.$h{$k}{img}.'",'. '"img":"'.$h{$k}{img}.'",'.
'"txt":"'.$h{$k}{txt}.'",'. '"txt":"'.$h{$k}{txt}.'",'.
'"title":"'.$h{$k}{title}.'",'. '"title":"'.$h{$k}{title}.'",'.
'"pos":['.($dp{$k} ? $dp{$k} : '').'],'. '"pos":['.($dp{$k} ? $dp{$k} : '').'],'.
'"neighbors":['. (@{$n} ? ('"'.join('","',@{$n}).'"'):'').']}'; '"neighbors":['. (@{$n} ? ('"'.join('","',@{$n}).'"'):'').'],'.
'"neighborstyles":['. (@{$ns} ? ('"'.join('","',@{$ns}).'"'):'').']}';
} }
my $r = '{"firstObj":"'.$fo.'","el":{'.join(",",@ret).'},'. my $r = '{"firstObj":"'.$fo.'","el":{'.join(",",@ret).'},'.

View File

@ -169,6 +169,7 @@ svg.zw_nr .zwBox { stroke-width:2px; }
svg.zw_nr .zwDongle { stroke:red; stroke-width:2px; } svg.zw_nr .zwDongle { stroke:red; stroke-width:2px; }
svg.zw_nr .zwMargin { stroke-width:1px; fill:none; } svg.zw_nr .zwMargin { stroke-width:1px; fill:none; }
svg.zw_nr .zwLine { stroke-width:1px; } svg.zw_nr .zwLine { stroke-width:1px; }
svg.zw_nr .zwLine.dashed { stroke-dasharray:5,5 }
svg.zw_nr .zwArrowHead { stroke-width:1px; } svg.zw_nr .zwArrowHead { stroke-width:1px; }
svg.zw_nr { height:auto; width:auto; margin:0; } svg.zw_nr { height:auto; width:auto; margin:0; }

View File

@ -96,7 +96,7 @@ zw_draw(fnRet, width, height)
for(var o in h) { for(var o in h) {
if(h[o].txt && h[o].neighbors) if(h[o].txt && h[o].neighbors)
for(var i1=0; i1<h[o].neighbors.length; i1++) for(var i1=0; i1<h[o].neighbors.length; i1++)
svg += zw_drawline(ld, h, o, h[o].neighbors[i1]); svg += zw_drawline(ld, h, o, i1);
} }
for(var o in h) for(var o in h)
if(h[o].txt) if(h[o].txt)
@ -179,8 +179,10 @@ zw_calcPos(o, n)
} }
function function
zw_drawline(ld, h, o, n) zw_drawline(ld, h, o, i1)
{ {
var n = h[o].neighbors[i1];
var ns = h[o].neighborstyles[i1];
if(!h[o] || !h[n]) if(!h[o] || !h[n])
return ""; return "";
var bidi = false; var bidi = false;
@ -199,7 +201,7 @@ zw_drawline(ld, h, o, n)
h[n].lines.push(cl); h[n].lines.push(cl);
var fr = zw_calcPos(h[o], h[n]); var fr = zw_calcPos(h[o], h[n]);
var to = zw_calcPos(h[n], h[o]); var to = zw_calcPos(h[n], h[o]);
return '<line class="zwLine col_link" data-name="'+cl+ return '<line class="zwLine col_link '+ns+'" data-name="'+cl+
'" x1="'+fr.x+'" y1="'+fr.y+ '" x1="'+fr.x+'" y1="'+fr.y+
'" x2="'+to.x+'" y2="'+to.y+'"'+ '" x2="'+to.x+'" y2="'+to.y+'"'+
' marker-end="url(#endarrow)"'+ ' marker-end="url(#endarrow)"'+