Theming support

This commit is contained in:
Magnus Åhall 2024-06-25 08:59:07 +02:00
parent e86c96d78f
commit 58e0b2f081
99 changed files with 1839 additions and 1094 deletions

40
configuration.go Normal file
View File

@ -0,0 +1,40 @@
package main
import (
// External
werr "git.gibonuddevalla.se/go/wrappederror"
// Standard
"database/sql"
)
type Configuration struct {
Settings map[string]string
}
var smonConfig Configuration
func SmonConfigInit() (err error) {
smonConfig.Settings = make(map[string]string, 8)
var rows *sql.Rows
rows, err = service.Db.Conn.Query(`SELECT * FROM public.configuration`)
if err != nil {
err = werr.Wrap(err)
return
}
defer rows.Close()
for rows.Next() {
var setting, value string
err = rows.Scan(&setting, &value)
if err != nil {
err = werr.Wrap(err)
return
}
smonConfig.Settings[setting] = value
}
return
}

14
main.go
View File

@ -152,6 +152,12 @@ func main() { // {{{
go nodataLoop()
err = SmonConfigInit()
if err != nil {
logger.Error("configuration", "error", werr.Wrap(err))
os.Exit(1)
}
err = service.Start()
if err != nil {
logger.Error("webserver", "error", werr.Wrap(err))
@ -366,6 +372,7 @@ func pageIndex(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
page := Page{
LAYOUT: "main",
PAGE: "index",
CONFIG: smonConfig.Settings,
}
page.Render(w)
} // }}}
@ -481,6 +488,7 @@ func pageProblems(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
page := Page{
LAYOUT: "main",
PAGE: "problems",
CONFIG: smonConfig.Settings,
}
problems, err := ProblemsRetrieve()
@ -555,6 +563,7 @@ func pageDatapoints(w http.ResponseWriter, r *http.Request, _ *session.T) { // {
page := Page{
LAYOUT: "main",
PAGE: "datapoints",
CONFIG: smonConfig.Settings,
}
datapoints, err := DatapointsRetrieve()
@ -599,6 +608,7 @@ func pageDatapointEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { /
page := Page{
LAYOUT: "main",
PAGE: "datapoint_edit",
CONFIG: smonConfig.Settings,
MENU: "datapoints",
Icon: "datapoints",
Label: "Datapoint",
@ -679,6 +689,7 @@ func pageDatapointValues(w http.ResponseWriter, r *http.Request, _ *session.T) {
page := Page{
LAYOUT: "main",
PAGE: "datapoint_values",
CONFIG: smonConfig.Settings,
MENU: "datapoints",
Icon: "datapoints",
Label: "Values for " + datapoint.Name,
@ -706,6 +717,7 @@ func pageTriggers(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
page := Page{
LAYOUT: "main",
PAGE: "triggers",
CONFIG: smonConfig.Settings,
Data: map[string]any{
"Areas": areas,
},
@ -790,6 +802,7 @@ func pageTriggerEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { //
LAYOUT: "main",
PAGE: "trigger_edit",
MENU: "triggers",
CONFIG: smonConfig.Settings,
Label: "Trigger",
Icon: "triggers",
Data: map[string]any{
@ -934,6 +947,7 @@ func pageConfiguration(w http.ResponseWriter, _ *http.Request, _ *session.T) { /
page := Page{
LAYOUT: "main",
PAGE: "configuration",
CONFIG: smonConfig.Settings,
Data: map[string]any{
"Areas": areas,
},

View File

@ -15,6 +15,7 @@ type Page struct {
LAYOUT string
PAGE string
MENU string
CONFIG map[string]string
Label string
Icon string
@ -47,6 +48,8 @@ func (p *Page) Render(w http.ResponseWriter) {
"LAYOUT": p.LAYOUT,
"PAGE": p.PAGE,
"MENU": p.MENU,
"CONFIG": smonConfig.Settings,
"Label": p.Label,
"Icon": p.Icon,
"Data": p.Data,

5
sql/00018.sql Normal file
View File

@ -0,0 +1,5 @@
CREATE TABLE public."configuration" (
setting varchar NOT NULL,
value varchar DEFAULT '' NOT NULL,
CONSTRAINT configuration_pk PRIMARY KEY (setting)
);

1
sql/00019.sql Normal file
View File

@ -0,0 +1 @@
INSERT INTO public.configuration(setting, value) VALUES('THEME', 'gruvbox');

View File

@ -1,130 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
#areas .area > .name {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0px 16px;
align-items: center;
padding-left: 16px;
padding-right: 8px;
}
#areas .area > .name img {
margin-top: 3px;
margin-bottom: 4px;
height: 16px;
}
#areas .area .section.configuration {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0 16px;
margin-top: 8px;
margin-bottom: 8px;
}
#areas .area .section.configuration:last-child {
margin-bottom: 16px;
}
#areas .area .section.configuration img {
height: 16px;
}

View File

@ -1,168 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
#datapoints {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 8px 16px;
margin-top: 16px;
}
#datapoints .group {
font-size: 1.1em;
font-weight: bold;
color: #b8bb26;
margin-top: 1.5em;
padding-bottom: 4px;
}
#datapoints h2 {
border-bottom: unset;
}
#datapoints .header {
font-weight: 800;
font-size: 0.85em;
color: #d5c4a1;
}
#datapoints div {
white-space: nowrap;
align-self: center;
}
#datapoints .icons {
display: flex;
gap: 12px;
align-items: center;
}
#datapoints img.info {
height: 20px;
}
#values {
display: grid;
grid-template-columns: repeat(2, min-content);
gap: 16px;
white-space: nowrap;
}
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
white-space: nowrap;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
display: grid;
grid-template-columns: min-content 1fr;
gap: 6px 8px;
font-family: "Roboto Mono", monospace;
margin-bottom: 8px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content;
grid-gap: 8px;
}

View File

@ -0,0 +1,26 @@
#areas .area > .name {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0px 16px;
align-items: center;
padding-left: 16px;
padding-right: 8px;
}
#areas .area > .name img {
margin-top: 3px;
margin-bottom: 4px;
height: 16px;
}
#areas .area .section.configuration {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0 16px;
margin-top: 8px;
margin-bottom: 8px;
}
#areas .area .section.configuration:last-child {
margin-bottom: 16px;
}
#areas .area .section.configuration img {
height: 16px;
}

View File

@ -0,0 +1,64 @@
#datapoints {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 8px 16px;
margin-top: 16px;
}
#datapoints .group {
font-size: 1.1em;
font-weight: bold;
color: #2c6e97;
margin-top: 1.5em;
padding-bottom: 4px;
}
#datapoints h2 {
border-bottom: unset;
}
#datapoints .header {
font-weight: 800;
font-size: 0.85em;
color: #333;
}
#datapoints div {
white-space: nowrap;
align-self: center;
}
#datapoints .icons {
display: flex;
gap: 12px;
align-items: center;
}
#datapoints img.info {
height: 20px;
}
#values {
display: grid;
grid-template-columns: repeat(2, min-content);
gap: 16px;
white-space: nowrap;
}
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
white-space: nowrap;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
display: grid;
grid-template-columns: min-content 1fr;
gap: 6px 8px;
font-family: "Roboto Mono", monospace;
margin-bottom: 8px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content;
grid-gap: 8px;
}

