Refactored table CSS, bettered layout in problems

This commit is contained in:
Magnus Åhall 2024-07-05 10:47:50 +02:00
parent 1215b13d47
commit 2c5b434fd2
15 changed files with 379 additions and 146 deletions

View File

@ -49,7 +49,9 @@ dialog,
#acknowledged-list,
#values,
#services,
#notifications {
#notifications,
#group,
.table {
background-color: #fff !important;
border: 1px solid #ddd;
box-shadow: 5px 5px 8px 0px rgba(0, 0, 0, 0.25);

View File

@ -1,3 +1,28 @@
.table {
display: grid;
grid-gap: 6px 16px;
align-items: center;
margin-top: 32px;
margin-bottom: 32px;
background-color: #2979b8;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
.table .row {
grid-column: 1 / -1;
}
.table > div {
white-space: nowrap;
line-height: 24px;
}
.table .header {
font-size: 0.85em;
font-weight: bold;
color: #7bb8eb;
line-height: unset !important;
}
html {
box-sizing: border-box;
}

View File

@ -1,61 +1,45 @@
#problems-list,
#acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-top: 32px;
margin-bottom: 32px;
background-color: #2979b8;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
#problems-list div,
#acknowledged-list div {
white-space: nowrap;
line-height: 24px;
}
#problems-list .header,
#acknowledged-list .header {
font-weight: 800;
color: #7bb8eb;
grid-template-columns: repeat(7, min-content);
}
#problems-list .trigger,
#acknowledged-list .trigger {
color: #1b4e78;
font-weight: 800;
}
#problems-list .acknowledge img,
#acknowledged-list .acknowledge img {
#problems-list img.acknowledge,
#acknowledged-list img.acknowledge {
height: 16px;
}
#problems-list .info,
#acknowledged-list .info {
margin-right: 8px;
}
#problems-list .icons,
#acknowledged-list .icons {
display: grid;
grid-template-columns: min-content min-content;
align-items: center;
}
#acknowledged-list.hidden {
display: none;
}
#areas {
#area-grouped {
display: flex;
flex-wrap: wrap;
gap: 24px;
margin-top: 16px;
align-items: flex-start;
}
#areas .area .section {
display: grid;
grid-template-columns: repeat(4, min-content);
grid-gap: 8px 12px;
#area-grouped .area {
grid-template-columns: repeat(5, min-content);
}
#areas .area .section .name {
color: #000;
grid-column: 1 / -1;
font-weight: bold !important;
line-height: 24px;
}
#areas .area .section div {
white-space: nowrap;
#area-grouped .area .section {
padding: 4px 10px;
border-radius: 5px;
background: #2979b8;
color: #fff;
width: min-content;
margin-bottom: 8px;
}
.hidden {
display: none;

View File

@ -0,0 +1,25 @@
.table {
display: grid;
grid-gap: 6px 16px;
align-items: center;
margin-top: 32px;
margin-bottom: 32px;
background-color: #2979b8;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
.table .row {
grid-column: 1 / -1;
}
.table > div {
white-space: nowrap;
line-height: 24px;
}
.table .header {
font-size: 0.85em;
font-weight: bold;
color: #7bb8eb;
line-height: unset !important;
}

View File

@ -49,7 +49,9 @@ dialog,
#acknowledged-list,
#values,
#services,
#notifications {
#notifications,
#group,
.table {
background-color: #fff !important;
border: 1px solid #ddd;
box-shadow: 5px 5px 8px 0px rgba(0, 0, 0, 0.25);

View File

@ -1,3 +1,28 @@
.table {
display: grid;
grid-gap: 6px 16px;
align-items: center;
margin-top: 32px;
margin-bottom: 32px;
background-color: #333;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
.table .row {
grid-column: 1 / -1;
}
.table > div {
white-space: nowrap;
line-height: 24px;
}
.table .header {
font-size: 0.85em;
font-weight: bold;
color: #777;
line-height: unset !important;
}
html {
box-sizing: border-box;
}

View File

@ -1,61 +1,45 @@
#problems-list,
#acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-top: 32px;
margin-bottom: 32px;
background-color: #333;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
#problems-list div,
#acknowledged-list div {
white-space: nowrap;
line-height: 24px;
}
#problems-list .header,
#acknowledged-list .header {
font-weight: 800;
color: #777;
grid-template-columns: repeat(7, min-content);
}
#problems-list .trigger,
#acknowledged-list .trigger {
color: #fb4934;
font-weight: 800;
}
#problems-list .acknowledge img,
#acknowledged-list .acknowledge img {
#problems-list img.acknowledge,
#acknowledged-list img.acknowledge {
height: 16px;
}
#problems-list .info,
#acknowledged-list .info {
margin-right: 8px;
}
#problems-list .icons,
#acknowledged-list .icons {
display: grid;
grid-template-columns: min-content min-content;
align-items: center;
}
#acknowledged-list.hidden {
display: none;
}
#areas {
#area-grouped {
display: flex;
flex-wrap: wrap;
gap: 24px;
margin-top: 16px;
align-items: flex-start;
}
#areas .area .section {
display: grid;
grid-template-columns: repeat(4, min-content);
grid-gap: 8px 12px;
#area-grouped .area {
grid-template-columns: repeat(5, min-content);
}
#areas .area .section .name {
color: #f7edd7;
grid-column: 1 / -1;
font-weight: bold !important;
line-height: 24px;
}
#areas .area .section div {
white-space: nowrap;
#area-grouped .area .section {
padding: 4px 10px;
border-radius: 5px;
background: #333;
color: #fff;
width: min-content;
margin-bottom: 8px;
}
.hidden {
display: none;

View File

@ -0,0 +1,25 @@
.table {
display: grid;
grid-gap: 6px 16px;
align-items: center;
margin-top: 32px;
margin-bottom: 32px;
background-color: #333;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
.table .row {
grid-column: 1 / -1;
}
.table > div {
white-space: nowrap;
line-height: 24px;
}
.table .header {
font-size: 0.85em;
font-weight: bold;
color: #777;
line-height: unset !important;
}

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="20.000002"
height="20.000013"
viewBox="0 0 5.291667 5.2916703"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="ok.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.9208594"
inkscape:cx="9.7574023"
inkscape:cy="10.27095"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="2190"
inkscape:window-height="1404"
inkscape:window-x="1463"
inkscape:window-y="16"
inkscape:window-maximized="0"
inkscape:showpageshadow="true"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d6d6d6"
showborder="true" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-90.222917,-148.43125)">
<title
id="title1">check-circle</title>
<path
d="m 92.86875,148.43125 c -1.455208,0 -2.645833,1.19063 -2.645833,2.64583 0,1.45521 1.190625,2.64584 2.645833,2.64584 1.455209,0 2.645834,-1.19063 2.645834,-2.64584 0,-1.4552 -1.190625,-2.64583 -2.645834,-2.64583 m -0.529166,3.96875 -1.322917,-1.32292 0.373062,-0.37306 0.949855,0.94721 2.008187,-2.00819 0.373063,0.37571 z"
id="path1"
style="fill:#aad400;stroke-width:0.264583" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="23.157846"
height="20.000013"
viewBox="0 0 6.1271801 5.2916704"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="warning.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="9.3028736"
inkscape:cy="12.772116"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="2190"
inkscape:window-height="1404"
inkscape:window-x="1463"
inkscape:window-y="16"
inkscape:window-maximized="0"
inkscape:showpageshadow="true"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d6d6d6"
showborder="true" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-123.825,-155.04583)">
<title
id="title1">alert</title>
<path
d="m 127.21387,158.38793 h -0.65056 v -1.39253 h 0.65056 m 0,2.50657 h -0.65056 v -0.55701 h 0.65056 m -3.38887,1.39254 h 6.12718 l -3.06358,-5.29167 z"
id="path1"
style="fill:#ff9800;fill-opacity:1;stroke-width:0.278508"
sodipodi:nodetypes="cccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -62,7 +62,7 @@ dialog {
border-radius: 8px;
}
dialog, #datapoints, #problems-list, #acknowledged-list, #values, #services, #notifications {
dialog, #datapoints, #problems-list, #acknowledged-list, #values, #services, #notifications, #group, .table {
background-color: #fff !important;
border: 1px solid #ddd;
box-shadow: 5px 5px 8px 0px rgba(0,0,0,0.25);

