mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
fix
This commit is contained in:
parent
6b7f0b4dba
commit
fd8b7384d5
104 changed files with 13356 additions and 31 deletions
|
|
@ -0,0 +1,7 @@
|
|||
<%+cbi/valueheader%>
|
||||
<% if self:cfgvalue(section) ~= false then %>
|
||||
<input class="cbi-button cbi-button-<%=self.inputstyle or "button" %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> <% if self.view_disabled then %> disabled <% end %>/>
|
||||
<% else %>
|
||||
-
|
||||
<% end %>
|
||||
<%+cbi/valuefooter%>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<%+cbi/valueheader%>
|
||||
<% if self:cfgvalue(section) ~= false then %>
|
||||
<input class="cbi-button cbi-button-<%=self.inputstyle or "button" %>" onclick="event.preventDefault();partition_format('<%=self.partitions[section].name%>', '<%=self.format_cmd%>', '<%=self.inputtitle%>');" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> <% if self.view_disabled then %> disabled <% end %>/>
|
||||
<% else %>
|
||||
-
|
||||
<% end %>
|
||||
<%+cbi/valuefooter%>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<div style="display: inline-block;">
|
||||
<% if self:cfgvalue(section) ~= false then %>
|
||||
<input class="cbi-button cbi-button-<%=self.inputstyle or "button" %>" type="submit"" <% if self.disable then %>disabled <% end %><%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
|
||||
<% else %>
|
||||
-
|
||||
<% end %>
|
||||
</div>
|
||||
37
luci-app-diskman/luasrc/view/diskman/cbi/xnullsection.htm
Normal file
37
luci-app-diskman/luasrc/view/diskman/cbi/xnullsection.htm
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<div class="cbi-section" id="cbi-<%=self.config%>-section">
|
||||
<% if self.title and #self.title > 0 then -%>
|
||||
<legend><%=self.title%></legend>
|
||||
<%- end %>
|
||||
<% if self.description and #self.description > 0 then -%>
|
||||
<div class="cbi-section-descr"><%=self.description%></div>
|
||||
<%- end %>
|
||||
<div class="cbi-section-node">
|
||||
<div id="cbi-<%=self.config%>-<%=tostring(self):sub(8)%>">
|
||||
<% self:render_children(1, scope or {}) %>
|
||||
</div>
|
||||
<% if self.error and self.error[1] then -%>
|
||||
<div class="cbi-section-error">
|
||||
<ul><% for _, e in ipairs(self.error[1]) do -%>
|
||||
<li>
|
||||
<%- if e == "invalid" then -%>
|
||||
<%:One or more fields contain invalid values!%>
|
||||
<%- elseif e == "missing" then -%>
|
||||
<%:One or more required fields have no value!%>
|
||||
<%- else -%>
|
||||
<%=pcdata(e)%>
|
||||
<%- end -%>
|
||||
</li>
|
||||
<%- end %></ul>
|
||||
</div>
|
||||
<%- end %>
|
||||
</div>
|
||||
</div>
|
||||
<%-
|
||||
if type(self.hidden) == "table" then
|
||||
for k, v in pairs(self.hidden) do
|
||||
-%>
|
||||
<input type="hidden" id="<%=k%>" name="<%=k%>" value="<%=pcdata(v)%>" />
|
||||
<%-
|
||||
end
|
||||
end
|
||||
%>
|
||||
88
luci-app-diskman/luasrc/view/diskman/cbi/xsimpleform.htm
Normal file
88
luci-app-diskman/luasrc/view/diskman/cbi/xsimpleform.htm
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
<% if not self.embedded then %>
|
||||
<form method="post" enctype="multipart/form-data" action="<%=REQUEST_URI%>"<%=
|
||||
attr("data-strings", luci.util.serialize_json({
|
||||
label = {
|
||||
choose = translate('-- Please choose --'),
|
||||
custom = translate('-- custom --'),
|
||||
},
|
||||
path = {
|
||||
resource = resource,
|
||||
browser = url("admin/filebrowser")
|
||||
}
|
||||
}))
|
||||
%>>
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input type="hidden" name="cbi.submit" value="1" /><%
|
||||
end
|
||||
|
||||
%><div class="cbi-map" id="cbi-<%=self.config%>"><%
|
||||
|
||||
if self.title and #self.title > 0 then
|
||||
%><h2 name="content"><%=self.title%></h2><%
|
||||
end
|
||||
|
||||
if self.description and #self.description > 0 then
|
||||
%><div class="cbi-map-descr"><%=self.description%></div><%
|
||||
end
|
||||
|
||||
self:render_children()
|
||||
|
||||
%></div><%
|
||||
|
||||
if self.message then
|
||||
%><div class="alert-message notice"><%=self.message%></div><%
|
||||
end
|
||||
|
||||
if self.errmessage then
|
||||
%><div class="alert-message warning"><%=self.errmessage%></div><%
|
||||
end
|
||||
|
||||
if not self.embedded then
|
||||
if type(self.hidden) == "table" then
|
||||
local k, v
|
||||
for k, v in pairs(self.hidden) do
|
||||
%><input type="hidden" id="<%=k%>" name="<%=k%>" value="<%=pcdata(v)%>" /><%
|
||||
end
|
||||
end
|
||||
|
||||
local display_back = (self.redirect)
|
||||
local display_cancel = (self.cancel ~= false and self.on_cancel)
|
||||
local display_skip = (self.flow and self.flow.skip)
|
||||
local display_submit = (self.submit ~= false)
|
||||
local display_reset = (self.reset ~= false)
|
||||
|
||||
if display_back or display_cancel or display_skip or display_submit or display_reset then
|
||||
%><div class="cbi-page-actions"><%
|
||||
|
||||
if display_back then
|
||||
%><input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(self.redirect)%>'" /> <%
|
||||
end
|
||||
|
||||
if display_cancel then
|
||||
local label = pcdata(self.cancel or translate("Cancel"))
|
||||
%><input class="cbi-button cbi-button-link" type="button" value="<%=label%>" onclick="cbi_submit(this, 'cbi.cancel')" /> <%
|
||||
end
|
||||
|
||||
if display_skip then
|
||||
%><input class="cbi-button cbi-button-neutral" type="button" value="<%:Skip%>" onclick="cbi_submit(this, 'cbi.skip')" /> <%
|
||||
end
|
||||
|
||||
if display_submit then
|
||||
local label = pcdata(self.submit or translate("Submit"))
|
||||
%><input class="cbi-button cbi-button-save" type="submit" value="<%=label%>" /> <%
|
||||
end
|
||||
|
||||
if display_reset then
|
||||
local label = pcdata(self.reset or translate("Reset"))
|
||||
%><input class="cbi-button cbi-button-reset" type="reset" value="<%=label%>" /> <%
|
||||
end
|
||||
|
||||
%></div><%
|
||||
end
|
||||
|
||||
%></form><%
|
||||
end
|
||||
%>
|
||||
|
||||
<script type="text/javascript">cbi_init();</script>
|
||||
108
luci-app-diskman/luasrc/view/diskman/disk_info.htm
Normal file
108
luci-app-diskman/luasrc/view/diskman/disk_info.htm
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<script type="text/javascript">
|
||||
window.onload = function () {
|
||||
//disk partition info
|
||||
let p_colors = ["#c0c0ff", "#fbbd00", "#e97c30", "#a0e0a0", "#e0c0ff"]
|
||||
let lines = document.querySelectorAll('[id^=cbi-disk-]')
|
||||
lines.forEach((item) => {
|
||||
let dev = item.id.match(/cbi-disk-(.*)/)[1]
|
||||
if (dev == "table") { return }
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin/system/diskman/get_disk_info")%>/' + dev, null, (x, disk_info) => {
|
||||
// handle disk info
|
||||
item.childNodes.forEach((cell) => {
|
||||
if (cell && cell.attributes) {
|
||||
if (cell.getAttribute("data-name") == "sn" || cell.childNodes[1] && cell.childNodes[1].id.match(/sn/)) {
|
||||
cell.innerText = disk_info.sn || "-"
|
||||
} else if (cell.getAttribute("data-name") == "temp" || cell.childNodes[1] && cell.childNodes[1].id.match(/temp/)) {
|
||||
cell.innerText = disk_info.temp || "-"
|
||||
} else if (cell.getAttribute("data-name") == "p_table" || cell.childNodes[1] && cell.childNodes[1].id.match(/p_table/)) {
|
||||
cell.innerText = disk_info.p_table || "-"
|
||||
} else if (cell.getAttribute("data-name") == "sata_ver" || cell.childNodes[1] && cell.childNodes[1].id.match(/sata_ver/)) {
|
||||
cell.innerText = disk_info.sata_ver || "-"
|
||||
} else if (cell.getAttribute("data-name") == "health" || cell.childNodes[1] && cell.childNodes[1].id.match(/health/)) {
|
||||
cell.innerText = disk_info.health || "-"
|
||||
} else if (cell.getAttribute("data-name") == "status" || cell.childNodes[1] && cell.childNodes[1].id.match(/status/)) {
|
||||
cell.innerText = disk_info.status || "-"
|
||||
}
|
||||
}
|
||||
})
|
||||
// handle partitons info
|
||||
if (disk_info.partitions && disk_info.partitions.length > 0) {
|
||||
let partitons_div
|
||||
if (item.nodeName == "TR") {
|
||||
partitons_div = '<tr width="100%" style="white-space:nowrap;"><td style="margin:0px; padding:0px; border:0px; white-space:nowrap;" colspan="15">'
|
||||
} else if (item.nodeName == "DIV") {
|
||||
partitons_div = '<div class="tr cbi-section-table-row cbi-rowstyle-1"><div style="white-space:nowrap; position:absolute; width:100%">'
|
||||
}
|
||||
let expand = 0
|
||||
let need_expand = 0
|
||||
disk_info.partitions.forEach((part) => {
|
||||
let p = part.size / disk_info.size * 100
|
||||
if (p <= 8) {
|
||||
expand += 8
|
||||
need_expand += p
|
||||
part.part_percent = 8
|
||||
}
|
||||
})
|
||||
let n = 0
|
||||
disk_info.partitions.forEach((part) => {
|
||||
let p = part.size / disk_info.size * 100
|
||||
if (p > 8) {
|
||||
part.part_percent = p * (100 - expand) / (100 - need_expand)
|
||||
}
|
||||
let part_percent = part.part_percent + '%'
|
||||
let p_color = p_colors[n++]
|
||||
if (n > 4) { n = 0 }
|
||||
let inline_txt = (part.name != '-' && part.name || '') + ' ' + (part.fs != 'Free Space' && part.fs || '') + ' ' + part.size_formated + ' ' + (part.useage != '-' && part.useage || '')
|
||||
let partiton_div = '<div title="' + inline_txt + '" style="color: #525F7F; display:inline-block; text-align:center;background-color:' + p_color + '; width:' + part_percent + '">' + inline_txt + '</div>'
|
||||
partitons_div += partiton_div
|
||||
})
|
||||
if (item.nodeName == "TR") {
|
||||
partitons_div += '</td></tr>'
|
||||
} else if (item.nodeName == "DIV") {
|
||||
partitons_div += '</div><div> </div></div>'
|
||||
}
|
||||
item.insertAdjacentHTML('afterend', partitons_div);
|
||||
}
|
||||
})
|
||||
})
|
||||
//raid table
|
||||
lines = document.querySelectorAll('[id^=cbi-_raid-]')
|
||||
lines.forEach((item) => {
|
||||
let dev = item.id.match(/cbi-_raid-(.*)/)[1]
|
||||
if (dev == "table") { return }
|
||||
console.log(dev)
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin/system/diskman/get_disk_info")%>/' + dev, null, (x, disk_info) => {
|
||||
// handle raid info
|
||||
item.childNodes.forEach((cell) => {
|
||||
if (cell && cell.attributes) {
|
||||
if (cell.getAttribute("data-name") == "p_table" || cell.childNodes[1] && cell.childNodes[1].id.match(/p_table/)) {
|
||||
cell.innerText = disk_info.p_table || "-"
|
||||
}
|
||||
}
|
||||
})
|
||||
// handle partitons info
|
||||
let partitons_div
|
||||
if (item.nodeName == "TR") {
|
||||
partitons_div = '<tr width="100%" style="white-space:nowrap;"><td style="margin:0px; padding:0px; border:0px; white-space:nowrap;" colspan="15">'
|
||||
} else if (item.nodeName == "DIV") {
|
||||
partitons_div = '<div class="tr cbi-section-table-row cbi-rowstyle-1"><div style="white-space:nowrap; position:absolute; width:100%">'
|
||||
}
|
||||
let n = 0
|
||||
disk_info.partitions.forEach((part) => {
|
||||
let part_percent = part.size / disk_info.size * 100 + '%'
|
||||
let p_color = p_colors[n++]
|
||||
if (n > 4) { n = 0 }
|
||||
let inline_txt = (part.name != '-' && part.name || '') + ' ' + (part.fs != 'Free Space' && part.fs || '') + ' ' + part.size_formated + ' ' + (part.useage != '-' && part.useage || '')
|
||||
let partiton_div = '<div title="' + inline_txt + '" style="display:inline-block; text-align:center;background-color:' + p_color + '; width:' + part_percent + '">' + inline_txt + '</div>'
|
||||
partitons_div += partiton_div
|
||||
})
|
||||
if (item.nodeName == "TR") {
|
||||
partitons_div += '</td></tr>'
|
||||
} else if (item.nodeName == "DIV") {
|
||||
partitons_div += '</div><div> </div></div>'
|
||||
}
|
||||
item.insertAdjacentHTML('afterend', partitons_div);
|
||||
})
|
||||
})
|
||||
}
|
||||
</script>
|
||||
129
luci-app-diskman/luasrc/view/diskman/partition_info.htm
Normal file
129
luci-app-diskman/luasrc/view/diskman/partition_info.htm
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<style type="text/css">
|
||||
#dialog_format {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
display: none;
|
||||
z-index: 20000;
|
||||
}
|
||||
|
||||
#dialog_format .dialog_box {
|
||||
position: relative;
|
||||
background: rgba(255, 255, 255);
|
||||
top: 35%;
|
||||
width: 40%;
|
||||
min-width: 20em;
|
||||
margin: auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
height:auto;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#dialog_format .dialog_line {
|
||||
margin-top: .5em;
|
||||
margin-bottom: .5em;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
#dialog_format .dialog_box>h4,
|
||||
#dialog_format .dialog_box>p,
|
||||
#dialog_format .dialog_box>div {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
#dialog_format .dialog_box>img {
|
||||
margin-right: 1em;
|
||||
flex-basis: 32px;
|
||||
}
|
||||
|
||||
body.dialog-format-active {
|
||||
overflow: hidden;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
body.dialog-format-active #dialog_format {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
function show_detail(dev, e) {
|
||||
e.preventDefault()
|
||||
window.open('<%=luci.dispatcher.build_url("admin/system/diskman/smartdetail")%>/' + dev,
|
||||
'newwindow', 'height=480,width=800,top=100,left=200,toolbar=no,menubar=no,scrollbars=yes, resizable=no,location=no, status=no')
|
||||
}
|
||||
window.onload = function () {
|
||||
// handle partition table
|
||||
const btn_p_table = document.getElementById("widget.cbid.table.1.p_table") || document.getElementById("cbid.table.1.p_table")
|
||||
const btn_p_table_raw_index = btn_p_table.selectedIndex
|
||||
const val_name = document.getElementById("cbi-table-1-path").innerText.split('/').pop()
|
||||
btn_p_table.onchange = function () {
|
||||
let btn_p_table_index = btn_p_table.selectedIndex
|
||||
if (btn_p_table_index != btn_p_table_raw_index) {
|
||||
if (confirm("<%:Warnning !! \nTHIS WILL OVERWRITE EXISTING PARTITIONS!! \nModify the partition table?%>")) {
|
||||
let p_table = btn_p_table.options[btn_p_table_index].value
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin/system/diskman/mk_p_table")%>', { dev: val_name, p_table: p_table }, (x, res) => {
|
||||
if (res.code == 0) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
else {
|
||||
}
|
||||
}
|
||||
}
|
||||
// handle smartinfo
|
||||
const url = location.href.split('/')
|
||||
const dev = url[url.length - 1]
|
||||
const btn_smart_detail = document.getElementById("cbi-table-1-health")
|
||||
btn_smart_detail.children[0].onclick = show_detail.bind(this, dev)
|
||||
}
|
||||
function close_dialog() {
|
||||
document.body.classList.remove('dialog-format-active')
|
||||
document.documentElement.style.overflowY = 'scroll'
|
||||
}
|
||||
function do_format(partation_name){
|
||||
let fs = document.getElementById("filesystem_list").value
|
||||
let status = document.getElementById("format-status")
|
||||
if(!fs) {
|
||||
status.innerHTML = "<%:Please select file system!%>"
|
||||
return
|
||||
}
|
||||
status.innerHTML = "<%:Formatting..%>"
|
||||
let b = document.getElementById('btn_format')
|
||||
b.disabled = true
|
||||
let xhr = new XHR()
|
||||
xhr.post('<%=luci.dispatcher.build_url("admin/system/diskman/format_partition")%>', { partation_name: partation_name, file_system: fs }, (x, res) => {
|
||||
if (x.status == 200) {
|
||||
status.innerHTML = x.statusText
|
||||
location.reload();
|
||||
}else{
|
||||
status.innerHTML = x.statusText
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function clear_text(){
|
||||
let s = document.getElementById('format-status')
|
||||
s.innerHTML = ""
|
||||
let b = document.getElementById('btn_format')
|
||||
b.disabled = false
|
||||
}
|
||||
|
||||
function partition_format(partition_name, format_cmd, current_fs){
|
||||
let list = ''
|
||||
format_cmd.split(",").forEach(e => {
|
||||
list = list + '<option value="'+e+'">'+e+'</option>'
|
||||
});
|
||||
document.getElementById('dialog_format') || document.body.insertAdjacentHTML("beforeend", '<div id="dialog_format"><div class="dialog_box"><div class="dialog_line"></div><div class="dialog_line"><span><%:Format partation:%> <b>'+partition_name+'</b></span><br><span id="format-status" style="color: red;"></span></div><div class="dialog_line"><select id="filesystem_list" class="cbi-input-select" onchange="clear_text()">'+list+'</select></div><div class="dialog_line" style="text-align: right;"><input type="button" class="cbi-button cbi-button-apply" id="btn_format" type="submit" value="<%:Format%>" onclick="do_format(`'+partition_name+'`)" /> <input type="button"class="cbi-button cbi-button-reset" type="reset" value="<%:Cancel%>" onclick="close_dialog()" /></div><div class="dialog_line"></div></div></div>>')
|
||||
document.body.classList.add('dialog-format-active')
|
||||
document.documentElement.style.overflowY = 'hidden'
|
||||
let fs_list = document.getElementById("filesystem_list")
|
||||
fs_list.value = current_fs
|
||||
}
|
||||
</script>
|
||||
79
luci-app-diskman/luasrc/view/diskman/smart_detail.htm
Normal file
79
luci-app-diskman/luasrc/view/diskman/smart_detail.htm
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>S.M.A.R.T detail of <%=dev%></title>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
let formData = new FormData()
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open("GET", '<%=luci.dispatcher.build_url("admin", "system", "diskman", "smartattr", dev)%>', true)
|
||||
xhr.onload = function () {
|
||||
let st = JSON.parse(xhr.responseText)
|
||||
let tb = document.getElementById('smart_attr_table');
|
||||
if (st && tb) {
|
||||
/* clear all rows */
|
||||
while (tb.rows.length > 1)
|
||||
tb.deleteRow(1);
|
||||
|
||||
for (var i = 0; i < st.length; i++) {
|
||||
var tr = tb.insertRow(-1);
|
||||
tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
|
||||
var td = null
|
||||
<% if dev: match("nvme") then %>
|
||||
tr.insertCell(-1).innerHTML = st[i].key;
|
||||
tr.insertCell(-1).innerHTML = st[i].value;
|
||||
<% else %>
|
||||
tr.insertCell(-1).innerHTML = st[i].id;
|
||||
tr.insertCell(-1).innerHTML = st[i].attrbute;
|
||||
tr.insertCell(-1).innerHTML = st[i].flag;
|
||||
tr.insertCell(-1).innerHTML = st[i].value;
|
||||
tr.insertCell(-1).innerHTML = st[i].worst;
|
||||
tr.insertCell(-1).innerHTML = st[i].thresh;
|
||||
tr.insertCell(-1).innerHTML = st[i].type;
|
||||
tr.insertCell(-1).innerHTML = st[i].updated;
|
||||
tr.insertCell(-1).innerHTML = st[i].raw;
|
||||
if ((st[i].id == '05' || st[i].id == 'C5') && st[i].raw != '0') {
|
||||
tr.style.cssText = "background-color:red !important;";
|
||||
}
|
||||
<% end %>
|
||||
}
|
||||
if (tb.rows.length == 1) {
|
||||
var tr = tb.insertRow(-1);
|
||||
tr.className = 'cbi-section-table-row';
|
||||
var td = tr.insertCell(-1);
|
||||
td.colSpan = 4;
|
||||
td.innerHTML = '<em><br /><%:No Attrbute to display.%></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
xhr.send(formData)
|
||||
//]]></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="maincontainer">
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:S.M.A.R.T Attrbutes%>: /dev/<%=dev%></legend>
|
||||
<table class="cbi-section-table" id="smart_attr_table">
|
||||
<tr class="cbi-section-table-titles">
|
||||
<% if dev:match("nvme") then %>
|
||||
<!-- <th class="cbi-section-table-cell"><%:KEY%></th>
|
||||
<th class="cbi-section-table-cell"><%:VALUE%></th> -->
|
||||
<% else %>
|
||||
<th class="cbi-section-table-cell"><%:ID%></th>
|
||||
<th class="cbi-section-table-cell"><%:Attrbute%></th>
|
||||
<th class="cbi-section-table-cell"><%:Flag%></th>
|
||||
<th class="cbi-section-table-cell"><%:Value%></th>
|
||||
<th class="cbi-section-table-cell"><%:Worst%></th>
|
||||
<th class="cbi-section-table-cell"><%:Thresh%></th>
|
||||
<th class="cbi-section-table-cell"><%:Type%></th>
|
||||
<th class="cbi-section-table-cell"><%:Updated%></th>
|
||||
<th class="cbi-section-table-cell"><%:Raw%></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr class="cbi-section-table-row">
|
||||
<td colspan="4"><em><br /><%:Collecting data...%></em></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue