From f1fb7122e3a29aac2374c189e0fe90ba45f41cd2 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 18 Jul 2018 11:38:45 +0200 Subject: [PATCH] luci-base: rework tblsection template - Hide empty title and description rows - Correct row striping offset - Cleanup code Signed-off-by: Jo-Philipp Wich --- .../luci-base/luasrc/view/cbi/tblsection.htm | 126 +++++++++++++----- 1 file changed, 96 insertions(+), 30 deletions(-) diff --git a/modules/luci-base/luasrc/view/cbi/tblsection.htm b/modules/luci-base/luasrc/view/cbi/tblsection.htm index 7067aa587..9505f4ac4 100644 --- a/modules/luci-base/luasrc/view/cbi/tblsection.htm +++ b/modules/luci-base/luasrc/view/cbi/tblsection.htm @@ -1,8 +1,13 @@ <%- -local rowcnt = 1 +local rowcnt = 0 + function rowstyle() rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 + if rowcnt % 2 == 0 then + return "cbi-rowstyle-1" + else + return "cbi-rowstyle-2" + end end function width(o) @@ -15,54 +20,115 @@ function width(o) return '' end +local has_titles = false +local has_descriptions = false + local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous" local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title", translate("Name")) +local i, k +for i, k in pairs(self.children) do + if not k.typename then + k.typename = k.template and k.template:gsub("^.+/", "") or "" + end + + if not has_titles and k.title and #k.title > 0 then + has_titles = true + end + + if not has_descriptions and k.description and #k.description > 0 then + has_descriptions = true + end +end + +function render_titles() + if not has_titles then + return + end + + %>
><% + + local i, k + for i, k in ipairs(self.children) do + if not k.optional then + %>
><% + + if k.titleref then + %><% + end + + write(k.title) + + if k.titleref then + %><% + end + + %>
<% + end + end + + if self.sortable or self.extedit or self.addremove then + %>
<% + end + + %>
<% + + rowcnt = rowcnt + 1 +end + +function render_descriptions() + if not has_descriptions then + return + end + + %>
<% + + local i, k + for i, k in ipairs(self.children) do + if not k.optional then + %>
><% + + write(k.description) + + %>
<% + end + end + + if self.sortable or self.extedit or self.addremove then + %>
<% + end + + %>
<% + + rowcnt = rowcnt + 1 +end + -%>
<% if self.title and #self.title > 0 then -%> - <%=self.title%> +

<%=self.title%>

<%- end %> <%- if self.sortable then -%> <%- end -%>
<%=self.description%>
- <%- local count = 0 -%>
-
> - <%- for i, k in pairs(self.children) do if not k.optional then -%> -
> - <%- if k.titleref then -%><%- end -%> - <%-=k.title-%> - <%- if k.titleref then -%><%- end -%> -
- <%- count = count + 1; end; end; if self.sortable or self.extedit or self.addremove then -%> -
- <%- count = count + 1; end -%> -
-
- <%- for i, k in pairs(self.children) do if not k.optional then -%> -
><%=k.description%>
- <%- end; end; if self.sortable or self.extedit or self.addremove then -%> -
- <%- end -%> -
- <%- local isempty, section, i, k = true, nil, nil + <%- + render_titles() + render_descriptions() + + local isempty, section, i, k = true, nil, nil for i, k in ipairs(self:cfgsections()) do isempty = false section = k local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k) local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname) - local colorclass = (self.extedit or self.rowcolors) and " cbi-rowstyle-%d" % rowstyle() or "" + local colorclass = (self.extedit or self.rowcolors) and rowstyle() or "" local scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" -- 2.25.1