use DBI;
use DBD::SQLite;
+use JSON::XS;
use Getopt::Long;
'db=s' => \my $opt_db,
) or exit 1;
+my $j = JSON::XS->new->ascii->pretty(0);
+
my $dbh = DBI->connect("dbi:SQLite:dbname=$opt_db","","", {
RaiseError => 1, PrintError => 0, AutoCommit => 0
});
self_size integer,
kids_size integer,
kids_node_count integer,
- child_ids text
+ child_ids text,
+ attr_json text
)
});
my $node_ins_sth = $dbh->prepare(q{
- INSERT INTO node VALUES (?,?,?,?, ?,?,?,?)
+ INSERT INTO node VALUES (?,?,?,?, ?,?,?,?,?)
});
my @stack;
print qq(], "data":{ "\$area": $size } },\n);
}
if ($dbh) {
+ my $attr_json = $j->encode($x->{attr});
$node_ins_sth->execute(
$x->{id}, $x->{name}, $x->{depth}, $x->{parent_id},
$x->{self_size}, $x->{kids_size}, $x->{kids_node_count},
- $x->{child_id} ? join(",", @{$x->{child_id}}) : undef
+ $x->{child_id} ? join(",", @{$x->{child_id}}) : undef,
+ $attr_json,
);
# XXX attribs
}
use strict;
use warnings;
+use JSON::XS;
use Mojolicious::Lite;
use ORLite {
#unicode => 1,
};
+my $j = JSON::XS->new;
+
# Documentation browser under "/perldoc"
plugin 'PODRenderer';
my ($id, $depth) = @_;
my $node = MemView->selectrow_hashref("select * from node where id = ?", undef, $id)
or die "Node '$id' not found";
+ $node->{attr}{self} = $j->decode(delete $node->{attr_json});
if ($node->{child_ids}) {
my @child_ids = split /,/, $node->{child_ids};
my $children;
$child->{name} = "$node->{name} + $child->{name}";
$child->{$_} += $node->{$_} for (qw(self_size));
$child->{$_} = $node->{$_} for (qw(parent_id));
+ Dwarn $node;
+ $child->{attr}{$node->{id}} = $node->{attr};
$child->{_ids_merged} .= ",$node->{id}";
my @child_ids = split /,/, $node->{child_ids};
html += sprintf("Depth: %d<br />", data.depth);
html += sprintf("Parent: %d<br />", data.parent_id);
html += sprintf("Id: %s%s<br />", node.id, data._ids_merged ? data._ids_merged : "");
- //html += JSON.stringify(data, undefined, 4);
+ html += JSON.stringify(data.attr, undefined, 4);
tip.innerHTML = html;
}