nix/pkgs/subnetplan: use colspan

This commit is contained in:
Astro 2021-11-18 04:17:10 +01:00
parent 9e39f9b21f
commit 3902efd3f3
1 changed files with 18 additions and 12 deletions

View File

@ -26,11 +26,12 @@ class Group
end
class Block
attr_accessor :label, :name
attr_accessor :label, :name, :span
def initialize label, name
@label = label
@name = name
@span = 1
end
end
@ -72,25 +73,25 @@ groups = groups.collect do |group, nets|
blocks = []
row = []
x = 0
allnet.subnet(max_prefix).each do |addr|
net = nets.select { |net| net.addr.include? addr }[0]
label = net ? "#{addr}/#{net.addr.prefix}" : addr.to_s
row << Block.new(label, net ? net.desc : "")
if row.size >= TABLE_WIDTH
name = net ? net.desc : ""
if row.last and name != "" and row.last.name == name
row.last.span += 1
else
row << Block.new(label, name)
end
x += 1
if x >= TABLE_WIDTH
blocks << row
row = []
x = 0
end
end
blocks << row if row.size > 0
blocks.each do |row|
prev_name = nil
row.each_with_index do |block|
block.label = "" if prev_name == block.name
prev_name = block.name
end
end
Group.new(allnet, blocks)
end
@ -117,6 +118,11 @@ html = ERB::new <<~EOF
<html>
<head>
<title>Subnetwork Plan</title>
<style>
table {
margin: 3rem auto;
}
</style>
</head>
<body>
<table border="1">
@ -127,7 +133,7 @@ html = ERB::new <<~EOF
<% group.blocks.each do |row| %>
<tr>
<% row.each do |block| %>
<td style="background-color: <%= background_color(block.name) %>"><%= block.label %> <%= block.name %></td>
<td colspan="<%= block.span %>" style="background-color: <%= background_color(block.name) %>"><%= block.label %> <%= block.name %></td>
<% end %>
</tr>
<% end %>