extends layout mixin get_name(link, prefix, i) - var name = typeof link.name == 'string' ? link.name : undefined - var prompt = typeof link.prompt == 'string' ? link.prompt : undefined - var prefix = typeof prefix == 'string' ? prefix + ': ' : '' |#{prefix + (name || prompt || '#' + i)} // TODO: Show show a 'copy' button to copy the entire link block href if typeof href != 'string' div: i no href else div - var splits = urlgenerator.split(href) for split in splits a(href=urlgenerator.render(split[1]), title='Explore #{split[1]}') #{split[0]} | block link - var href = link.href div a(class='btn btn-primary btn-mini', href=urlgenerator.render(href)) Explore | a(class='btn btn-primary btn-mini', href=href) Raw dl dt href dd block href dt rel dd if urlgenerator.isUrl(link.rel) a(href=link.rel) #{link.rel} else | #{link.rel} dt name dd if link.name | #{link.name} else i Not set dt prompt dd if link.prompt | #{link.prompt} else i Not set if link.render == 'image' dt dd: img(src=link.href, alt=link.name, title=link.name) block meta div(class='row-fluid') div(class='span12') - var href=collection.href dl dt version dd if collection.version | #{collection.version} else i Not set dt href dd: block href div(class='row-fluid') div(class='span12') p if href a(class='btn btn-primary', href=urlgenerator.render(href)) Explore | a(class='btn btn-primary', href=href) Raw | a(class='btn btn-danger', href=urlgenerator.delete(url, href)) Delete | form(action='http://redbot.org') input(type='text', name='uri', value=url, type='hidden') input(type='text', name='req_hdr', value='Accept: application/vnd.collection+json', type='hidden') button(class='btn btn-primary', type='submit') Check with redbot.org if collection.links.length > 0 h2 Collection Links each link, i in collection.links - var title = link.prompt || link.name - title = title ? ': ' + title : '' h3(id='link-#{i + 1}') Collection Link ##{i}#{title} block link block items_links - var first = root.findLinkByRel('first'); - var next = root.findLinkByRel('next'); - var prev = root.findLinkByRel('prev'); - var last = root.findLinkByRel('last'); if first || next || prev || last div(class='fluid-row') div(class='span12') if first a(class='btn btn-primary btn-mini', href=urlgenerator.render(first.href) + '#items') First | if prev a(class='btn btn-primary btn-mini', href=urlgenerator.render(next.href) + '#items') Previous | if next a(class='btn btn-primary btn-mini', href=urlgenerator.render(next.href) + '#items') Next | if last a(class='btn btn-primary btn-mini', href=urlgenerator.render(last.href) + '#items') Last // TODO: If the collection has prev/next links, add buttons to // automaticaly navigate those. // TODO: Add ability to show the raw part of the collection. block items if collection.items.length == 0 p Collection has no items. else block items_links each item, i in collection.items - var href=item.href h2(id='item-#{i+1}') Item ##{i+1} if href div(class='fluid-row') div(class='span12') p a(class='btn btn-primary btn-mini', href=urlgenerator.render(href)) Explore | a(class='btn btn-primary btn-mini', href=href) Raw | a(class='btn btn-danger btn-mini', href=urlgenerator.delete(url, href)) Delete dl dt href dd: block href if item.links.length > 0 h3 Item Links each link, i in item.links h4 Item Link ##{i} block link h3 Data dl(class='dl-horizontal') each data in item.data dt #{data.name} dd #{data.value} block items_links block queries if collection.queries.length == 0 p Collection has no queries. else each query, i in collection.queries - var name = query.prompt || query.name || 'Unnamed query' h2(id='query-#{i + 1}')= name div(class='row-fluid') div(class='span12') form(action='/render', class='well form-horizontal') input(type='hidden', name='url', value=query.href) fieldset each data in query.data - var value = params[data.name] || data.value div(class='control-group') label(class='control-label', for=data.name) #{data.name} div(class='controls') input(type='text', name='param-' + data.name, value=value, class='input-xlarge') div(class='control-group') div(class='controls') input(type='submit') Execute block template div(class='row-fluid') div(class='span12') form(action='/post', method='post', class='well form-horizontal') input(type='hidden', name='url', value=collection.href) fieldset each data in collection.template.data - var value = params[data.name] || data.value div(class='control-group') label(class='control-label', for=data.name) if data.prompt | #{data.prompt} else | #{data.name} div(class='controls') input(type='text', name='param-' + data.name, value=value, class='input-xlarge') div(class='control-group') div(class='controls') if typeof collection.href == 'undefined' input.btn.btn-primary.disabled(type='submit', disabled) Write p.help-block This collection has a template, but doesn't have a href which is required. else input.btn.btn-primary(type='submit') Write block error div(class='row-fluid') dl dt title dd if collection.error.title | #{collection.error.title} else i Not set dt code dd if collection.error.code | #{collection.error.code} else i Not set dt message dd if collection.error.message | #{collection.error.message} else i Not set block httpResponse div(class='row-fluid') dl dt URL dd: a(href=urlgenerator.render(url)) #{url} if typeof referer != 'undefined' dt Referer dd: a(href=urlgenerator.render(referer)) #{referer} pre table tr td(colspan='2') #{httpResponse.statusCode} #{httpResponse.status} each value, key in httpResponse.headers tr td #{key}: td #{value} | | #{httpResponse.body} block navbar div(class='navbar navbar-fixed-top') div(class='navbar-inner') div(class='container') a(class='btn btn-navbar', data-toggle='collapse', data-target='.nav-collapse') span(class='icon-bar') // span(class='icon-bar') span(class='icon-bar') span(class='icon-bar') span(class='icon-bar') span(class='icon-bar') a(class='brand', href='/') Collection+JSON Explorer div(class='nav-collapse') ul(class='nav') // li(class='active'): a(href='#meta') Meta li: a(href='#items') Items li: a(href='#queries') Queries li: a(href='#headers') Headers li: a(href='#formatted-body') Formatted Body li: a(href='#raw-body') Raw Body block sidebar div(id='navbar', class='sidebar-nav sidebar-nav-fixed') ul(class='nav nav-list') if typeof err != 'undefined' li(class='nav-header'): a(href='#server-error') Server Error if typeof collection != 'undefined' li(class='nav-header active'): a(href='#meta') Meta each link, i in collection.links li: a(href='#link-' + (i + 1)) mixin get_name(link, 'Link', i) li(class='nav-header'): a(href='#items') Items each item, i in collection.items li: a(href='#item-' + (i + 1)) ##{i + 1} li(class='nav-header'): a(href='#queries') Queries each query, i in collection.queries li: a(href='#query-' + (i + 1)) mixin get_name(query, 'Query', i) if typeof collection.template != 'undefined' li(class='nav-header'): a(href='#template') Template if typeof collection.error != 'undefined' li(class='nav-header'): a(href='#error') Error li(class='nav-header'): a(href='#formatted-body') Formatted Body if typeof httpResponse != 'undefined' li(class='nav-header'): a(href='#http-response') HTTP Response block inner_content if typeof err != 'undefined' section(id='server-error') div(class='page-header') h1 Server Error div(class='row-fluid') p Error rendering: #{url} a(class='btn btn-primary btn-mini', href=urlgenerator.render(url)) Retry p= err if typeof collection != 'undefined' section(id='meta') div(class='page-header') h1 Meta block meta section(id='items') div(class='page-header') h1 Items if collection.items.length > 1 span(class='badge') #{collection.items.length} if root.findLinkByRel('next') |+ block items section(id='queries') div(class='page-header') h1 Queries block queries if typeof collection.template != 'undefined' section(id='template') div(class='page-header') h1 Template block template if typeof collection.error != 'undefined' section(id='error') div(class='page-header') h1 Error block error section(id='formatted-body') div(class='page-header') h1 Formatted Body div(class='row-fluid') div(class='span12') pre= formattedBody if typeof httpResponse != 'undefined' section(id='http-response') div(class='page-header') h1 HTTP Response block httpResponse block content - var collection = root.collection div(class='row-fluid') div(class='span3') block sidebar div(class='span9') block inner_content