View File

@ -0,0 +1,37 @@
.widgets .action #run-result {
background-color: #fff !important;
border: 1px solid #ccc;
}
#menu .entry .label {
color: #7bb8eb !important;
}
#menu .entry.selected .label {
color: #fff !important;
}
input[type="text"],
textarea,
select {
border: 1px solid #ccc;
}
.description {
border: 1px solid #ccc;
}
button {
background: #2979b8;
color: #fff;
border: 1px solid #2e84cb;
}
button:focus {
background: #2979b8;
}
#areas .area {
background: #fff !important;
border: 1px solid #2979b8;
}
#areas .area .name {
border-top-left-radius: unset;
border-top-right-radius: unset;
}
#areas .area .section .name {
font-weight: normal;
}

View File

View File

@ -0,0 +1,4 @@
.graph {
margin-top: 192px;
border-radius: 16px;
}

View File

@ -0,0 +1,205 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
#layout {
display: grid;
grid-template-areas: "menu content";
grid-template-columns: 104px 1fr;
height: 100vh;
}
#menu {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(32, min-content);
align-items: start;
grid-area: menu;
background: #1b4e78;
}
#menu .entry.selected {
background: #2979b8;
}
#menu .entry.selected a {
color: #000 !important;
}
#menu .entry > a {
display: grid;
justify-items: center;
grid-template-rows: 38px
16px
;
padding: 16px;
color: #7bb8eb;
text-decoration: none;
}
#menu .entry > a img {
display: block;
width: 32px;
}
#menu .entry > a .label {
font-size: 0.9em;
font-weight: bold;
}
#page {
grid-area: content;
padding: 32px;
}
#page .page-label {
display: grid;
grid-template-columns: min-content 1fr;
grid-gap: 12px;
align-items: center;
margin-bottom: 32px;
}
#page .page-label div {
font-weight: 800;
font-size: 1.5em;
color: #1b4e78;
}
#page .page-label img {
display: block;
}
#areas {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
}
#areas .area {
background: #2979b8;
border-radius: 4px;
}
#areas .area > .name {
background: #1b4e78;
color: #fff;
font-weight: 800;
padding: 4px 16px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
#areas .area .section {
margin: 8px 16px;
margin-top: 12px;
margin-bottom: 20px;
}
#areas .area .section:last-child {
margin-bottom: 12px;
}
#areas .area .section .create {
display: grid;
grid-template-columns: min-content min-content;
grid-gap: 8px;
white-space: nowrap;
}
#areas .area .section .create .new {
font-weight: 800;
}
#areas .area .section > .name {
font-weight: 800;
}
dialog {
background: #1b4e78;
border: 1px solid #3f90d4;
color: #333;
box-shadow: 10px 10px 15px 0px rgba(0, 0, 0, 0.25);
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #fff;
font-family: sans-serif;
font-weight: 300;
color: #333;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #1b4e78;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #2c6e97;
font-weight: 800;
}
a {
color: #2c6e97;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #fff;
color: #333;
padding: 4px 8px;
border: 1px solid #484848;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #1b4e78;
color: #333;
padding: 8px 32px;
border: 1px solid #2e84cb;
font-size: 1em;
height: 3em;
}
button:focus {
background: #2979b8;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #d9d9d9;
}
span.date {
color: #333;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #333;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #123450;
color: #2c6e97;
background: #fff;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}

View File

@ -0,0 +1,51 @@
#problems-list,
#acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-bottom: 32px;
}
#problems-list div,
#acknowledged-list div {
white-space: nowrap;
line-height: 24px;
}
#problems-list .header,
#acknowledged-list .header {
font-weight: 800;
}
#problems-list .trigger,
#acknowledged-list .trigger {
color: #1b4e78;
font-weight: 800;
}
#problems-list .acknowledge img,
#acknowledged-list .acknowledge img {
height: 16px;
}
#acknowledged-list.hidden {
display: none;
}
#areas {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
}
#areas .area .section {
display: grid;
grid-template-columns: repeat(2, min-content);
grid-gap: 8px 12px;
}
#areas .area .section .name {
color: #000;
grid-column: 1 / -1;
font-weight: bold !important;
line-height: 24px;
}
#areas .area .section div {
white-space: nowrap;
}
.hidden {
display: none;
}

View File

@ -0,0 +1,44 @@
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
font: "Roboto Mono", monospace;
display: grid;
grid-template-columns: min-content min-content 1fr;
gap: 6px 8px;
margin-bottom: 8px;
white-space: nowrap;
}
.widgets .datapoints .invalid {
color: #c83737;
}
.widgets .datapoints .delete img {
height: 16px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content 1fr;
grid-gap: 8px;
}
.widgets .action #run-result {
font-family: 'Roboto Mono', monospace;
margin-left: 16px;
padding: 16px;
background: #1b4e78;
min-height: 8em;
}
.widgets .action #run-result.ok {
color: #333;
}
.widgets .action #run-result.error {
color: #fb4934;
}

View File

@ -0,0 +1,13 @@
#areas .area .section .triggers .trigger {
display: grid;
grid-template-columns: min-content 1fr min-content;
grid-gap: 8px;
align-items: center;
margin-top: 8px;
}
#areas .area .section .triggers .trigger img {
height: 16px;
}
#areas .area .section .triggers .trigger .label {
color: inherit;
}

View File

@ -0,0 +1,26 @@
#areas .area > .name {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0px 16px;
align-items: center;
padding-left: 16px;
padding-right: 8px;
}
#areas .area > .name img {
margin-top: 3px;
margin-bottom: 4px;
height: 16px;
}
#areas .area .section.configuration {
display: grid;
grid-template-columns: 1fr min-content;
grid-gap: 0 16px;
margin-top: 8px;
margin-bottom: 8px;
}
#areas .area .section.configuration:last-child {
margin-bottom: 16px;
}
#areas .area .section.configuration img {
height: 16px;
}

View File

@ -0,0 +1,64 @@
#datapoints {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 8px 16px;
margin-top: 16px;
}
#datapoints .group {
font-size: 1.1em;
font-weight: bold;
color: #b8bb26;
margin-top: 1.5em;
padding-bottom: 4px;
}
#datapoints h2 {
border-bottom: unset;
}
#datapoints .header {
font-weight: 800;
font-size: 0.85em;
color: #d5c4a1;
}
#datapoints div {
white-space: nowrap;
align-self: center;
}
#datapoints .icons {
display: flex;
gap: 12px;
align-items: center;
}
#datapoints img.info {
height: 20px;
}
#values {
display: grid;
grid-template-columns: repeat(2, min-content);
gap: 16px;
white-space: nowrap;
}
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
white-space: nowrap;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
display: grid;
grid-template-columns: min-content 1fr;
gap: 6px 8px;
font-family: "Roboto Mono", monospace;
margin-bottom: 8px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content;
grid-gap: 8px;
}

