gluon-web: fix radio button view of ListValues
Pretty much everything about this was broken: * Fix dependency tracking * Fix vertical orientation * Fix paddings * Add theming
This commit is contained in:
parent
dbfd22d651
commit
cfe1bba8ae
@ -34,6 +34,6 @@
|
|||||||
<h2><%:Information%></h2>
|
<h2><%:Information%></h2>
|
||||||
<% for _, v in ipairs(values) do %>
|
<% for _, v in ipairs(values) do %>
|
||||||
<div class="gluon-value">
|
<div class="gluon-value">
|
||||||
<div class="gluon-value-title"><%=v[1]%></div><div class="gluon-value-field"><%=pcdata(v[2] or 'n/a')%></div>
|
<div class="gluon-value-title"><%=v[1]%></div><div class="gluon-value-field-text"><%=pcdata(v[2] or 'n/a')%></div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -14,37 +14,37 @@ $Id$
|
|||||||
<h2><%:Upgrade firmware%></h2>
|
<h2><%:Upgrade firmware%></h2>
|
||||||
|
|
||||||
<form method="post" enctype="multipart/form-data" action="<%=url(request)%>">
|
<form method="post" enctype="multipart/form-data" action="<%=url(request)%>">
|
||||||
<p>
|
<p>
|
||||||
<%:You can manually upgrade your firmware here.%>
|
<%:You can manually upgrade your firmware here.%>
|
||||||
</p>
|
</p>
|
||||||
<% if bad_image then %>
|
<% if bad_image then %>
|
||||||
<p class="error"><%:The provided firmware image is not valid for this device.%></p>
|
<p class="error"><%:The provided firmware image is not valid for this device.%></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="gluon-section-node">
|
<div class="gluon-section-node">
|
||||||
<div class="gluon-value">
|
<div class="gluon-value">
|
||||||
<label class="gluon-value-title">
|
<label class="gluon-value-title">
|
||||||
<%:Firmware image%>
|
<%:Firmware image%>
|
||||||
</label>
|
</label>
|
||||||
<div class="gluon-value-field">
|
<div class="gluon-value-field">
|
||||||
<input class="gluon-input-file" type="file" name="image" />
|
<input class="gluon-input-file" type="file" name="image" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gluon-value gluon-value-last">
|
<div class="gluon-value gluon-value-last">
|
||||||
<label class="gluon-value-title">
|
<label class="gluon-value-title">
|
||||||
<%:Keep settings%>
|
<%:Keep settings%>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="gluon-value-field">
|
<div class="gluon-value-field">
|
||||||
<input id="keepcfg" class="gluon-input-checkbox" type="checkbox" name="keepcfg" value="1" checked="checked" />
|
<input id="keepcfg" class="gluon-input-checkbox" type="checkbox" name="keepcfg" value="1" checked="checked" />
|
||||||
<label for="keepcfg"></label>
|
<label for="keepcfg"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gluon-page-actions right">
|
<div class="gluon-page-actions right">
|
||||||
<input type="hidden" name="step" value="2" />
|
<input type="hidden" name="step" value="2" />
|
||||||
<input type="hidden" name="token" value="<%=token%>" />
|
<input type="hidden" name="token" value="<%=token%>" />
|
||||||
<input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>" />
|
<input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
<div class="gluon-value">
|
<div class="gluon-value">
|
||||||
<div class="gluon-value-title">
|
<div class="gluon-value-title">
|
||||||
<input class="gluon-input-radio" data-update="change" type="radio" value="security"<%= attr("id", id..'1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %> />
|
<input class="gluon-input-radio" data-update="change" type="radio" value="security"<%= attr("id", id..'.1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %> />
|
||||||
|
<label<%= attr("for", id..'.1')%>></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="gluon-value-field-long">
|
<div class="gluon-value-field-long">
|
||||||
<label<%= attr("for", id..'1') %> class="gluon-value-title"><%:Security mode%></label>
|
<label<%= attr("for", id..'.1') %> class="gluon-value-title"><%:Security mode%></label>
|
||||||
<br />
|
<br />
|
||||||
<%= translate(
|
<%= translate(
|
||||||
'In security mode, the mesh VPN uses an encrypted tunnel to connect to the VPN servers. ' ..
|
'In security mode, the mesh VPN uses an encrypted tunnel to connect to the VPN servers. ' ..
|
||||||
@ -17,10 +18,11 @@
|
|||||||
|
|
||||||
<div class="gluon-value gluon-value-last">
|
<div class="gluon-value gluon-value-last">
|
||||||
<div class="gluon-value-title">
|
<div class="gluon-value-title">
|
||||||
<input class="gluon-input-radio" data-update="change" type="radio" value="performance"<%= attr("id", id..'2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %> />
|
<input class="gluon-input-radio" data-update="change" type="radio" value="performance"<%= attr("id", id..'.2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %> />
|
||||||
|
<label<%= attr("for", id..'.2')%>></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="gluon-value-field-long">
|
<div class="gluon-value-field-long">
|
||||||
<label<%= attr("for", id..'2') %> class="gluon-value-title"><%:Performance mode%></label>
|
<label<%= attr("for", id..'.2') %> class="gluon-value-title"><%:Performance mode%></label>
|
||||||
<br />
|
<br />
|
||||||
<%= translate(
|
<%= translate(
|
||||||
'In performance mode, no encryption is used. This usually allows for higher throughput, but the data exchanged over your node is not ' ..
|
'In performance mode, no encryption is used. This usually allows for higher throughput, but the data exchanged over your node is not ' ..
|
||||||
|
File diff suppressed because one or more lines are too long
@ -305,6 +305,7 @@ input[type=checkbox] {
|
|||||||
|
|
||||||
& + label {
|
& + label {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
width: 1em;
|
width: 1em;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -324,6 +325,36 @@ input[type=checkbox] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type=radio] {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
& + label {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 0.8em;
|
||||||
|
height: 0.8em;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0.2em 0.2em 0.2em 0.1em;
|
||||||
|
border: none;
|
||||||
|
background: lighten($ffyellow, 30);
|
||||||
|
vertical-align: middle;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked + label:after {
|
||||||
|
content: '•';
|
||||||
|
color: $ffmagenta;
|
||||||
|
vertical-align: middle;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
margin-top: -0.4em;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
input[type=submit],
|
input[type=submit],
|
||||||
input[type=reset],
|
input[type=reset],
|
||||||
input[type=image],
|
input[type=image],
|
||||||
@ -405,6 +436,7 @@ div.gluon-value {
|
|||||||
.gluon-value-title {
|
.gluon-value-title {
|
||||||
flex: 2;
|
flex: 2;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
padding-top: 0.39em;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@ -415,18 +447,21 @@ div.gluon-value-field {
|
|||||||
|
|
||||||
input, select, input + label {
|
input, select, input + label {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -0.39em;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.gluon-value-field-text {
|
||||||
|
flex: 3;
|
||||||
|
padding-top: 0.39em;
|
||||||
|
}
|
||||||
|
|
||||||
div.gluon-value-field-long {
|
div.gluon-value-field-long {
|
||||||
flex: 10;
|
flex: 10;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
margin-top: 0.65em;
|
||||||
|
|
||||||
input, select, input + label {
|
input, select, input + label {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -0.39em;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -533,11 +568,11 @@ div.gluon-error {
|
|||||||
|
|
||||||
input + & {
|
input + & {
|
||||||
left: 0;
|
left: 0;
|
||||||
top: -0.35em;
|
top: 0.04em;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
top: 0.04em;
|
top: 0.53em;
|
||||||
left: -0.08em;
|
left: -0.08em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -550,7 +585,7 @@ div.gluon-error {
|
|||||||
color: #800000;
|
color: #800000;
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -0.42em;
|
top: -0.03em;
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
content: '–';
|
content: '–';
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<%
|
<%
|
||||||
local i, key
|
local br = self.orientation == "horizontal" and '   ' or '<br />'
|
||||||
local br = self.orientation == "horizontal" and ' ' or '<br />'
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<% if self.widget == "select" then %>
|
<% if self.widget == "select" then %>
|
||||||
@ -32,10 +31,10 @@
|
|||||||
attr("value", key) ..
|
attr("value", key) ..
|
||||||
attr("checked", (self:cfgvalue() == key) and "checked")
|
attr("checked", (self:cfgvalue() == key) and "checked")
|
||||||
%> />
|
%> />
|
||||||
<label<%= attr("for", id.."-"..key)%>></label>
|
<label<%= attr("for", id.."."..key)%>></label>
|
||||||
<%=pcdata(self.vallist[i])%>
|
<%=pcdata(self.vallist[i])%>
|
||||||
</label>
|
</label>
|
||||||
<% if i == self.size then write(br) end %>
|
<% if i ~= #self.keylist then write(br) end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
File diff suppressed because one or more lines are too long
@ -154,11 +154,16 @@
|
|||||||
value = t.value;
|
value = t.value;
|
||||||
} else {
|
} else {
|
||||||
value = "";
|
value = "";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return (value == ref);
|
||||||
|
} else {
|
||||||
|
t = document.getElementById(target + '.' + ref);
|
||||||
|
return (t.type == "radio" && t.checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (value == ref)
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function check(deps) {
|
function check(deps) {
|
||||||
|
@ -366,8 +366,6 @@ Value = class(AbstractValue)
|
|||||||
function Value:__init__(...)
|
function Value:__init__(...)
|
||||||
AbstractValue.__init__(self, ...)
|
AbstractValue.__init__(self, ...)
|
||||||
self.subtemplate = "model/value"
|
self.subtemplate = "model/value"
|
||||||
self.keylist = {}
|
|
||||||
self.vallist = {}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user