navigate_results: made generated HTML compliant

- Added some missing alt attributes
- Added DOCTYPE
- Added language
- Added title
- Made tables regular (all same amount of td)
This commit is contained in:
Salvador E. Tropea 2022-05-29 13:41:53 -03:00
parent 8c8f9a7a4b
commit 1b318f0da4
1 changed files with 29 additions and 28 deletions

View File

@ -150,25 +150,30 @@ class Navigate_ResultsOptions(BaseOptions):
prev += '.html'
f.write('<table class="nav-table">')
f.write(' <tr>')
f.write(' <td><a href="{}"><img src="images/back.svg" width="{}" height="{}"></a></td>'.
f.write(' <td><a href="{}"><img src="images/back.svg" width="{}" height="{}" alt="go back"></a></td>'.
format(prev, MID_ICON, MID_ICON))
f.write(' <td><a href="{}"><img src="images/home.svg" width="{}" height="{}"></a></td>'.
f.write(' <td><a href="{}"><img src="images/home.svg" width="{}" height="{}" alt="go home"></a></td>'.
format(self.home, MID_ICON, MID_ICON))
f.write(' </tr>')
f.write('</table>')
f.write('<p class="generator">Generated by <a href="https://github.com/INTI-CMNB/KiBot/">KiBot</a> v{}</p>'.
format(__version__))
def generate_cat_page_for(self, name, node, prev):
def write_head(self, f, title):
f.write('<!DOCTYPE html>\n')
f.write('<html lang="en">\n')
f.write('<head>\n')
f.write(' <title>{}</title>\n'.format(title if title else 'Main page'))
f.write(' <meta charset="UTF-8">\n') # UTF-8 encoding for unicode support
f.write(' <link rel="stylesheet" href="styles.css">\n')
f.write(' <link rel="icon" href="favicon.ico">\n')
f.write('</head>\n')
f.write('<body>\n')
def generate_cat_page_for(self, name, node, prev, category):
logger.debug('- Categories: '+str(node.keys()))
with open(os.path.join(self.out_dir, name), 'wt') as f:
f.write('<html>\n')
f.write('<head>\n')
f.write(' <meta charset="UTF-8">\n') # UTF-8 encoding for unicode support
f.write(' <link rel="stylesheet" href="styles.css">\n')
f.write(' <link rel="icon" href="favicon.ico">\n')
f.write('</head>\n')
f.write('<body>\n')
self.write_head(f, category)
name, ext = os.path.splitext(name)
# Limit to 5 categories by row
c_cats = len(node)
@ -177,28 +182,22 @@ class Navigate_ResultsOptions(BaseOptions):
acc = 0
f.write('<table class="cat-table">\n<tr>\n')
for cat, content in node.items():
pname = name+'_'+cat+ext
self.generate_page_for(content, pname, name)
f.write(' <td><a href="{}">{}</a></p></td>\n'.format(pname, self.get_image_for_cat(cat)))
acc += 1
if acc >= by_row:
# Flush the table and create another
acc = 0
f.write('</tr>\n</table>\n<table class="cat-table">\n<tr>\n')
pname = name+'_'+cat+ext
self.generate_page_for(content, pname, name, category+'/'+cat)
f.write(' <td><a href="{}">{}</a></td>\n'.format(pname, self.get_image_for_cat(cat)))
acc += 1
f.write('</tr>\n</table>\n')
self.add_back_home(f, prev)
f.write('</body>\n</html>\n')
def generate_end_page_for(self, name, node, prev):
def generate_end_page_for(self, name, node, prev, category):
logger.debug('- Outputs: '+str(node.keys()))
with open(os.path.join(self.out_dir, name), 'wt') as f:
f.write('<html>\n')
f.write('<head>\n')
f.write(' <meta charset="UTF-8">\n') # UTF-8 encoding for unicode support
f.write(' <link rel="stylesheet" href="styles.css">\n')
f.write(' <link rel="icon" href="favicon.ico">\n')
f.write('</head>\n')
f.write('<body>\n')
self.write_head(f, category)
name, ext = os.path.splitext(name)
for oname, out in node.items():
f.write('<table class="output-table">\n')
@ -212,24 +211,26 @@ class Navigate_ResultsOptions(BaseOptions):
f.write('<tbody><tr>\n')
c = 0
for tg in out.get_targets(out_dir):
if c == OUT_COLS:
f.write('</tr>\n<tr>\n')
c = 0
tg = os.path.relpath(os.path.abspath(tg), start=self.out_dir)
f.write('<td class="out-cell"><a href="{}">{}</a></td>\n'.
format(tg, self.get_image_for_file(os.path.basename(tg))))
c = c+1
if c == OUT_COLS:
f.write('</tr>\n<tr>\n')
c = 0
for _ in range(c, OUT_COLS):
f.write('<td class="out-cell"></td>\n')
f.write('</tr></tbody>\n')
f.write('</table>\n')
self.add_back_home(f, prev)
f.write('</body>\n</html>\n')
def generate_page_for(self, node, name, prev=None):
def generate_page_for(self, node, name, prev=None, category=''):
logger.debug('Generating page for '+name)
if isinstance(list(node.values())[0], dict):
self.generate_cat_page_for(name, node, prev)
self.generate_cat_page_for(name, node, prev, category)
else:
self.generate_end_page_for(name, node, prev)
self.generate_end_page_for(name, node, prev, category)
def run(self, name):
self.out_dir = os.path.dirname(name)