View File

@ -0,0 +1,37 @@
.widgets .action #run-result {
background-color: #fff !important;
border: 1px solid #ccc;
}
#menu .entry .label {
color: #777 !important;
}
#menu .entry.selected .label {
color: #fff !important;
}
input[type="text"],
textarea,
select {
border: 1px solid #ccc;
}
.description {
border: 1px solid #ccc;
}
button {
background: #333;
color: #fff;
border: 1px solid #535353;
}
button:focus {
background: #333;
}
#areas .area {
background: #fff !important;
border: 1px solid #333;
}
#areas .area .name {
border-top-left-radius: unset;
border-top-right-radius: unset;
}
#areas .area .section .name {
font-weight: normal;
}

View File

View File

@ -0,0 +1,4 @@
.graph {
margin-top: 192px;
border-radius: 16px;
}

View File

@ -12,100 +12,10 @@ html {
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
#layout {
display: grid;
grid-template-areas: "menu content";
grid-template-columns: 96px 1fr;
grid-template-columns: 104px 1fr;
height: 100vh;
}
#menu {
@ -203,3 +113,93 @@ dialog {
color: #d5c4a1;
box-shadow: 10px 10px 15px 0px rgba(0, 0, 0, 0.25);
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #282828;
color: #d5c4a1;
padding: 4px 8px;
border: 1px solid #484848;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #282828;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}

View File

@ -0,0 +1,51 @@
#problems-list,
#acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-bottom: 32px;
}
#problems-list div,
#acknowledged-list div {
white-space: nowrap;
line-height: 24px;
}
#problems-list .header,
#acknowledged-list .header {
font-weight: 800;
}
#problems-list .trigger,
#acknowledged-list .trigger {
color: #fb4934;
font-weight: 800;
}
#problems-list .acknowledge img,
#acknowledged-list .acknowledge img {
height: 16px;
}
#acknowledged-list.hidden {
display: none;
}
#areas {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
}
#areas .area .section {
display: grid;
grid-template-columns: repeat(2, min-content);
grid-gap: 8px 12px;
}
#areas .area .section .name {
color: #f7edd7;
grid-column: 1 / -1;
font-weight: bold !important;
line-height: 24px;
}
#areas .area .section div {
white-space: nowrap;
}
.hidden {
display: none;
}

View File

View File

@ -0,0 +1,44 @@
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
font: "Roboto Mono", monospace;
display: grid;
grid-template-columns: min-content min-content 1fr;
gap: 6px 8px;
margin-bottom: 8px;
white-space: nowrap;
}
.widgets .datapoints .invalid {
color: #c83737;
}
.widgets .datapoints .delete img {
height: 16px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content 1fr;
grid-gap: 8px;
}
.widgets .action #run-result {
font-family: 'Roboto Mono', monospace;
margin-left: 16px;
padding: 16px;
background: #202020;
min-height: 8em;
}
.widgets .action #run-result.ok {
color: #d5c4a1;
}
.widgets .action #run-result.error {
color: #fb4934;
}

View File

@ -0,0 +1,13 @@
#areas .area .section .triggers .trigger {
display: grid;
grid-template-columns: min-content 1fr min-content;
grid-gap: 8px;
align-items: center;
margin-top: 8px;
}
#areas .area .section .triggers .trigger img {
height: 16px;
}
#areas .area .section .triggers .trigger .label {
color: inherit;
}

View File

@ -1,108 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
.graph {
margin-top: 192px;
border-radius: 16px;
}

View File

@ -1,155 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
#problems-list,
#acknowledged-list {
display: grid;
grid-template-columns: repeat(6, min-content);
grid-gap: 4px 16px;
margin-bottom: 32px;
}
#problems-list div,
#acknowledged-list div {
white-space: nowrap;
line-height: 24px;
}
#problems-list .header,
#acknowledged-list .header {
font-weight: 800;
}
#problems-list .trigger,
#acknowledged-list .trigger {
color: #fb4934;
font-weight: 800;
}
#problems-list .acknowledge img,
#acknowledged-list .acknowledge img {
height: 16px;
}
#acknowledged-list.hidden {
display: none;
}
#areas {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
}
#areas .area .section {
display: grid;
grid-template-columns: repeat(2, min-content);
grid-gap: 8px 12px;
}
#areas .area .section .name {
color: #f7edd7;
grid-column: 1 / -1;
font-weight: bold !important;
line-height: 24px;
}
#areas .area .section div {
white-space: nowrap;
}
.hidden {
display: none;
}

View File

@ -1,148 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
.widgets {
display: grid;
grid-template-columns: min-content 1fr;
gap: 8px 16px;
}
.widgets .label {
margin-top: 4px;
}
.widgets input[type="text"],
.widgets textarea {
width: 100%;
}
.widgets .datapoints {
font: "Roboto Mono", monospace;
display: grid;
grid-template-columns: min-content min-content 1fr;
gap: 6px 8px;
margin-bottom: 8px;
white-space: nowrap;
}
.widgets .datapoints .invalid {
color: #c83737;
}
.widgets .datapoints .delete img {
height: 16px;
}
.widgets .action {
display: grid;
grid-template-columns: min-content min-content 1fr;
grid-gap: 8px;
}
.widgets .action #run-result {
font-family: 'Roboto Mono', monospace;
margin-left: 16px;
padding: 16px;
background: #202020;
min-height: 8em;
}
.widgets .action #run-result.ok {
color: #d5c4a1;
}
.widgets .action #run-result.error {
color: #fb4934;
}

View File

@ -1,117 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: #282828;
font-family: sans-serif;
font-weight: 300;
color: #d5c4a1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
}
h1:first-child,
h2:first-child {
margin-top: 0px;
}
h1 {
font-size: 1.5em;
color: #fb4934;
font-weight: 800;
}
h2 {
font-size: 1.25em;
color: #b8bb26;
font-weight: 800;
}
a {
color: #3f9da1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 800;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: #202020;
color: #d5c4a1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em;
}
button {
background: #202020;
color: #d5c4a1;
padding: 8px 32px;
border: 1px solid #535353;
font-size: 1em;
height: 3em;
}
button:focus {
background: #333;
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid #4e4e4e;
}
span.date {
color: #d5c4a1;
font-weight: 800;
}
span.time {
font-size: 0.9em;
color: #d5c4a1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid #737373;
color: #3f9da1;
background: #202020;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}
#areas .area .section .triggers .trigger {
display: grid;
grid-template-columns: min-content 1fr min-content;
grid-gap: 8px;
align-items: center;
margin-top: 8px;
}
#areas .area .section .triggers .trigger img {
height: 16px;
}
#areas .area .section .triggers .trigger .label {
color: inherit;
}

View File

@ -0,0 +1 @@
../acknowledge-filled.svg

View File

@ -0,0 +1 @@
../acknowledge-outline.svg

