def decorated_func(ifo, start, end, *args, **kwargs): # set page init args initargs = { 'title': '%s Hveto | %d-%d' % (ifo, start, end), 'base': os.path.curdir, } for key in ['title', 'base']: if key in kwargs: initargs[key] = kwargs.pop(key) # find outdir outdir = kwargs.pop('outdir', initargs['base']) winners = kwargs.pop('winners', []) if not os.path.isdir(outdir): os.makedirs(outdir) # write about page try: config = kwargs.pop('config') except KeyError: about = None else: iargs = initargs.copy() aboutdir = os.path.join(outdir, 'about') if iargs['base'] == os.path.curdir: iargs['base'] = os.path.pardir about = write_about_page(ifo, start, end, config, outdir=aboutdir, **iargs) if os.path.basename(about) == 'index.html': about = about[:-10] # open page nav = navbar(ifo, start, winners) page = gwhtml.new_bootstrap_page(navbar=nav, **initargs) page.add(banner(ifo, start, end)) # write content page.add(str(func(*args, **kwargs))) # close page with custom footer index = os.path.join(outdir, 'index.html') version = get_versions()['version'] commit = get_versions()['full-revisionid'] url = 'https://github.com/gwdetchar/hveto/tree/{}'.format(commit) link = markup.oneliner.a('View hveto-{} on GitHub'.format(version), href=url, target='_blank') report = 'https://github.com/gwdetchar/hveto/issues' issues = markup.oneliner.a('Report an issue', href=report, target='_blank') gwhtml.close_page(page, index, about=about, link=link, issues=issues) return index
def decorated_func(ifo, start, end, *args, **kwargs): # set page init args initargs = { 'title': '%s Hveto | %d-%d' % (ifo, start, end), 'base': os.path.curdir, } for key in ['title', 'base']: if key in kwargs: initargs[key] = kwargs.pop(key) # find outdir outdir = kwargs.pop('outdir', initargs['base']) winners = kwargs.pop('winners', []) if not os.path.isdir(outdir): os.makedirs(outdir) # write about page try: config = kwargs.pop('config') except KeyError: about = None else: iargs = initargs.copy() aboutdir = os.path.join(outdir, 'about') if iargs['base'] == os.path.curdir: iargs['base'] = os.path.pardir about = write_about_page(ifo, start, end, config, outdir=aboutdir, **iargs) if os.path.basename(about) == 'index.html': about = about[:-10] # open page nav = navbar(ifo, start, winners) page = gwhtml.new_bootstrap_page(navbar=nav, **initargs) page.add(banner(ifo, start, end)) # write content page.add(str(func(*args, **kwargs))) # close page with custom footer index = os.path.join(outdir, 'index.html') version = get_versions()['version'] commit = get_versions()['full-revisionid'] url = 'https://github.com/gwdetchar/hveto/tree/{}'.format(commit) link = markup.oneliner.a( 'View hveto-{} on GitHub'.format(version), href=url, target='_blank') report = 'https://github.com/gwdetchar/hveto/issues' issues = markup.oneliner.a( 'Report an issue', href=report, target='_blank') gwhtml.close_page(page, index, about=about, link=link, issues=issues) return index
def write_html(self, maincontent, title=None, subtitle=None, tabs=list(), ifo=None, ifomap=dict(), brand=None, base=None, css=None, js=None, about=None, footer=None, issues=True, **inargs): """Write the HTML page for this `Tab`. Parameters ---------- maincontent : `str`, `~MarkupPy.markup.page` simple string content, or a structured `page` of markup to embed as the content of the #main div. title : `str`, optional, default: {parent.name} level 1 heading for this `Tab`. subtitle : `str`, optional, default: {self.name} level 2 heading for this `Tab`. tabs: `list`, optional list of top-level tabs (with children) to populate navbar ifo : `str`, optional prefix for this IFO. ifomap : `dict`, optional `dict` of (ifo, {base url}) pairs to map to summary pages for other IFOs. brand : `str`, `~MarkupPy.markup.page`, optional non-menu content for navigation bar css : `list`, optional list of resolvable URLs for CSS files. See `gwsumm.html.CSS` for the default list. js : `list`, optional list of resolvable URLs for javascript files. See `gwumm.html.JS` for the default list. about : `str`, optional href for the 'About' page footer : `str`, `~MarkupPy.markup.page` user-defined content for the footer (placed below everything else) issues : `bool` or `str`, default: `True` print link to github.com issue tracker for this package **inargs other keyword arguments to pass to the :meth:`~Tab.build_inner_html` method """ # setup directories outdir = os.path.split(self.index)[0] if outdir and not os.path.isdir(outdir): os.makedirs(outdir) # get default style and scripts if css is None: css = list(html.get_css().values()) if js is None: js = list(html.get_js().values()) # find relative base path if base is None: n = len(self.index.split(os.path.sep)) - 1 base = os.sep.join([os.pardir] * n) if not base.endswith('/'): base += '/' # set default title if title is None: title = self.shorttitle.replace('/', ' | ') # construct navigation if tabs: navbar = str(self.html_navbar(ifo=ifo, ifomap=ifomap, tabs=tabs, brand=brand)) # initialize page self.page = gwhtml.new_bootstrap_page( title=title, base=base, css=css, script=js, navbar=navbar) # add banner self.page.add(str(self.html_banner( title=title.replace('|', ':'), subtitle=subtitle))) # add #main content self.page.add(str(self.html_content(maincontent))) # format custom footer version = get_versions()['version'] commit = get_versions()['full-revisionid'] url = 'https://github.com/gwpy/gwsumm/tree/{}'.format(commit) link = markup.oneliner.a( 'View gwsumm-{} on GitHub'.format(version), href=url, target='_blank') issues = markup.oneliner.a( 'Report an issue', href=issues, target='_blank') # close page and write gwhtml.close_page(self.page, self.index, about=about, link=link, issues=issues, content=footer) return
def write_html(self, maincontent, title=None, subtitle=None, tabs=list(), ifo=None, ifomap=dict(), brand=None, base=None, css=None, js=None, about=None, footer=None, issues=True, **inargs): """Write the HTML page for this `Tab`. Parameters ---------- maincontent : `str`, `~MarkupPy.markup.page` simple string content, or a structured `page` of markup to embed as the content of the #main div. title : `str`, optional, default: {parent.name} level 1 heading for this `Tab`. subtitle : `str`, optional, default: {self.name} level 2 heading for this `Tab`. tabs: `list`, optional list of top-level tabs (with children) to populate navbar ifo : `str`, optional prefix for this IFO. ifomap : `dict`, optional `dict` of (ifo, {base url}) pairs to map to summary pages for other IFOs. brand : `str`, `~MarkupPy.markup.page`, optional non-menu content for navigation bar css : `list`, optional list of resolvable URLs for CSS files. See `gwsumm.html.CSS` for the default list. js : `list`, optional list of resolvable URLs for javascript files. See `gwumm.html.JS` for the default list. about : `str`, optional href for the 'About' page footer : `str`, `~MarkupPy.markup.page` user-defined content for the footer (placed below everything else) issues : `bool` or `str`, default: `True` print link to github.com issue tracker for this package **inargs other keyword arguments to pass to the :meth:`~Tab.build_inner_html` method """ # setup directories outdir = os.path.split(self.index)[0] if outdir and not os.path.isdir(outdir): os.makedirs(outdir) # get default style and scripts if css is None: css = list(html.get_css().values()) if js is None: js = list(html.get_js().values()) # find relative base path if base is None: n = len(self.index.split(os.path.sep)) - 1 base = os.sep.join([os.pardir] * n) if not base.endswith('/'): base += '/' # set default title if title is None: title = self.shorttitle.replace('/', ' | ') # construct navigation if tabs: navbar = str(self.html_navbar(ifo=ifo, ifomap=ifomap, tabs=tabs, brand=brand)) # initialize page self.page = gwhtml.new_bootstrap_page( title=title, base=base, path=self.path, css=css, script=js, navbar=navbar) # add banner self.page.add(str(self.html_banner( title=title.replace('|', ':'), subtitle=subtitle))) # add help button if self.notes is not None: self.page.add(str(html.dialog_box(self.notes, id_='help'))) self.page.button( markup.oneliner.span('?'), title='Help', onclick="showDialog('help')", class_='btn-float', id_='help-btn') # add #main content self.page.add(str(self.html_content(maincontent))) # format custom footer version = get_versions()['version'] commit = get_versions()['full-revisionid'] url = 'https://github.com/gwpy/gwsumm/tree/{}'.format(commit) link = markup.oneliner.a( 'View gwsumm-{} on GitHub'.format(version), href=url, target='_blank') issues = markup.oneliner.a( 'Report an issue', href=issues, target='_blank') # close page and write gwhtml.close_page(self.page, self.index, about=about, link=link, issues=issues, content=footer) return