mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-10 12:20:02 +00:00
Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording.
This commit is contained in:
parent
a71c914e50
commit
23441389a5
@ -103,7 +103,7 @@ class WebResultsRendering(unittest.TestCase, WebRenderingMixin):
|
||||
s = self.remove_tags(html)
|
||||
self.failUnlessIn("File Check Results for SI=2k6avp", s) # abbreviated
|
||||
self.failUnlessIn("Not Recoverable! : rather dead", s)
|
||||
self.failUnlessIn("Corrupt shares: sh#2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (peer-0)", s)
|
||||
self.failUnlessIn("Corrupt shares: Share ID Nickname Node ID sh#2 peer-0 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", s)
|
||||
|
||||
html = self.render2(w)
|
||||
s = self.remove_tags(html)
|
||||
|
@ -1101,12 +1101,13 @@ class SystemTest(SystemTestMixin, unittest.TestCase):
|
||||
public = "uri/" + self._root_directory_uri
|
||||
d = getPage(base)
|
||||
def _got_welcome(page):
|
||||
expected = "Connected Storage Servers: <span>%d</span>" % (self.numclients)
|
||||
# XXX This test is oversensitive to formatting
|
||||
expected = "Connected to <span>%d</span>\n of <span>%d</span> known storage servers:" % (self.numclients, self.numclients)
|
||||
self.failUnless(expected in page,
|
||||
"I didn't see the right 'connected storage servers'"
|
||||
" message in: %s" % page
|
||||
)
|
||||
expected = "My nodeid: <span>%s</span>" % (b32encode(self.clients[0].nodeid).lower(),)
|
||||
expected = "<th>My nodeid:</th> <td class=\"nodeid mine data-chars\">%s</td>" % (b32encode(self.clients[0].nodeid).lower(),)
|
||||
self.failUnless(expected in page,
|
||||
"I didn't see the right 'My nodeid' message "
|
||||
"in: %s" % page)
|
||||
|
@ -879,10 +879,10 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):
|
||||
# the FILE reference points to a URI, but it should end in bar.txt
|
||||
bar_url = ("%s/file/%s/@@named=/bar.txt" %
|
||||
(ROOT, urllib.quote(self._bar_txt_uri)))
|
||||
get_bar = "".join([r'<td>',
|
||||
get_bar = "".join([r'<td>FILE</td>',
|
||||
r'\s+<td>',
|
||||
r'<a href="%s">bar.txt</a>' % bar_url,
|
||||
r'</td>',
|
||||
r'\s+<td>FILE</td>',
|
||||
r'\s+<td>%d</td>' % len(self.BAR_CONTENTS),
|
||||
])
|
||||
self.failUnless(re.search(get_bar, res), res)
|
||||
@ -904,8 +904,8 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):
|
||||
|
||||
# the DIR reference just points to a URI
|
||||
sub_url = ("%s/uri/%s/" % (ROOT, urllib.quote(self._sub_uri)))
|
||||
get_sub = ((r'<td><a href="%s">sub</a></td>' % sub_url)
|
||||
+ r'\s+<td>DIR</td>')
|
||||
get_sub = ((r'<td>DIR</td>')
|
||||
+r'\s+<td><a href="%s">sub</a></td>' % sub_url)
|
||||
self.failUnless(re.search(get_sub, res), res)
|
||||
d.addCallback(_check)
|
||||
|
||||
@ -921,8 +921,8 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):
|
||||
d.addCallback(lambda res:
|
||||
self.GET(self.public_url, followRedirect=True))
|
||||
def _check3(res):
|
||||
self.failUnless(re.search(r'<td><a href="[\.\/]+/uri/URI%3ADIR2-RO%3A[^"]+">reedownlee</a>'
|
||||
'</td>\s+<td>DIR-RO</td>', res))
|
||||
self.failUnless(re.search('<td>DIR-RO</td>'
|
||||
r'\s+<td><a href="[\.\/]+/uri/URI%3ADIR2-RO%3A[^"]+">reedownlee</a></td>', res), res)
|
||||
d.addCallback(_check3)
|
||||
|
||||
# and an empty directory
|
||||
@ -1895,7 +1895,7 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, unittest.TestCase):
|
||||
# Fetch the welcome page.
|
||||
d = self.GET("/")
|
||||
def _after_get_welcome_page(res):
|
||||
MKDIR_BUTTON_RE=re.compile('<form action="([^"]*)" method="post".*<input type="hidden" name="t" value="([^"]*)" /><input type="hidden" name="([^"]*)" value="([^"]*)" /><input type="submit" value="create directory" />', re.I)
|
||||
MKDIR_BUTTON_RE=re.compile('<form action="([^"]*)" method="post".*?<input type="hidden" name="t" value="([^"]*)" /><input type="hidden" name="([^"]*)" value="([^"]*)" /><input type="submit" value="Create a directory" />', re.I)
|
||||
mo = MKDIR_BUTTON_RE.search(res)
|
||||
formaction = mo.group(1)
|
||||
formt = mo.group(2)
|
||||
|
@ -97,10 +97,13 @@ class ResultsBase:
|
||||
for (serverid, si, shnum) in data["list-corrupt-shares"]:
|
||||
nickname = c.get_nickname_for_peerid(serverid)
|
||||
badsharemap.append(T.tr[T.td["sh#%d" % shnum],
|
||||
T.td[T.tt[base32.b2a(serverid)],
|
||||
" (", nickname, ")"],
|
||||
T.td[T.div(class_="nickname")[nickname],
|
||||
T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]],
|
||||
])
|
||||
add("Corrupt shares", T.table(border="1")[badsharemap])
|
||||
add("Corrupt shares", T.table()[
|
||||
T.tr[T.th["Share ID"],
|
||||
T.th(class_="nickname-and-peerid")[T.div["Nickname"], T.div(class_="nodeid")["Node ID"]]],
|
||||
badsharemap])
|
||||
else:
|
||||
add("Corrupt shares", "none")
|
||||
|
||||
@ -122,11 +125,12 @@ class ResultsBase:
|
||||
shareid_s = shareid
|
||||
nickname = c.get_nickname_for_peerid(serverid)
|
||||
sharemap.append(T.tr[T.td[shareid_s],
|
||||
T.td[T.tt[base32.b2a(serverid)],
|
||||
" (", nickname, ")"],
|
||||
T.td[T.div(class_="nickname")[nickname],
|
||||
T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]]
|
||||
])
|
||||
add("Good Shares (sorted in share order)",
|
||||
T.table(border="1")[sharemap])
|
||||
T.table()[T.tr[T.th["Share ID"], T.th(class_="nickname-and-peerid")[T.div["Nickname"], T.div(class_="nodeid")["Node ID"]]],
|
||||
sharemap])
|
||||
|
||||
|
||||
add("Recoverable Versions", data["count-recoverable-versions"])
|
||||
@ -145,14 +149,16 @@ class ResultsBase:
|
||||
shareids = servers.get(serverid, [])
|
||||
shareids.reverse()
|
||||
shareids_s = [ T.tt[shareid, " "] for shareid in sorted(shareids) ]
|
||||
servermap.append(T.tr[T.td[T.tt[base32.b2a(serverid)],
|
||||
" (", nickname, ")"],
|
||||
T.td[shareids_s] ])
|
||||
servermap.append(T.tr[T.td[T.div(class_="nickname")[nickname],
|
||||
T.div(class_="nodeid")[T.tt[base32.b2a(serverid)]]],
|
||||
T.td[shareids_s],
|
||||
])
|
||||
num_shares_left -= len(shareids)
|
||||
if not num_shares_left:
|
||||
break
|
||||
add("Share Balancing (servers in permuted order)",
|
||||
T.table(border="1")[servermap])
|
||||
T.table()[T.tr[T.th(class_="nickname-and-peerid")[T.div["Nickname"], T.div(class_="nodeid")["Node ID"]], T.th["Share IDs"]],
|
||||
servermap])
|
||||
|
||||
return T.ul[r]
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
||||
<div n:render="return" />
|
||||
|
||||
<div>
|
||||
<table n:render="sequence" n:data="all_objects" border="1">
|
||||
<table n:render="sequence" n:data="all_objects">
|
||||
<tr n:pattern="header">
|
||||
<td>Relative Path</td>
|
||||
<td>Healthy Pre-Repair</td>
|
||||
|
@ -43,7 +43,7 @@
|
||||
<div n:render="corrupt_shares_p">
|
||||
<h2>Corrupt Shares</h2>
|
||||
<p>If repair fails, these shares need to be manually inspected and removed.</p>
|
||||
<table n:render="sequence" n:data="corrupt_shares" border="1">
|
||||
<table n:render="sequence" n:data="corrupt_shares">
|
||||
<tr n:pattern="header">
|
||||
<td>Server</td>
|
||||
<td>Server Nickname</td>
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
<div>
|
||||
<h2>All Results</h2>
|
||||
<table n:render="sequence" n:data="all_objects" border="1">
|
||||
<table n:render="sequence" n:data="all_objects">
|
||||
<tr n:pattern="header">
|
||||
<td>Relative Path</td>
|
||||
<td>Healthy</td>
|
||||
|
@ -533,7 +533,7 @@ class DirectoryAsHTML(rend.Page):
|
||||
|
||||
def render_header(self, ctx, data):
|
||||
si_s = abbreviated_dirnode(self.node)
|
||||
header = ["Directory SI=%s" % si_s]
|
||||
header = ["Directory SI=", T.span(class_="data-chars")[si_s]]
|
||||
if self.node.is_readonly():
|
||||
header.append(" (read-only)")
|
||||
return ctx.tag[header]
|
||||
|
@ -5,44 +5,46 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
</head><body class="tahoe-directory-page">
|
||||
|
||||
<h2 n:render="header"></h2>
|
||||
<h1 n:render="header"></h1>
|
||||
|
||||
<div><a href=".">Refresh this view</a></div>
|
||||
<div n:render="welcome" />
|
||||
<div class="toolbar">
|
||||
<div class="toolbar-item" n:render="welcome" />
|
||||
<div class="toolbar-item"><a href=".">Refresh</a></div>
|
||||
|
||||
<div><a href="?t=info">More info on this directory</a></div>
|
||||
<div n:render="show_readonly" />
|
||||
|
||||
<div n:render="try_children">
|
||||
<table n:render="sequence" n:data="children" border="1">
|
||||
<tr n:pattern="header">
|
||||
<td>Filename</td>
|
||||
<td>Type</td>
|
||||
<td>Size</td>
|
||||
<td>Times</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="row">
|
||||
<td><n:slot name="filename"/></td>
|
||||
<td><n:slot name="type"/></td>
|
||||
<td><n:slot name="size"/></td>
|
||||
<td><n:slot name="times"/></td>
|
||||
<td><n:slot name="delete"/></td>
|
||||
<td><n:slot name="rename"/></td>
|
||||
<td><n:slot name="info"/></td>
|
||||
</tr>
|
||||
|
||||
<tr n:pattern="empty"><td>directory is empty</td></tr>
|
||||
|
||||
</table>
|
||||
<div class="toolbar-item"><a href="?t=info">More info on this directory</a></div>
|
||||
<div class="toolbar-item" n:render="show_readonly" />
|
||||
</div>
|
||||
|
||||
<div n:render="try_children">
|
||||
<table class="tahoe-directory" n:render="sequence" n:data="children">
|
||||
<tr n:pattern="header">
|
||||
<th>Type</th>
|
||||
<th>Filename</th>
|
||||
<th>Size</th>
|
||||
<th>Times</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="row">
|
||||
<td><n:slot name="type"/></td>
|
||||
<td><n:slot name="filename"/></td>
|
||||
<td><n:slot name="size"/></td>
|
||||
<td><n:slot name="times"/></td>
|
||||
<td><n:slot name="delete"/></td>
|
||||
<td><n:slot name="rename"/></td>
|
||||
<td><n:slot name="info"/></td>
|
||||
</tr>
|
||||
|
||||
<div n:render="forms"/>
|
||||
<tr n:pattern="empty"><td colspan="9" class="empty-marker">This directory is empty.</td></tr>
|
||||
|
||||
<div class="results" n:render="results"/>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<div class="tahoe-directory-footer">
|
||||
<div n:render="forms"/>
|
||||
|
||||
<div class="results" n:render="results"/>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
|
@ -6,40 +6,42 @@
|
||||
<link href="/tahoe_css" rel="stylesheet" type="text/css"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<h2 n:render="header"></h2>
|
||||
</head><body>
|
||||
|
||||
<h1 n:render="header"></h1>
|
||||
|
||||
<ul>
|
||||
<li>Object Type: <span n:render="type" /></li>
|
||||
<li>Storage Index: <tt n:render="si" /></li>
|
||||
<li>Object Size: <span n:render="size" /></li>
|
||||
<li>Access Caps (URIs):
|
||||
<table border="1">
|
||||
<li>Access Caps (Tahoe-URIs):
|
||||
<table class="table-headings-left">
|
||||
<span n:render="is_directory">
|
||||
<tr>
|
||||
<td>Directory writecap</td>
|
||||
<td><tt n:render="directory_writecap" /></td>
|
||||
<th>Directory writecap</th>
|
||||
<td><tt class="data-chars" n:render="directory_writecap" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Directory readcap</td>
|
||||
<td><tt n:render="directory_readcap" /></td>
|
||||
<th>Directory readcap</th>
|
||||
<td><tt class="data-chars" n:render="directory_readcap" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Directory verifycap</td>
|
||||
<td><tt n:render="directory_verifycap" /></td>
|
||||
<th>Directory verifycap</th>
|
||||
<td><tt class="data-chars" n:render="directory_verifycap" /></td>
|
||||
</tr>
|
||||
</span>
|
||||
|
||||
<tr>
|
||||
<td>File writecap</td>
|
||||
<td><tt n:render="file_writecap" /></td>
|
||||
<th>File writecap</th>
|
||||
<td><tt class="data-chars" n:render="file_writecap" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File readcap</td>
|
||||
<td><tt n:render="file_readcap" /></td>
|
||||
<th>File readcap</th>
|
||||
<td><tt class="data-chars" n:render="file_readcap" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File verifycap</td>
|
||||
<td><tt n:render="file_verifycap" /></td>
|
||||
<th>File verifycap</th>
|
||||
<td><tt class="data-chars" n:render="file_verifycap" /></td>
|
||||
</tr>
|
||||
</table></li>
|
||||
<li><a href="?t=json">JSON</a></li>
|
||||
@ -64,6 +66,4 @@
|
||||
<div n:render="manifest_form" />
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</body></html>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<h2>Service Announcements</h2>
|
||||
|
||||
<div>
|
||||
<table n:render="sequence" n:data="services" border="1">
|
||||
<table n:render="sequence" n:data="services">
|
||||
<tr n:pattern="header">
|
||||
<td>PeerID / Nickname</td>
|
||||
<td>Advertised IPs</td>
|
||||
@ -43,7 +43,7 @@
|
||||
<h2>Subscribed Clients</h2>
|
||||
|
||||
<div>
|
||||
<table n:render="sequence" n:data="subscribers" border="1">
|
||||
<table n:render="sequence" n:data="subscribers">
|
||||
<tr n:pattern="header">
|
||||
<td>PeerID / Nickname</td>
|
||||
<td>Advertised IPs</td>
|
||||
|
@ -68,7 +68,7 @@ class IntroducerRoot(rend.Page):
|
||||
def data_version(self, ctx, data):
|
||||
return get_package_versions_string()
|
||||
def data_import_path(self, ctx, data):
|
||||
return str(allmydata)
|
||||
return str(allmydata).replace("/", "/ ") # XXX kludge for wrapping
|
||||
def data_my_nodeid(self, ctx, data):
|
||||
return idlib.nodeid_b2a(self.introducer_node.nodeid)
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
<h2 n:render="reload" />
|
||||
|
||||
<table n:render="sequence" n:data="items" border="1">
|
||||
<table n:render="sequence" n:data="items">
|
||||
<tr n:pattern="header">
|
||||
<td>Path</td>
|
||||
<td>cap</td>
|
||||
|
@ -42,7 +42,7 @@ repair bandwidth to configure on a Tahoe grid.</p>
|
||||
</ul>
|
||||
|
||||
<div>
|
||||
<table n:render="sequence" n:data="simulation_table" border="1">
|
||||
<table n:render="sequence" n:data="simulation_table">
|
||||
<tr n:pattern="header">
|
||||
<td>t</td>
|
||||
<td>P_repair</td>
|
||||
|
@ -276,6 +276,7 @@ class Root(rend.Page):
|
||||
|
||||
TIME_FORMAT = "%H:%M:%S %d-%b-%Y"
|
||||
ctx.fillSlots("connected", connected)
|
||||
ctx.fillSlots("connected-bool", not not rsc.rref)
|
||||
ctx.fillSlots("since", time.strftime(TIME_FORMAT, time.localtime(since)))
|
||||
ctx.fillSlots("announced", time.strftime(TIME_FORMAT,
|
||||
time.localtime(rsc.announcement_time)))
|
||||
@ -290,10 +291,10 @@ class Root(rend.Page):
|
||||
enctype="multipart/form-data")[
|
||||
T.fieldset[
|
||||
T.legend(class_="freeform-form-label")["Download a file"],
|
||||
"URI to download: ",
|
||||
T.input(type="text", name="uri"), " ",
|
||||
"Filename to download as: ",
|
||||
T.input(type="text", name="filename"), " ",
|
||||
T.div["Tahoe-URI to download: ",
|
||||
T.input(type="text", name="uri")],
|
||||
T.div["Filename to download as: ",
|
||||
T.input(type="text", name="filename")],
|
||||
T.input(type="submit", value="Download!"),
|
||||
]]
|
||||
return T.div[form]
|
||||
@ -305,7 +306,7 @@ class Root(rend.Page):
|
||||
enctype="multipart/form-data")[
|
||||
T.fieldset[
|
||||
T.legend(class_="freeform-form-label")["View a file or directory"],
|
||||
"URI to view: ",
|
||||
"Tahoe-URI to view: ",
|
||||
T.input(type="text", name="uri"), " ",
|
||||
T.input(type="submit", value="View!"),
|
||||
]]
|
||||
@ -317,11 +318,11 @@ class Root(rend.Page):
|
||||
enctype="multipart/form-data")[
|
||||
T.fieldset[
|
||||
T.legend(class_="freeform-form-label")["Upload a file"],
|
||||
"Choose a file: ",
|
||||
T.input(type="file", name="file", class_="freeform-input-file"),
|
||||
T.div["Choose a file: ",
|
||||
T.input(type="file", name="file", class_="freeform-input-file")],
|
||||
T.input(type="hidden", name="t", value="upload"),
|
||||
" Mutable?:", T.input(type="checkbox", name="mutable"),
|
||||
T.input(type="submit", value="Upload!"),
|
||||
T.div[T.input(type="checkbox", name="mutable"), T.label(for_="mutable")["Create mutable file"],
|
||||
" ", T.input(type="submit", value="Upload!")],
|
||||
]]
|
||||
return T.div[form]
|
||||
|
||||
@ -330,10 +331,10 @@ class Root(rend.Page):
|
||||
form = T.form(action="uri", method="post",
|
||||
enctype="multipart/form-data")[
|
||||
T.fieldset[
|
||||
T.legend(class_="freeform-form-label")["Create a directory."],
|
||||
T.legend(class_="freeform-form-label")["Create a directory"],
|
||||
T.input(type="hidden", name="t", value="mkdir"),
|
||||
T.input(type="hidden", name="redirect_to_result", value="true"),
|
||||
T.input(type="submit", value="create directory"),
|
||||
T.input(type="submit", value="Create a directory"),
|
||||
]]
|
||||
return T.div[form]
|
||||
|
||||
|
@ -11,14 +11,14 @@
|
||||
|
||||
|
||||
<h2>Active Operations:</h2>
|
||||
<table n:render="sequence" n:data="active_operations" border="1">
|
||||
<table class="table-headings-top" n:render="sequence" n:data="active_operations">
|
||||
<tr n:pattern="header">
|
||||
<td>Type</td>
|
||||
<td>Storage Index</td>
|
||||
<td>Helper?</td>
|
||||
<td>Total Size</td>
|
||||
<td>Progress</td>
|
||||
<td>Status</td>
|
||||
<th>Type</th>
|
||||
<th>Storage Index</th>
|
||||
<th>Helper?</th>
|
||||
<th>Total Size</th>
|
||||
<th>Progress</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="row">
|
||||
<td><n:slot name="type"/></td>
|
||||
@ -33,15 +33,15 @@
|
||||
|
||||
|
||||
<h2>Recent Operations:</h2>
|
||||
<table n:render="sequence" n:data="recent_operations" border="1">
|
||||
<table class="table-headings-top" n:render="sequence" n:data="recent_operations">
|
||||
<tr n:pattern="header">
|
||||
<td>Started</td>
|
||||
<td>Type</td>
|
||||
<td>Storage Index</td>
|
||||
<td>Helper?</td>
|
||||
<td>Total Size</td>
|
||||
<td>Progress</td>
|
||||
<td>Status</td>
|
||||
<th>Started</th>
|
||||
<th>Type</th>
|
||||
<th>Storage Index</th>
|
||||
<th>Helper?</th>
|
||||
<th>Total Size</th>
|
||||
<th>Progress</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="row">
|
||||
<td><n:slot name="started"/></td>
|
||||
|
@ -7,75 +7,94 @@
|
||||
|
||||
<h1>Welcome To AllMyData "Tahoe"!</h1>
|
||||
|
||||
<h2>Status of this Client</h2>
|
||||
<div class="section" id="this-client">
|
||||
<h2>This Client</h2>
|
||||
|
||||
<div>My nodeid: <span n:render="string" n:data="my_nodeid" /></div>
|
||||
<div>My nickname: <span n:render="string" n:data="my_nickname" /></div>
|
||||
<div>My versions: <span n:render="string" n:data="version" /></div>
|
||||
<div>Tahoe code imported from: <span n:render="string" n:data="import_path" /></div>
|
||||
<div n:render="services">Services Running:</div>
|
||||
<p>
|
||||
<a href="status/">Recent Uploads and Downloads</a>,
|
||||
<a href="statistics">Operational Statistics</a>
|
||||
</p>
|
||||
|
||||
<table class="node-info table-headings-left">
|
||||
<tr><th>My nickname:</th> <td class="nickname mine" n:render="string" n:data="my_nickname" /></tr>
|
||||
<tr><th>My nodeid:</th> <td class="nodeid mine data-chars" n:render="string" n:data="my_nodeid" /></tr>
|
||||
<tr><th>My versions:</th> <td n:render="string" n:data="version" /></tr>
|
||||
<tr><th>Tahoe code imported from:</th> <td n:render="string" n:data="import_path" /></tr>
|
||||
<tr><th>Services running:</th> <td n:render="services" /></tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div>
|
||||
<a href="status/">Recent Uploads and Downloads</a>,
|
||||
<a href="statistics">Operational Statistics</a>
|
||||
</div>
|
||||
|
||||
<h2>The Controls</h2>
|
||||
<div class="section" id="controls">
|
||||
<h2>Controls</h2>
|
||||
|
||||
<div>There are also controls for each directory on that directory's page.</div>
|
||||
<p>There are also controls for each directory on that directory's page.</p>
|
||||
|
||||
<div n:render="mkdir_form" />
|
||||
<div n:render="view_form" />
|
||||
<div n:render="upload_form" />
|
||||
<div n:render="download_form" />
|
||||
|
||||
|
||||
<h2>Status of the Storage Grid</h2>
|
||||
|
||||
<div>Introducer: <span n:render="string" n:data="introducer_furl" /></div>
|
||||
<div>Connected to introducer?: <span n:render="string" n:data="connected_to_introducer" /></div>
|
||||
|
||||
<div>Helper: <span n:render="string" n:data="helper_furl" /></div>
|
||||
<div>Connected to helper?: <span n:render="string" n:data="connected_to_helper" /></div>
|
||||
|
||||
<br />
|
||||
|
||||
<div>Known Storage Servers: <span n:render="string" n:data="known_storage_servers" /></div>
|
||||
<div>Connected Storage Servers: <span n:render="string" n:data="connected_storage_servers" /></div>
|
||||
|
||||
<div>
|
||||
<table n:render="sequence" n:data="services" border="1">
|
||||
<tr n:pattern="header">
|
||||
<td>PeerID</td>
|
||||
<td>Nickname</td>
|
||||
<td>Connected?</td>
|
||||
<td>Since</td>
|
||||
<td>Announced</td>
|
||||
<td>Version</td>
|
||||
<td>Service Name</td>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="service_row">
|
||||
<td><tt><n:slot name="peerid"/></tt></td>
|
||||
<td><b><n:slot name="nickname"/></b></td>
|
||||
<td><tt><n:slot name="connected"/></tt></td>
|
||||
<td><tt><n:slot name="since"/></tt></td>
|
||||
<td><tt><n:slot name="announced"/></tt></td>
|
||||
<td><tt><n:slot name="version"/></tt></td>
|
||||
<td><tt><n:slot name="service_name"/></tt></td>
|
||||
</tr>
|
||||
<tr n:pattern="empty"><td>no peers!</td></tr>
|
||||
</table>
|
||||
<div n:render="mkdir_form" />
|
||||
<div n:render="view_form" />
|
||||
<div n:render="upload_form" />
|
||||
<div n:render="download_form" />
|
||||
</div>
|
||||
|
||||
<h2>Other Resources</h2>
|
||||
<div class="section" id="grid">
|
||||
<h2>Status of the Storage Grid</h2>
|
||||
|
||||
<div>Please visit the <a href="http://allmydata.org">Tahoe home page</a> for
|
||||
code updates and bug reporting.</div>
|
||||
<div>
|
||||
<n:attr name="class">connected-<n:invisible n:render="string" n:data="connected_to_introducer" /></n:attr>
|
||||
<div>Introducer: <span class="data-chars" n:render="string" n:data="introducer_furl" /></div>
|
||||
<div>Connected to introducer?: <span n:render="string" n:data="connected_to_introducer" /></div>
|
||||
</div>
|
||||
|
||||
<div>The <a href="provisioning">provisioning tool</a> and <a
|
||||
href="reliability">reliability calculator</a> may also be useful.</div>
|
||||
<div>
|
||||
<n:attr name="class">connected-<n:invisible n:render="string" n:data="connected_to_helper" /></n:attr>
|
||||
<div>Helper: <span n:render="string" n:data="helper_furl" /></div>
|
||||
<div>Connected to helper?: <span n:render="string" n:data="connected_to_helper" /></div>
|
||||
</div>
|
||||
|
||||
<div n:render="incident_button" />
|
||||
<p>Connected to <span n:render="string" n:data="connected_storage_servers" />
|
||||
of <span n:render="string" n:data="known_storage_servers" /> known storage servers:</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<div>
|
||||
<table class="services table-headings-top" n:render="sequence" n:data="services">
|
||||
<tr n:pattern="header">
|
||||
<th>Service Name</th>
|
||||
<th class="nickname-and-peerid">
|
||||
<div class="service-nickname">Nickname</div>
|
||||
<div class="nodeid data-chars">PeerID</div></th>
|
||||
<th>Connected?</th>
|
||||
<th>since</th>
|
||||
<th>First Announced</th>
|
||||
<th>Version</th>
|
||||
</tr>
|
||||
<tr n:pattern="item" n:render="service_row">
|
||||
<td class="service-service-name"><n:slot name="service_name"/></td>
|
||||
<td class="nickname-and-peerid">
|
||||
<div class="nickname"><n:slot name="nickname"/></div>
|
||||
<div class="nodeid data-chars"><n:slot name="peerid"/></div></td>
|
||||
<td>
|
||||
<n:attr name="class">service-connected connected-<n:slot name="connected-bool"/></n:attr>
|
||||
<n:slot name="connected"/>
|
||||
</td>
|
||||
<td class="service-since"> <n:slot name="since"/></td>
|
||||
<td class="service-announced"> <n:slot name="announced"/></td>
|
||||
<td class="service-version"> <n:slot name="version"/></td>
|
||||
</tr>
|
||||
<tr n:pattern="empty"><td>no peers!</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section" id="other-resources">
|
||||
<h2>Other Resources</h2>
|
||||
|
||||
<div>Please visit the <a href="http://allmydata.org">Tahoe home page</a> for
|
||||
code updates and bug reporting.</div>
|
||||
|
||||
<div>The <a href="provisioning">provisioning tool</a> and <a
|
||||
href="reliability">reliability calculator</a> may also be useful.</div>
|
||||
|
||||
<div n:render="incident_button" />
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
|
Loading…
x
Reference in New Issue
Block a user