View File

@ -0,0 +1 @@
../acknowledge.svg

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32.000023"
height="32.890053"
viewBox="0 0 8.4666725 8.70216"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="configuration.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="1"
inkscape:cx="10.5"
inkscape:cy="10"
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.101544,-148.43131)">
<title
id="title1">cog</title>
<title
id="title1-9">cog-outline</title>
<path
d="m 94.33488,151.04195 a 1.7404377,1.7404377 0 0 1 1.740437,1.74043 1.7404377,1.7404377 0 0 1 -1.740437,1.74043 1.7404377,1.7404377 0 0 1 -1.740438,-1.74043 1.7404377,1.7404377 0 0 1 1.740438,-1.74043 m 0,0.8702 a 0.87021889,0.87021889 0 0 0 -0.87022,0.87023 0.87021889,0.87021889 0 0 0 0.87022,0.87022 0.87021889,0.87021889 0 0 0 0.870219,-0.87022 0.87021889,0.87021889 0 0 0 -0.870219,-0.87023 m -0.87022,5.22132 c -0.108784,0 -0.20015,-0.0783 -0.217553,-0.18274 l -0.160998,-1.15305 c -0.274119,-0.1087 -0.509079,-0.2567 -0.735335,-0.43076 l -1.083423,0.43946 c -0.09573,0.0349 -0.213203,0 -0.265416,-0.0957 l -0.870219,-1.50548 c -0.05657,-0.0957 -0.03046,-0.21321 0.05221,-0.27848 l 0.918081,-0.72227 -0.03046,-0.42206 0.03046,-0.43511 -0.918081,-0.70922 c -0.08267,-0.0653 -0.108784,-0.18276 -0.05221,-0.27848 l 0.870219,-1.50548 c 0.05221,-0.0957 0.169692,-0.13485 0.265416,-0.0957 l 1.083423,0.4351 c 0.226256,-0.1697 0.461216,-0.31764 0.735335,-0.42641 l 0.160998,-1.15304 c 0.0174,-0.10443 0.108767,-0.18274 0.217553,-0.18274 h 1.740439 c 0.108768,0 0.20015,0.0783 0.217554,0.18274 l 0.160997,1.15304 c 0.27412,0.10871 0.509079,0.25671 0.735335,0.42641 l 1.083422,-0.4351 c 0.09573,-0.0391 0.213204,0 0.265417,0.0957 l 0.87022,1.50548 c 0.05657,0.0957 0.03046,0.21321 -0.05221,0.27848 l -0.918081,0.70922 0.03046,0.43511 -0.03046,0.4351 0.918081,0.70923 c 0.08267,0.0653 0.108785,0.18275 0.05221,0.27848 l -0.87022,1.50548 c -0.05221,0.0957 -0.169692,0.13485 -0.265417,0.0957 l -1.083422,-0.4351 c -0.226256,0.1697 -0.461215,0.31764 -0.735335,0.4264 l -0.160997,1.15305 c -0.0174,0.10443 -0.108784,0.18274 -0.217554,0.18274 H 93.46466 m 0.543887,-7.83197 -0.160998,1.13565 c -0.522131,0.1087 -0.983348,0.38723 -1.318382,0.77448 l -1.048614,-0.45251 -0.326331,0.56565 0.918081,0.67441 c -0.174045,0.50908 -0.174045,1.06166 0,1.5664 l -0.922433,0.67877 0.326332,0.56564 1.057316,-0.45252 c 0.335034,0.38289 0.7919,0.66137 1.30968,0.7658 l 0.160997,1.13999 h 0.661366 l 0.160997,-1.13565 c 0.51778,-0.1087 0.974646,-0.38725 1.30968,-0.77014 l 1.057315,0.45252 0.326333,-0.56564 -0.922433,-0.67442 c 0.174045,-0.50909 0.174045,-1.06167 0,-1.57075 l 0.918081,-0.67441 -0.326331,-0.56565 -1.048614,0.45251 c -0.335034,-0.38725 -0.796251,-0.66572 -1.318382,-0.77014 l -0.160998,-1.13999 z"
id="path1-1"
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.435109" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32.000031"
height="32.897346"
viewBox="0 0 8.4666745 8.7040898"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="configuration_selected.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="1"
inkscape:cx="9.5"
inkscape:cy="10"
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.294521,-148.43129)">
<title
id="title1">cog</title>
<path
d="m 94.528826,154.30658 a 1.5232321,1.5232321 0 0 1 -1.523231,-1.52325 1.5232321,1.5232321 0 0 1 1.523231,-1.52323 1.5232321,1.5232321 0 0 1 1.523232,1.52323 1.5232321,1.5232321 0 0 1 -1.523232,1.52325 m 3.233603,-1.10109 c 0.0174,-0.13932 0.03046,-0.27853 0.03046,-0.42216 0,-0.1436 -0.013,-0.28723 -0.03046,-0.4352 l 0.918292,-0.70939 c 0.08269,-0.0653 0.10445,-0.1828 0.05222,-0.27853 l -0.870417,-1.50583 c -0.05222,-0.0957 -0.169732,-0.13488 -0.265478,-0.0957 l -1.083672,0.4352 c -0.226308,-0.16972 -0.461321,-0.31769 -0.735503,-0.4265 l -0.161018,-1.15329 c -0.0174,-0.10445 -0.108809,-0.1828 -0.217605,-0.1828 h -1.740836 c -0.108809,0 -0.200198,0.0783 -0.217605,0.1828 l -0.161035,1.15329 c -0.274181,0.10889 -0.509194,0.25678 -0.735503,0.4265 l -1.08367,-0.4352 c -0.09575,-0.0391 -0.213253,0 -0.265478,0.0957 l -0.870419,1.50583 c -0.05658,0.0957 -0.03046,0.21324 0.05222,0.27853 l 0.918292,0.70939 c -0.0174,0.14804 -0.03046,0.29158 -0.03046,0.4352 0,0.1436 0.013,0.28289 0.03046,0.42216 l -0.918292,0.72245 c -0.08269,0.0653 -0.108809,0.18278 -0.05222,0.27853 l 0.870419,1.50582 c 0.05222,0.0957 0.16973,0.13061 0.265478,0.0957 l 1.08367,-0.43957 c 0.226309,0.17408 0.461322,0.32206 0.735503,0.43087 l 0.161035,1.15329 c 0.0174,0.10445 0.108809,0.1828 0.217605,0.1828 h 1.740836 c 0.108809,0 0.200195,-0.0783 0.217605,-0.1828 l 0.161018,-1.15329 c 0.274182,-0.11317 0.509195,-0.25679 0.735503,-0.43087 l 1.083672,0.43957 c 0.09575,0.0349 0.213253,0 0.265478,-0.0957 l 0.870417,-1.50582 c 0.05223,-0.0957 0.03046,-0.21325 -0.05222,-0.27853 z"
id="path1"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9bff07;fill-opacity:1;stroke-width:0.710544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="32"
viewBox="0 0 8.4666667 8.4666664"
version="1.1"
id="svg1"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="datapoints.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">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="16"
inkscape:cx="0.53125"
inkscape:cy="20.0625"
inkscape:window-width="2190"
inkscape:window-height="1404"
inkscape:window-x="1463"
inkscape:window-y="16"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showgrid="false" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-102.9229,-148.76801)">
<title
id="title1">file-chart</title>
<title
id="title1-6">chart-timeline-variant</title>
<circle
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.329648"
id="path1"
cx="103.69108"
cy="156.46651"
r="0.76817483" />
<circle
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.329648"
id="circle1"
cx="110.62139"
cy="149.53618"
r="0.76817483" />
<circle
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.329648"
id="circle2"
cx="106.00118"
cy="151.84628"
r="0.76817483" />
<circle
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.329648"
id="circle3"
cx="108.31129"
cy="154.1564"
r="0.76817483" />
<path
style="fill:none;fill-opacity:1;stroke-width:0.90831457;stroke:#7bb8eb;stroke-opacity:1;stroke-dasharray:none;stroke-linecap:round"
d="m 103.69108,156.46651 2.3101,-4.62023 2.31011,2.31012 2.3101,-4.62022"
id="path3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="32"
viewBox="0 0 8.4666667 8.4666664"
version="1.1"
id="svg1"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="datapoints_selected.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">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="16"
inkscape:cx="0.53125"
inkscape:cy="20.0625"
inkscape:window-width="2190"
inkscape:window-height="1404"
inkscape:window-x="1463"
inkscape:window-y="16"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showgrid="false" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-102.9229,-148.76801)">
<title
id="title1">file-chart</title>
<title
id="title1-6">chart-timeline-variant</title>
<path
d="m 94.987379,153.53513 0.19242,0.0269 1.75874,-1.75874 c -0.0692,-0.25015 -0.004,-0.53493 0.20012,-0.73505 0.30018,-0.30402 0.78508,-0.30402 1.08527,0 0.20396,0.20012 0.26937,0.4849 0.20011,0.73505 l 0.98905,0.98905 0.19242,-0.0269 c 0.0692,0 0.13469,0 0.19242,0.0269 l 1.373891,-1.37389 c -0.0269,-0.0577 -0.0269,-0.1232 -0.0269,-0.19242 a 0.76968815,0.76968815 0 0 1 0.76969,-0.76969 0.76968815,0.76968815 0 0 1 0.7697,0.76969 0.76968815,0.76968815 0 0 1 -0.7697,0.76968 c -0.0692,0 -0.13469,0 -0.19242,-0.0269 l -1.37389,1.3739 c 0.0269,0.0577 0.0269,0.1232 0.0269,0.19242 a 0.76968815,0.76968815 0 0 1 -0.769691,0.76968 0.76968815,0.76968815 0 0 1 -0.76969,-0.76968 l 0.0269,-0.19242 -0.98904,-0.98905 c -0.1232,0.0269 -0.2617,0.0269 -0.38485,0 l -1.75873,1.75873 0.0269,0.19242 a 0.76968815,0.76968815 0 0 1 -0.7697,0.76969 0.76968815,0.76968815 0 0 1 -0.76969,-0.76969 0.76968815,0.76968815 0 0 1 0.76969,-0.76968 z"
id="path1-2"
style="fill:#777777;fill-opacity:1;stroke-width:0.384844" />
<circle
style="fill:#9bff07;fill-opacity:1;stroke-width:0.329648"
id="path1"
cx="103.69108"
cy="156.46651"
r="0.76817483" />
<circle
style="fill:#9bff07;fill-opacity:1;stroke-width:0.329648"
id="circle1"
cx="110.62139"
cy="149.53618"
r="0.76817483" />
<circle
style="fill:#9bff07;fill-opacity:1;stroke-width:0.329648"
id="circle2"
cx="106.00118"
cy="151.84628"
r="0.76817483" />
<circle
style="fill:#9bff07;fill-opacity:1;stroke-width:0.329648"
id="circle3"
cx="108.31129"
cy="154.1564"
r="0.76817483" />
<path
style="fill:none;fill-opacity:1;stroke-width:0.90831457;stroke:#9bff07;stroke-opacity:1;stroke-dasharray:none;stroke-linecap:round"
d="m 103.69108,156.46651 2.3101,-4.62023 2.31011,2.31012 2.3101,-4.62022"
id="path3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1 @@
../delete.svg