View File

@ -1,4 +1,5 @@
@import "theme-@{THEME}.less";
@import "table.less";
html {
box-sizing: border-box;

View File

@ -1,69 +1,48 @@
@import "theme-@{THEME}.less";
#problems-list, #acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-top: 32px;
margin-bottom: 32px;
background-color: @bg3;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
div {
white-space: nowrap;
line-height: 24px;
}
.header {
font-weight: @bold;
color: @text3;
}
grid-template-columns: repeat(7, min-content);
.trigger {
color: @color1;
font-weight: @bold;
}
.acknowledge {
img {
height: 16px;
}
img.acknowledge {
height: 16px;
}
.info {
margin-right: 8px;
}
.icons {
display: grid;
grid-template-columns: min-content min-content;
align-items: center;
}
}
#acknowledged-list.hidden{
display: none;
}
#areas {
#area-grouped {
display: flex;
flex-wrap: wrap;
gap: 24px;
margin-top: 16px;
align-items: flex-start;
.area {
grid-template-columns: repeat(5, min-content);
.section {
display: grid;
grid-template-columns: repeat(4, min-content);
grid-gap: 8px 12px;
.name {
color: @text2;
grid-column: ~"1 / -1";
font-weight: bold !important;
line-height: 24px;
}
div {
white-space: nowrap;
}
padding: 4px 10px;
border-radius: 5px;
background: @bg3;
color: #fff;
width: min-content;
margin-bottom: 8px;
}
}
}

