Implement proof-of-concept HTML output
This commit is contained in:
parent
a5035456ea
commit
2eb6f1caff
@ -254,24 +254,79 @@ class Harness:
|
|||||||
d.render(filename=filename, directory=directory, view=view, cleanup=cleanup)
|
d.render(filename=filename, directory=directory, view=view, cleanup=cleanup)
|
||||||
d.save(filename='{}.gv'.format(filename), directory=directory)
|
d.save(filename='{}.gv'.format(filename), directory=directory)
|
||||||
# bom output
|
# bom output
|
||||||
|
# connectors
|
||||||
|
_con = self.bom_connectors()
|
||||||
|
header_con = ['Type','Subtype','Pin count','Qty','Designators']
|
||||||
|
bom_con = tuplelist2tsv(_con, header_con)
|
||||||
|
# cables
|
||||||
|
_cbl, _cut = self.bom_cables_and_cutlist()
|
||||||
|
header_cbl = ['Gauge','Gauge unit','Wire count','Shield','Total length','Designators']
|
||||||
|
bom_cbl = tuplelist2tsv(_cbl, header_cbl)
|
||||||
|
# cutlist
|
||||||
|
header_cut = ['Gauge','Gauge unit','Wire count','Shield','Length','Qty','Designators']
|
||||||
|
bom_cut = tuplelist2tsv(_cut, header_cut)
|
||||||
if gen_bom:
|
if gen_bom:
|
||||||
# connectors
|
|
||||||
_con = self.bom_connectors()
|
|
||||||
header_con = ['Type','Subtype','Pin count','Qty','Designators']
|
|
||||||
bom_con = tuplelist2tsv(_con, header_con)
|
|
||||||
with open('{}.connectors.bom.tsv'.format(filename),'w') as file:
|
with open('{}.connectors.bom.tsv'.format(filename),'w') as file:
|
||||||
file.write(bom_con)
|
file.write(bom_con)
|
||||||
# cables
|
|
||||||
_cbl, _cut = self.bom_cables_and_cutlist()
|
|
||||||
header_cbl = ['Gauge','Gauge unit','Wire count','Shield','Total length','Designators']
|
|
||||||
bom_cbl = tuplelist2tsv(_cbl, header_cbl)
|
|
||||||
with open('{}.cables.bom.tsv'.format(filename),'w') as file:
|
with open('{}.cables.bom.tsv'.format(filename),'w') as file:
|
||||||
file.write(bom_cbl)
|
file.write(bom_cbl)
|
||||||
# cutlist
|
|
||||||
header_cut = ['Gauge','Gauge unit','Wire count','Shield','Length','Qty','Designators']
|
|
||||||
bom_cut = tuplelist2tsv(_cut, header_cut)
|
|
||||||
with open('{}.cutlist.bom.tsv'.format(filename),'w') as file:
|
with open('{}.cutlist.bom.tsv'.format(filename),'w') as file:
|
||||||
file.write(bom_cut)
|
file.write(bom_cut)
|
||||||
|
# HTML documentation
|
||||||
|
with open('{}.html'.format(filename),'w') as file:
|
||||||
|
file.write('<html><body>')
|
||||||
|
file.write('<h1>Diagram</h1>')
|
||||||
|
with open('{}.svg'.format(filename),'r') as svg:
|
||||||
|
for l in svg:
|
||||||
|
file.write(l)
|
||||||
|
|
||||||
|
file.write('<h1>BOM</h1>')
|
||||||
|
|
||||||
|
listy = flatten2d(self.bom_connectors())
|
||||||
|
file.write('<h2>Connectors</h2>')
|
||||||
|
file.write('<table border="1">')
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in header_con:
|
||||||
|
file.write('<th>{}</th>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
for row in listy:
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in row:
|
||||||
|
file.write('<td>{}</td>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
file.write('</table>')
|
||||||
|
|
||||||
|
bom_cbl, bom_cut = self.bom_cables_and_cutlist()
|
||||||
|
file.write('<h2>Cables</h2>')
|
||||||
|
listy = flatten2d(bom_cbl)
|
||||||
|
file.write('<table border="1">')
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in header_cbl:
|
||||||
|
file.write('<th>{}</th>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
for row in listy:
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in row:
|
||||||
|
file.write('<td>{}</td>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
file.write('</table>')
|
||||||
|
|
||||||
|
file.write('<h2>Cutlist</h2>')
|
||||||
|
listy = flatten2d(bom_cut)
|
||||||
|
file.write('<table border="1">')
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in header_cut:
|
||||||
|
file.write('<th>{}</th>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
for row in listy:
|
||||||
|
file.write('<tr>')
|
||||||
|
for item in row:
|
||||||
|
file.write('<td>{}</td>'.format(item))
|
||||||
|
file.write('</tr>')
|
||||||
|
file.write('</table>')
|
||||||
|
|
||||||
|
|
||||||
|
file.write('</body></html>')
|
||||||
|
|
||||||
def bom_connectors(self):
|
def bom_connectors(self):
|
||||||
bom = []
|
bom = []
|
||||||
@ -686,14 +741,16 @@ def parse(file_in, file_out=None, gen_bom=False):
|
|||||||
|
|
||||||
h.output(filename=file_out, format=('png','svg'), gen_bom=gen_bom, view=False)
|
h.output(filename=file_out, format=('png','svg'), gen_bom=gen_bom, view=False)
|
||||||
|
|
||||||
|
def flatten2d(input):
|
||||||
|
output = [[str(item) if not isinstance(item, List) else ', '.join(item) for item in row] for row in input]
|
||||||
|
return output
|
||||||
|
|
||||||
def tuplelist2tsv(input, header=None):
|
def tuplelist2tsv(input, header=None):
|
||||||
output = ''
|
output = ''
|
||||||
if header is not None:
|
if header is not None:
|
||||||
input.insert(0, header)
|
input.insert(0, header)
|
||||||
|
input = flatten2d(input)
|
||||||
for row in input:
|
for row in input:
|
||||||
for i,item in enumerate(row):
|
|
||||||
if isinstance(item, List):
|
|
||||||
row[i] = ', '.join(item)
|
|
||||||
output = output + '\t'.join(str(item) for item in row) + '\n'
|
output = output + '\t'.join(str(item) for item in row) + '\n'
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user