View File

@ -0,0 +1 @@
../delete_white.svg

View File

@ -0,0 +1 @@
../graph.drawio

View File

@ -0,0 +1 @@
../graph.svg

View File

@ -0,0 +1 @@
../info-filled.svg

View File

@ -0,0 +1 @@
../info-outline.svg

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="31.999998"
height="28.799999"
viewBox="0 0 8.466666 7.62"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="logo.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="16"
inkscape:cx="9.03125"
inkscape:cy="17.3125"
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.275834,-148.48417)">
<title
id="title1">alert-octagram</title>
<title
id="title1-7">alert-octagram-outline</title>
<title
id="title1-3">database-alert</title>
<title
id="title1-6">database-alert-outline</title>
<path
d="m 93.6625,148.48417 c -1.871133,0 -3.386666,0.75776 -3.386666,1.69332 v 4.23335 c 0,0.93557 1.519766,1.69333 3.386666,1.69333 1.866901,0 3.386667,-0.75776 3.386667,-1.69333 v -4.23335 c 0,-0.93556 -1.515533,-1.69332 -3.386667,-1.69332 m 2.54,5.92667 c 0,0.21166 -0.901699,0.84666 -2.54,0.84666 -1.6383,0 -2.540001,-0.635 -2.540001,-0.84666 v -0.94403 c 0.681568,0.33019 1.574801,0.52069 2.540001,0.52069 0.9652,0 1.858434,-0.1905 2.54,-0.52069 v 0.94403 m 0,-1.92618 c -0.550333,0.40218 -1.515533,0.65618 -2.54,0.65618 -1.024466,0 -1.989666,-0.254 -2.540001,-0.65618 v -1.18956 c 0.622301,0.35137 1.528234,0.57574 2.540001,0.57574 1.011768,0 1.917701,-0.22437 2.54,-0.57574 v 1.18956 m -2.54,-1.46049 c -1.6383,0 -2.540001,-0.635 -2.540001,-0.84668 0,-0.21166 0.901701,-0.84665 2.540001,-0.84665 1.638301,0 2.54,0.63499 2.54,0.84665 0,0.21168 -0.901699,0.84668 -2.54,0.84668 m 5.08,-0.84668 v 2.54001 h -0.846665 v -2.54001 H 98.7425 m -0.846665,3.38668 H 98.7425 v 0.84667 h -0.846665 z"
id="path1"
style="fill:#7bb8eb;fill-opacity:1;stroke-width:0.423333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="28.800037"
viewBox="0 0 8.4666665 7.6200101"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="logo_selected.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="16"
inkscape:cx="9.03125"
inkscape:cy="17.3125"
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.275834,-148.48417)">
<title
id="title1">alert-octagram</title>
<title
id="title1-7">alert-octagram-outline</title>
<title
id="title1-3">database-alert</title>
<path
d="m 97.049172,150.1775 c 0,0.93557 -1.515534,1.69334 -3.38667,1.69334 -1.871134,0 -3.386668,-0.75777 -3.386668,-1.69334 0,-0.93557 1.515534,-1.69333 3.386668,-1.69333 1.871136,0 3.38667,0.75776 3.38667,1.69333 m -3.38667,4.65667 c -1.871134,0 -3.386668,-0.75776 -3.386668,-1.69333 v 1.27001 c 0,0.93557 1.515534,1.69333 3.386668,1.69333 1.871136,0 3.38667,-0.75776 3.38667,-1.69333 v -1.27001 c 0,0.93557 -1.515534,1.69333 -3.38667,1.69333 m 0,-2.11667 c -1.871134,0 -3.386668,-0.75776 -3.386668,-1.69332 v 1.26999 c 0,0.93557 1.515534,1.69333 3.386668,1.69333 1.871136,0 3.38667,-0.75776 3.38667,-1.69333 v -1.26999 c 0,0.93556 -1.515534,1.69332 -3.38667,1.69332 m 4.233338,1.69335 h 0.846661 v -0.84668 H 97.89584 v 0.84668 m 0,-4.23335 v 2.54 h 0.846661 v -2.54 z"
id="path1"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9bff07;fill-opacity:1;stroke-width:0.431972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="31.999975"
viewBox="0 0 8.4666665 8.4666603"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="problems.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="16"
inkscape:cx="9.03125"
inkscape:cy="17.3125"
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.275834,-148.48417)">
<title
id="title1">alert-octagram</title>
<title
id="title1-7">alert-octagram-outline</title>
<path
d="m 90.275834,154.47132 0.725714,-1.75381 -0.725714,-1.75381 1.75381,-0.72572 0.725715,-1.75381 1.753808,0.72571 1.753809,-0.72571 0.725714,1.75381 1.753811,0.72572 -0.725715,1.75381 0.725715,1.75381 -1.753811,0.72571 -0.725714,1.75382 -1.753809,-0.72572 -1.753808,0.72572 -0.725715,-1.75382 -1.75381,-0.72571 m 1.12745,-3.04973 0.535645,1.29592 -0.535645,1.29592 1.287278,0.52269 0.522687,1.28727 1.295918,-0.53565 1.295919,0.53565 0.522687,-1.28727 1.287278,-0.52269 -0.535646,-1.29592 0.535646,-1.29592 -1.287278,-0.52269 -0.522687,-1.28727 -1.295919,0.53564 -1.295918,-0.53564 -0.522687,1.28727 -1.287278,0.52269 m 2.673911,2.59184 h 0.863945 v 0.86395 h -0.863945 v -0.86395 m 0,-3.45579 h 0.863945 v 2.59184 h -0.863945 v -2.59184"
id="path1-5"
style="stroke-width:0.431972;fill:#7bb8eb;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="31.999975"
viewBox="0 0 8.4666665 8.4666603"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="problems_selected.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.8284271"
inkscape:cx="-0.1767767"
inkscape:cy="15.202796"
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.275834,-148.48417)">
<title
id="title1">alert-octagram</title>
<path
d="m 90.275834,154.47131 0.725714,-1.75382 -0.725714,-1.75379 1.753809,-0.72572 0.725714,-1.75381 1.75381,0.72571 1.75381,-0.72571 0.725715,1.75381 1.753809,0.72572 -0.725715,1.75379 0.725715,1.75382 -1.753809,0.72571 -0.725715,1.75381 -1.75381,-0.72571 -1.75381,0.72571 -0.725714,-1.75381 -1.753809,-0.72571 m 4.665306,0.40605 v -0.86395 h -0.863946 v 0.86395 h 0.863946 m 0,-1.72788 v -2.59184 h -0.863946 v 2.59184 z"
id="path1"
style="stroke-width:0.431972;fill:#9bff07;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="31.99999"
height="32.000011"
viewBox="0 0 8.466664 8.4666699"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="triggers.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="1"
inkscape:cx="7.5"
inkscape:cy="4"
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(-87.047917,-148.43125)">
<title
id="title1">script-text</title>
<title
id="title1-6">script-text-outline</title>
<title
id="title1-9">calculator-variant-outline</title>
<path
d="m 94.573842,148.43125 h -6.585184 c -0.517408,0 -0.940741,0.42334 -0.940741,0.94075 v 6.58517 c 0,0.51742 0.423333,0.94075 0.940741,0.94075 h 6.585184 c 0.517409,0 0.940739,-0.42333 0.940739,-0.94075 V 149.372 c 0,-0.51741 -0.42333,-0.94075 -0.940739,-0.94075 m 0,7.52592 H 87.988658 V 149.372 h 6.585184 v 6.58517 m -6.020739,-5.31518 h 2.35185 v 0.70556 h -2.35185 v -0.70556 m 3.198517,3.81001 h 2.351853 v 0.70554 H 91.75162 V 154.452 m 0,-1.22297 h 2.351853 v 0.70556 H 91.75162 v -0.70556 m -2.351851,2.25778 h 0.705556 v -0.94075 h 0.94074 v -0.70555 h -0.94074 v -0.94074 h -0.705556 v 0.94074 h -0.940741 v 0.70555 h 0.940741 v 0.94075 m 2.869259,-3.33963 0.658519,-0.65853 0.658518,0.65853 0.517408,-0.47037 -0.65852,-0.65852 0.65852,-0.65852 -0.517408,-0.51741 -0.658518,0.65853 -0.658519,-0.65853 -0.517408,0.51741 0.658519,0.65852 -0.658519,0.65852 z"
id="path1-1"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#7bb8eb;fill-opacity:1;stroke-width:0.423333;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="31.99999"
height="32.000011"
viewBox="0 0 8.466664 8.4666699"
version="1.1"
id="svg8"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
sodipodi:docname="triggers_selected.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="1"
inkscape:cx="-3.5"
inkscape:cy="65"
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(-89.918898,-132.29942)">
<title
id="title1">script-text</title>
<title
id="title1-9">calculator-variant</title>
<path
d="m 97.444823,132.29942 h -6.585184 c -0.517408,0 -0.940741,0.42334 -0.940741,0.94075 v 6.58517 c 0,0.51742 0.423333,0.94075 0.940741,0.94075 h 6.585184 c 0.517408,0 0.940742,-0.42333 0.940742,-0.94075 v -6.58517 c 0,-0.51741 -0.423334,-0.94075 -0.940742,-0.94075 m -2.822222,1.92852 0.517408,-0.51741 0.658519,0.65853 0.658518,-0.65853 0.517408,0.51741 -0.65852,0.65852 0.65852,0.65852 -0.517408,0.51741 -0.658518,-0.65853 -0.658519,0.65853 -0.517408,-0.51741 0.658519,-0.65852 -0.658519,-0.65852 m -3.198517,0.28222 h 2.35185 v 0.70556 h -2.35185 v -0.70556 m 2.492962,3.90407 h -0.94074 v 0.94075 H 92.27075 v -0.94075 h -0.940741 v -0.70555 h 0.940741 v -0.94074 h 0.705556 v 0.94074 h 0.94074 v 0.70555 m 3.057408,0.56444 h -2.351853 v -0.70554 h 2.351853 v 0.70554 m 0,-1.12889 h -2.351853 v -0.70554 h 2.351853 z"
id="path1"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9bff07;fill-opacity:1;stroke-width:1.22872;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1 @@
../values.svg