31
static/less/table.less Normal file
View File

@ -0,0 +1,31 @@
@import "theme-@{THEME}.less";
.table {
display: grid;
grid-gap: 6px 16px;
align-items: center;
.row {
grid-column: ~"1 / -1";
}
margin-top: 32px;
margin-bottom: 32px;
background-color: @bg3;
padding: 16px 24px;
width: min-content;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
& > div {
white-space: nowrap;
line-height: 24px;
}
.header {
font-size: 0.85em;
font-weight: bold;
color: @text3;
line-height: unset !important;
}
}

View File

@ -28,105 +28,120 @@
</div>
<div class="display-list hidden">
<div id="problems-list">
<div style="grid-column: 1/-1;"><h2>Unacknowledged</h2></div>
<div id="problems-list" class="table">
<div class="row"><h2>Unacknowledged</h2></div>
<div class="header">OK</div>
<div class="header">Trigger</div>
<div class="header">Area</div>
<div class="header">Section</div>
<div class="header">Since</div>
<div class="header">Until</div>
<div class="header"></div>
{{ range .Data.Problems }}
{{ if .Acknowledged }}
{{ continue }}
{{ end }}
<div class="line"></div>
{{/* NODATA datapoints */}}
{{ if eq .TriggerID -1 }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}">{{ if .IsArchived }}<img src="/images/{{ $version }}/{{ $theme }}/ok.svg">{{ else }}<img src="/images/{{ $version }}/{{ $theme }}/warning.svg">{{ end }}</div>
<div class="trigger">{{ .TriggerName }}</div>
<div class="area">{{ .AreaName }}</div>
<div class="section">{{ .SectionName }}</div>
<div class="start"></div>
<div class="acknowledge">
<div class="start">{{ format_time .Start }}</div>
<div class="end"></div>
<div class="icons">
<img class="info" src="/images/{{ $version }}/{{ $theme }}/info-outline.svg">
<img src="/images/{{ $version }}/{{ $theme }}/acknowledge.svg">
<img class="acknowledge" src="/images/{{ $version }}/{{ $theme }}/acknowledge.svg">
</div>
{{ else }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}">{{ if .IsArchived }}<img src="/images/{{ $version }}/{{ $theme }}/ok.svg">{{ else }}<img src="/images/{{ $version }}/{{ $theme }}/warning.svg">{{ end }}</div>
<div class="trigger"><a href="/trigger/edit/{{ .TriggerID }}">{{ .TriggerName }}</a></div>
<div class="area">{{ .AreaName }}</div>
<div class="section">{{ .SectionName }}</div>
<div class="start">{{ format_time .Start }}</div>
<div class="acknowledge">
<div class="end">{{ if not .End.IsZero }}{{ format_time .End }}{{ else }}-{{ end }}</div>
<div class="icons">
{{ if .FormattedValues }}
<img class="info" src="/images/{{ $version }}/{{ $theme }}/info-filled.svg" title="{{ .FormattedValues }}">
{{ else }}
<img class="info" src="/images/{{ $version }}/{{ $theme }}/info-outline.svg">
{{ end }}
<a href="/problem/acknowledge/{{ .ID }}">
<img src="/images/{{ $version }}/{{ $theme }}/acknowledge-filled.svg">
</a>
<img class="acknowledge" onclick="location.href = '/problem/acknowledge/{{ .ID }}'" src="/images/{{ $version }}/{{ $theme }}/acknowledge-filled.svg">
</div>
{{ end }}
{{ end }}
</div>
<div id="acknowledged-list" class="hidden">
<div style="grid-column: 1/-1;"><h2>Acknowledged</h2></div>
<div id="acknowledged-list" class="table hidden">
<div class="row"><h2>Acknowledged</h2></div>
<div class="header">OK</div>
<div class="header">Trigger</div>
<div class="header">Area</div>
<div class="header">Section</div>
<div class="header">Since</div>
<div class="header">Until</div>
<div class="header"></div>
{{ range .Data.Problems }}
{{ if not .Acknowledged }}
{{ continue }}
{{ end }}
<div class="line"></div>
<div class="{{ if .Acknowledged }}acked hidden{{ end }}">{{ if .IsArchived }}<img src="/images/{{ $version }}/{{ $theme }}/ok.svg">{{ else }}<img src="/images/{{ $version }}/{{ $theme }}/warning.svg">{{ end }}</div>
<div class="trigger"><a href="/trigger/edit/{{ .TriggerID }}">{{ .TriggerName }}</a></div>
<div class="area">{{ .AreaName }}</div>
<div class="section">{{ .SectionName }}</div>
<div class="start">{{ format_time .Start }}</div>
<div class="acknowledge">
<div class="end">{{ if not .End.IsZero }}{{ format_time .End }}{{ else }}-{{ end }}</div>
<div class="icons">
{{ if .FormattedValues }}
<img class="info" src="/images/{{ $version }}/{{ $theme }}/info-filled.svg" title="{{ .FormattedValues }}">
{{ else }}
<img class="info" src="/images/{{ $version }}/{{ $theme }}/info-outline.svg">
{{ end }}
<a href="/problem/unacknowledge/{{ .ID }}"><img src="/images/{{ $version }}/{{ $theme }}/acknowledge-outline.svg"></a>
<img class="acknowledge" onclick="location.href = '/problem/unacknowledge/{{ .ID }}'" src="/images/{{ $version }}/{{ $theme }}/acknowledge-outline.svg">
</div>
{{ end }}
</div>
</div>
<div class="display-areas hidden">
<div id="areas">
<div id="area-grouped">
{{ range $areaName, $sections := .Data.ProblemsGrouped }}
<div class="area">
<div class="name">{{ $areaName }}</div>
<div class="area table">
<div class="row"><h2>{{ $areaName }}</h2></div>
{{ range $sectionName, $problems := $sections }}
<div class="section problems">
<div class="name">{{ $sectionName }}</div>
<div class="section row" style="margin-top: 16px; font-weight: bold;">{{ $sectionName }}</div>
<div class="header">OK</div>
<div class="header">Trigger</div>
<div class="header">Since</div>
<div class="header">Until</div>
<div class="header"></div>
<div class="line"></div>
{{ range $problems }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}">{{ if .IsArchived }}<span class="ok">Archived</span>{{ else }}<span class="error">Current</span>{{ end }}</div>
<div class="{{ if .Acknowledged }}acked hidden{{ end }}">{{ if .IsArchived }}<img src="/images/{{ $version }}/{{ $theme }}/ok.svg">{{ else }}<img src="/images/{{ $version }}/{{ $theme }}/warning.svg">{{ end }}</div>
<div class="{{ if .Acknowledged }}acked hidden{{ end }} trigger">{{ .TriggerName }}</div>
<div class="{{ if .Acknowledged }}acked hidden{{ end }} trigger">{{ .TriggerName }}</div>
{{ if eq (.Start | html) "0001-01-01 00:00:00 +0000 UTC" }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }} since"></div>
{{ else }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }} since">{{ format_time .Start }}</div>
{{ end }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }} since">{{ if not .Start.IsZero }}{{ format_time .Start }}{{ else }}-{{ end }}</div>
<div class="{{ if .Acknowledged }}acked hidden{{ end }} until">{{ if not .End.IsZero }}{{ format_time .End }}{{ else }}-{{ end }}</div>
{{ if .FormattedValues }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}"><img src="/images/{{ $version }}/{{ $theme }}/info-filled.svg" title="{{ .FormattedValues }}"></div>
{{ else }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}"><img src="/images/{{ $version }}/{{ $theme }}/info-outline.svg"></div>
{{ end }}
{{ if .FormattedValues }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}"><img src="/images/{{ $version }}/{{ $theme }}/info-filled.svg" title="{{ .FormattedValues }}"></div>
{{ else }}
<div class="{{ if .Acknowledged }}acked hidden{{ end }}"><img src="/images/{{ $version }}/{{ $theme }}/info-outline.svg"></div>
{{ end }}
{{ end }}
</div>
{{ end }}
</div>
{{ end }}