View File

@ -0,0 +1 @@
../acknowledge-filled.svg

View File

@ -0,0 +1 @@
../acknowledge-outline.svg

View File

@ -0,0 +1 @@
../acknowledge.svg

View File

@ -0,0 +1 @@
../configuration.svg

View File

@ -0,0 +1 @@
../configuration_selected.svg

View File

@ -0,0 +1 @@
../datapoints.svg

View File

@ -0,0 +1 @@
../datapoints_selected.svg

View File

@ -0,0 +1 @@
../delete.svg

View File

@ -0,0 +1 @@
../delete_white.svg

View File

@ -0,0 +1 @@
../graph.drawio

View File

@ -0,0 +1 @@
../graph.svg

View File

@ -0,0 +1 @@
../info-filled.svg

View File

@ -0,0 +1 @@
../info-outline.svg

View File

@ -0,0 +1 @@
../logo.svg

View File

@ -0,0 +1 @@
../logo_selected.svg

View File

@ -0,0 +1 @@
../problems.svg

View File

@ -0,0 +1 @@
../problems_selected.svg

View File

@ -0,0 +1 @@
../triggers.svg

View File

@ -0,0 +1 @@
../triggers_selected.svg

View File

@ -0,0 +1 @@
../values.svg

View File

@ -1,9 +1,9 @@
less = $(wildcard *.less)
_css = $(less:.less=.css)
css = $(addprefix ../css/, $(_css) )
css = $(addprefix ../css/${THEME}/, $(_css) )
../css/%.css: %.less theme.less
lessc $< ../css/$@
../css/${THEME}/%.css: %.less theme-${THEME}.less
lessc --global-var="THEME=${THEME}" $< $@
all: $(css)

View File

@ -1,4 +1,4 @@
@import 'theme.less';
@import 'theme-@{THEME}.less';
#areas {
.area {

View File

@ -1,4 +1,4 @@
@import "theme.less";
@import "theme-@{THEME}.less";
#datapoints {
display: grid;

View File

@ -0,0 +1,53 @@
@import "theme-@{THEME}.less";
.widgets {
.action {
#run-result {
background-color: #fff !important;
border: 1px solid #ccc;
}
}
}
#menu .entry .label {
color: @text3 !important;
}
#menu .entry.selected .label {
color: #fff !important;
}
input[type="text"],
textarea,
select {
border: 1px solid #ccc;
}
.description {
border: 1px solid #ccc;
}
button {
background: @bg3;
color: #fff;
border: 1px solid lighten(@bg2, 20%);
&:focus {
background: @bg3;
}
}
#areas {
.area {
background: #fff !important;
border: 1px solid @bg3;
.name {
border-top-left-radius: unset;
border-top-right-radius: unset;
}
.section .name {
font-weight: normal;
}
}
}

1
static/less/gruvbox.less Normal file
View File

@ -0,0 +1 @@
@import "theme-@{THEME}.less";

View File

@ -1,4 +1,4 @@
@import "theme.less";
@import "theme-@{THEME}.less";
.graph {
margin-top: 192px;

View File

@ -6,10 +6,15 @@ do
inotifywait -q -e MODIFY *less
#sleep 0.5
clear
if make -j12; then
echo -e "\n\e[32;1mOK!\e[0m"
#curl -s http://notes.lan:1371/_ws/css_update
sleep 1
clear
fi
for THEME in $(ls theme-*.less | sed -e 's/^theme-\(.*\)\.less$/\1/'); do
if make -j12; then
:
#curl -s http://notes.lan:1371/_ws/css_update
fi
done
echo -e "\n\e[32;1mOK!\e[0m"
sleep 1
clear
done

View File

@ -1,9 +1,27 @@
@import "theme.less";
@import "theme-@{THEME}.less";
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
#layout {
display: grid;
grid-template-areas: "menu content";
grid-template-columns: 96px 1fr;
grid-template-columns: 104px 1fr;
height: 100vh;
}
@ -30,7 +48,7 @@
16px
;
padding: 16px;
color: #777;
color: @text3;
text-decoration: none;
img {
@ -122,3 +140,110 @@ dialog {
color: @text1;
box-shadow: 10px 10px 15px 0px rgba(0, 0, 0, 0.25);
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: @bg1;
font-family: sans-serif;
font-weight: 300;
color: @text1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
&:first-child {
margin-top: 0px;
}
}
h1 {
font-size: 1.5em;
color: @color1;
font-weight: @bold;
}
h2 {
font-size: 1.25em;
color: @color3;
font-weight: @bold;
}
a {
color: @color4;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
b {
font-weight: @bold;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: @bg1;
color: @text1;
padding: 4px 8px;
border: 1px solid #484848;
font-size: 1em;
line-height: 1.5em; // fix for chrome hiding underscores
}
button {
background: @bg2;
color: @text1;
padding: 8px 32px;
border: 1px solid lighten(@bg2, 20%);
font-size: 1em;
height: 3em;
&:focus {
background: @bg3;
}
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid .lighterOrDarker(@bg1, 15%)[@result];
}
span.date {
color: @text1;
font-weight: @bold;
}
span.time {
font-size: 0.9em;
color: @text1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid .lighterOrDarker(@bg3, 25%)[@result];
color: @color4;
background: @bg1;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}

View File

@ -1,4 +1,4 @@
@import "theme.less";
@import "theme-@{THEME}.less";
#problems-list, #acknowledged-list {
display: grid;

View File

@ -0,0 +1,20 @@
@bg1: #fff;
@bg2: #1b4e78;
@bg3: #2979b8;
@text1: #333;
@text2: #000;
@text3: #7bb8eb;
@error: #fb4934;
@color1: #1b4e78;
@color2: #fabd2f;
@color3: #2c6e97;
@color4: #2c6e97;
@color5: #fe8019;
@bold: 800;
.lighterOrDarker(@color, @amount) {
@result: darken(@color, @amount);
}

View File

@ -0,0 +1,20 @@
@bg1: #282828;
@bg2: #202020;
@bg3: #333;
@text1: #d5c4a1;
@text2: #f7edd7;
@text3: #777;
@error: #fb4934;
@color1: #fb4934;
@color2: #fabd2f;
@color3: #b8bb26;
@color4: #3f9da1;
@color5: #fe8019;
@bold: 800;
.lighterOrDarker(@color, @amount) {
@result: lighten(@color, @amount);
}

View File

@ -1,143 +0,0 @@
@bg1: #282828;
@bg2: #202020;
@bg3: #333;
@text1: #d5c4a1;
@text2: #f7edd7;
@error: #fb4934;
@color1: #fb4934;
@color2: #fabd2f;
@color3: #b8bb26;
@color4: #3f9da1;
@color5: #fe8019;
@bold: 800;
.lighterOrDarker(@color, @amount) {
@result: lighten(@color, @amount);
}
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
*:focus {
outline: none;
}
[onClick] {
cursor: pointer;
}
html,
body {
margin: 0;
padding: 0;
}
body {
background: @bg1;
font-family: sans-serif;
font-weight: 300;
color: @text1;
font-size: 11pt;
}
h1,
h2 {
margin-bottom: 4px;
&:first-child {
margin-top: 0px;
}
}
h1 {
font-size: 1.5em;
color: @color1;
font-weight: @bold;
}
h2 {
font-size: 1.25em;
color: @color3;
font-weight: @bold;
}
a {
color: @color4;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
b {
font-weight: @bold;
}
input[type="text"],
textarea,
select {
font-family: monospace;
background: @bg2;
color: @text1;
padding: 4px 8px;
border: none;
font-size: 1em;
line-height: 1.5em; // fix for chrome hiding underscores
}
button {
background: @bg2;
color: @text1;
padding: 8px 32px;
border: 1px solid lighten(@bg2, 20%);
font-size: 1em;
height: 3em;
&:focus {
background: @bg3;
}
}
.line {
grid-column: 1 / -1;
border-bottom: 1px solid .lighterOrDarker(@bg1, 15%)[@result];
}
span.date {
color: @text1;
font-weight: @bold;
}
span.time {
font-size: 0.9em;
color: @text1;
}
span.seconds {
display: none;
}
label {
user-select: none;
}
.description {
border: 1px solid .lighterOrDarker(@bg3, 25%)[@result];
color: @color4;
background: @bg2;
padding: 4px 8px;
margin-top: 8px;
white-space: nowrap;
width: min-content;
border-radius: 8px;
}

View File

@ -1,4 +1,4 @@
@import "theme.less";
@import "theme-@{THEME}.less";
#dlg-datapoints {
}

View File

@ -1,4 +1,4 @@
@import 'theme.less';
@import 'theme-@{THEME}.less';
#areas {

View File

@ -2,35 +2,35 @@
<div id="menu">
<div class="entry {{ if eq .MENU "index" }}selected{{ end }}">
<a href="/">
<img src="/images/{{ .VERSION }}/logo{{ if eq .MENU "index" }}_selected{{ end }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/logo{{ if eq .MENU "index" }}_selected{{ end }}.svg">
<div class="label">Start</div>
</a>
</div>
<div class="entry {{ if eq .MENU "problems" }}selected{{ end }}">
<a href="/problems">
<img src="/images/{{ .VERSION }}/problems{{ if eq .MENU "problems" }}_selected{{ end }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/problems{{ if eq .MENU "problems" }}_selected{{ end }}.svg">
<div class="label">Problems</div>
</a>
</div>
<div class="entry {{ if eq .MENU "datapoints" }}selected{{ end }}">
<a href="/datapoints">
<img src="/images/{{ .VERSION }}/datapoints{{ if eq .MENU "datapoints" }}_selected{{ end }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/datapoints{{ if eq .MENU "datapoints" }}_selected{{ end }}.svg">
<div class="label">Datapoints</div>
</a>
</div>
<div class="entry {{ if eq .MENU "triggers" }}selected{{ end }}">
<a href="/triggers">
<img src="/images/{{ .VERSION }}/triggers{{ if eq .MENU "triggers" }}_selected{{ end }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/triggers{{ if eq .MENU "triggers" }}_selected{{ end }}.svg">
<div class="label">Triggers</div>
</a>
</div>
<div class="entry {{ if eq .MENU "configuration" }}selected{{ end }}">
<a href="/configuration">
<img src="/images/{{ .VERSION }}/configuration{{ if eq .MENU "configuration" }}_selected{{ end }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/configuration{{ if eq .MENU "configuration" }}_selected{{ end }}.svg">
<div class="label">Config</div>
</a>
</div>

View File

@ -1,6 +1,6 @@
{{ define "page_label" }}
<div class="page-label">
<img src="/images/{{ .VERSION }}/{{ .Icon }}.svg">
<img src="/images/{{ .VERSION }}/{{ .CONFIG.THEME }}/{{ .Icon }}.svg">
<div>{{ .Label }}</div>
</div>
{{ end }}

View File

@ -4,7 +4,8 @@
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
{{ template "fonts" }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/main.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/main.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/{{ .CONFIG.THEME }}.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.2.1/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luxon@3.3.0/build/global/luxon.min.js"></script>

View File

@ -1,6 +1,6 @@
{{ define "page" }}
{{ $version := .VERSION }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/configuration.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/configuration.css">
<script type="text/javascript">
function newArea() {
let name = prompt("Area name")

View File

@ -1,5 +1,5 @@
{{ define "page" }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/datapoints.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/datapoints.css">
<script type="module" defer>
import {UI} from "/js/{{ .VERSION }}/datapoint_edit.mjs"

View File

@ -1,6 +1,6 @@
{{ define "page" }}
{{ $version := .VERSION }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/datapoints.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/datapoints.css">
{{ block "page_label" . }}{{end}}

View File

@ -1,6 +1,6 @@
{{ define "page" }}
{{ $version := .VERSION }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/datapoints.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/datapoints.css">
{{ block "page_label" . }}{{end}}

View File

@ -1,5 +1,5 @@
{{ define "page" }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/index.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/index.css">
<div style="float: left;">
<img src="/images/{{ .VERSION }}/logo_selected.svg" style="width: 64px; margin-right: 32px;">

View File

@ -5,7 +5,7 @@
window._ui = new UI()
</script>
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/problems.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/problems.css">
{{ block "page_label" . }}{{end}}

View File

@ -11,7 +11,7 @@
_ui.setTrigger(trigger)
_ui.render()
</script>
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/trigger_edit.css">
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/trigger_edit.css">
{{ block "page_label" . }}{{end}}

View File

@ -2,7 +2,8 @@
{{ block "page_label" . }}{{end}}
{{ $version := .VERSION }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/triggers.css">
{{ $theme := .CONFIG.THEME }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/{{ .CONFIG.THEME }}/triggers.css">
<script type="text/javascript">
function createTrigger(sectionID) {
@ -53,7 +54,7 @@
{{ continue }}
{{ end }}
<div class="trigger">
<img src="/images/{{ $version }}/triggers.svg">
<img src="/images/{{ $version }}/{{ $theme }}/triggers.svg">
<div class="label"><a href="/trigger/edit/{{ .ID }}">{{ .Name }}</a></div>
<img src="/images/{{ $version }}/delete.svg" onclick="deleteTrigger({{ .ID }}, '{{ .Name }}')">
</div>