Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
534ff18a59 | ||
|
|
89e6d009ef | ||
|
|
e6d8e6321a | ||
|
|
547da06a6f | ||
|
|
cc7d1eafee | ||
|
|
a3f961a7c4 | ||
|
|
117ff4c6aa | ||
|
|
459e656f44 | ||
|
|
14e5536d5d | ||
|
|
4ea5374695 | ||
|
|
75507e26ea | ||
|
|
717fac9efd | ||
|
|
a8f17eed19 | ||
|
|
92c1606f47 | ||
|
|
de40dc68ff | ||
|
|
d2a12cc3bb | ||
|
|
e8fc18bc87 | ||
|
|
a87f5085e7 | ||
|
|
b36ab9e572 | ||
|
|
2168404670 | ||
|
|
025441ef7d | ||
|
|
26957ff42b | ||
|
|
9d947c08ba | ||
|
|
49560c8cec | ||
|
|
5727e667fb | ||
|
|
66fa08d48b |
@@ -1,2 +1,4 @@
|
|||||||
mini-beieli-web
|
mini-beieli-web
|
||||||
nohup.out
|
nohup.out
|
||||||
|
mini-beieli-sass/node_modules
|
||||||
|
mini-beieli-sass/package-lock.json
|
||||||
|
|||||||
@@ -51,6 +51,13 @@ $ TOKEN="XXXXXX influxdb access token with rw access rights XXXXXX"
|
|||||||
$ influx delete --token "${TOKEN}" --org minibeieliorg --bucket minibeielibucket --start 2021-06-01T10:53:00Z --stop 2021-06-01T10:53:00Z --predicate '_measurement="measurement" AND deveui="0000D3A659832805"'
|
$ influx delete --token "${TOKEN}" --org minibeieliorg --bucket minibeielibucket --start 2021-06-01T10:53:00Z --stop 2021-06-01T10:53:00Z --predicate '_measurement="measurement" AND deveui="0000D3A659832805"'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Create and Push Docker Image
|
||||||
|
```
|
||||||
|
Example:
|
||||||
|
$ podman login --username drpuur git.nbit.ch
|
||||||
|
$ podman build --tag git.nbit.ch/drpuur/mini-beieli-web:2025080701 -f ./Dockerfile
|
||||||
|
$ podman push git.nbit.ch/drpuur/wo-bisch-web:2025080701
|
||||||
|
```
|
||||||
|
|
||||||
Autor: Joerg Lehmann, nbit Informatik GmbH
|
Autor: Joerg Lehmann, nbit Informatik GmbH
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,31 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getConfigFromEnv(item string) string {
|
||||||
|
value := os.Getenv("CONFIG_ENVVAR")
|
||||||
|
if value == "" {
|
||||||
|
value = "ADDRESS,INITIALCOST,YEARLYCOST"
|
||||||
|
}
|
||||||
|
configArr := strings.Split(value, ",")
|
||||||
|
|
||||||
|
// Check for expected length to prevent out-of-range panic
|
||||||
|
if len(configArr) < 3 {
|
||||||
|
logit("CONFIG_ENVVAR has less than 3 elements")
|
||||||
|
return "NOTFOUND"
|
||||||
|
}
|
||||||
|
|
||||||
|
switch strings.ToLower(item) {
|
||||||
|
case "address":
|
||||||
|
return configArr[0]
|
||||||
|
case "initialcost":
|
||||||
|
return configArr[1]
|
||||||
|
case "yearlycost":
|
||||||
|
return configArr[2]
|
||||||
|
default:
|
||||||
|
return "NOTFOUND"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func serveTemplate(w http.ResponseWriter, r *http.Request) {
|
func serveTemplate(w http.ResponseWriter, r *http.Request) {
|
||||||
logit("Called URL: " + r.URL.Path)
|
logit("Called URL: " + r.URL.Path)
|
||||||
// wennn kein File angegeben ist: index.html
|
// wennn kein File angegeben ist: index.html
|
||||||
@@ -40,6 +65,9 @@ func serveTemplate(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
t := time.Now()
|
t := time.Now()
|
||||||
var datetimestring = t.Format("20060102150405")
|
var datetimestring = t.Format("20060102150405")
|
||||||
|
var address = template.HTML(getConfigFromEnv("address"))
|
||||||
|
var initialcost = getConfigFromEnv("initialcost")
|
||||||
|
var yearlycost = getConfigFromEnv("yearlycost")
|
||||||
var scales = getMyDevs(userName)
|
var scales = getMyDevs(userName)
|
||||||
var last_metrics []OneMetric
|
var last_metrics []OneMetric
|
||||||
|
|
||||||
@@ -63,12 +91,18 @@ func serveTemplate(w http.ResponseWriter, r *http.Request) {
|
|||||||
data := struct {
|
data := struct {
|
||||||
UserName string
|
UserName string
|
||||||
DateTimeString string
|
DateTimeString string
|
||||||
|
Address template.HTML
|
||||||
|
InitialCost string
|
||||||
|
YearlyCost string
|
||||||
Scales []string
|
Scales []string
|
||||||
LastMetrics []OneMetric
|
LastMetrics []OneMetric
|
||||||
QueryValues map[string][]string
|
QueryValues map[string][]string
|
||||||
}{
|
}{
|
||||||
userName,
|
userName,
|
||||||
datetimestring,
|
datetimestring,
|
||||||
|
address,
|
||||||
|
initialcost,
|
||||||
|
yearlycost,
|
||||||
scales,
|
scales,
|
||||||
last_metrics,
|
last_metrics,
|
||||||
query_values,
|
query_values,
|
||||||
|
|||||||
@@ -1,17 +1,24 @@
|
|||||||
{
|
{
|
||||||
"name": "mini-beieli-sass",
|
"name": "mini-beieli-sass",
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"description": "SASS for mini-beieli-web",
|
"description": "SASS for mini-beieli-web",
|
||||||
"main": "enter sass/mini-beieli-web.scss",
|
"main": "css/mini-beieli-web.css",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"css-build": "node-sass --omit-source-map-url sass/mini-beieli-web.scss css/mini-beieli-web.css",
|
"css-build": "sass --no-source-map --load-path=node_modules sass/mini-beieli-web.scss css/mini-beieli-web.css",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"css-build:min": "sass --no-source-map --load-path=node_modules --style=compressed sass/mini-beieli-web.scss css/mini-beieli-web.min.css",
|
||||||
|
"watch": "sass --watch sass/mini-beieli-web.scss css/mini-beieli-web.css",
|
||||||
|
"clean": "rm -rf css/*",
|
||||||
|
"test": "echo \"No tests yet\""
|
||||||
},
|
},
|
||||||
"author": "Joerg Lehmann",
|
"author": "Joerg Lehmann",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bulma": "^0.9.0",
|
"bulma": "^1.0.4",
|
||||||
"bulma-helpers": "^0.3.12",
|
"sass": "^1.77.0"
|
||||||
"node-sass": "^4.14.1"
|
},
|
||||||
}
|
"browserslist": [
|
||||||
|
"> 0.5%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not dead"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
// Import a Google Font
|
@use "bulma/sass/utilities/initial-variables" with (
|
||||||
@import url('https://fonts.googleapis.com/css?family=Rubik:400,700');
|
$family-sans-serif: ("Rubik", sans-serif)
|
||||||
|
);
|
||||||
|
|
||||||
// Set nbit Style...
|
@use "bulma/bulma" as *;
|
||||||
$family-sans-serif: "Rubik", sans-serif;
|
|
||||||
|
|
||||||
@import "../node_modules/bulma/bulma.sass";
|
@import url("https://fonts.googleapis.com/css?family=Rubik:400,700");
|
||||||
@import "../node_modules/bulma-helpers/bulma-helpers.sass";
|
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
{{define "body_content"}}
|
{{define "body_content"}}
|
||||||
<p class="title is-4">Kontakt</p>
|
<p class="title is-4">Kontakt</p>
|
||||||
<p>nbit Informatik GmbH<br />
|
<p>{{ .Address }}
|
||||||
Kirchweg 2<br />
|
|
||||||
3510 Konolfingen<br />
|
|
||||||
<br />
|
|
||||||
+41 31 792 00 40<br />
|
|
||||||
<a href='mailto:i%6Efo@%6Ebit.%63h'>info@nbit.ch</a>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<!-- Content ... -->
|
<!-- Content ... -->
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/apexcharts@3.27.3"></script>
|
<script src="https://cdn.jsdelivr.net/npm/apexcharts@5.3.2"></script>
|
||||||
|
|
||||||
<script src="static/js/chart.js"></script>
|
<script src="static/js/chart.js"></script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,34 @@
|
|||||||
{{define "body_content"}}
|
{{define "body_content"}}
|
||||||
|
<div class="columns is-multiline">
|
||||||
|
<div class="column is-half">
|
||||||
|
<div class="box">
|
||||||
|
<div class="image">
|
||||||
|
<img src="/static/images/mini-beieli-eine-waage.jpeg" alt="Detail eine Waage">
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">Ansicht auf eine Waage</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column is-half">
|
||||||
|
<div class="box">
|
||||||
|
<div class="image">
|
||||||
|
<img src="/static/images/mini-beieli-eine-waage-nur-boexli.jpeg" alt="Waage (Boexli)">
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="mt-2">Ansicht auf die Box mit der Elektronik/Uebertragungseinheit</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="image">
|
<div class="image">
|
||||||
<img src="/static/images/mini-beieli-eine-waage.jpeg" alt="Detail eine Waage">
|
<img src="/static/images/mini-beieli-web-screenshot.jpeg" alt="Messwerteübersicht einer Waage">
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">Ansicht auf eine Waage</div>
|
<div class="mt-2">Messwerteübersicht einer Waage</div>
|
||||||
|
</div>
|
||||||
|
<div class="box">
|
||||||
|
<div class="image">
|
||||||
|
<img src="/static/images/mini-beieli-gewichtsentwicklung-screenshot.jpeg" alt="Gewichtsentwicklung">
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">Grafik der Gewichtsentwicklung (Zeitdauer kann gewählt werden)</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="image">
|
<div class="image">
|
||||||
@@ -17,11 +42,4 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mt-2">CAD Zeichnung Aluminium-Auflage (CNC gefräst, eloxiert)</div>
|
<div class="mt-2">CAD Zeichnung Aluminium-Auflage (CNC gefräst, eloxiert)</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box">
|
|
||||||
<div class="image">
|
|
||||||
<img src="/static/images/mini-beieli-kabelkonfektionierung.jpeg" alt="Kabelkonfektionierung">
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="mt-2">Kabelkonfektionierung in Werkstatt für Menschen mit Behinderung</div>
|
|
||||||
</div>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|||||||
@@ -5,15 +5,12 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="message is-danger">
|
<div class="message is-danger">
|
||||||
<div class="message-body">
|
<div class="message-body">
|
||||||
Aktuell finden Feldversuche statt... Wer trotzdem schon eine möchte, bitte melden!
|
Kann ab sofort gemietet werden. Abokosten pro Kalenderjahr: {{ .YearlyCost }}
|
||||||
<br /><br />
|
<br /><br />
|
||||||
Hier gibt es einen <a href="static/files/mini-beieli-kurzbeschrieb.pdf" target="_blank">Kurzbeschrieb</a>
|
Hier gibt es einen <a href="static/files/mini-beieli-kurzbeschrieb.pdf" target="_blank">Kurzbeschrieb</a>, hier ein paar <a href="/images.html">Bilder</a>.
|
||||||
<br /><br />
|
<br /><br />
|
||||||
Sonderpreis: CHF 500.-- (exkl. MwSt., so lange Vorrat, inkl. ein Jahr Abogebühr geschenkt, anschliessend CHF 5.-- pro Monat).
|
Einmalige Kosten pro Waage: {{ .InitialCost }} (so lange Vorrat, beinhaltet das Abo für das erste Kalenderjahr)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="image">
|
|
||||||
<a href="/images.html"><img src="/static/images/mini-beieli-ready-to-sell.jpeg" alt="Waagen zum Verkauf"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
{{define "body_content"}}
|
|
||||||
<p class="title is-4">Bestellformular</p>
|
|
||||||
<div class="message is-danger">
|
|
||||||
<div class="message-body">
|
|
||||||
Aktuell noch in Entwicklung, kommen Sie später noch einmal vorbei...
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{end}}
|
|
||||||
|
After Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 350 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 331 KiB |
|
After Width: | Height: | Size: 162 KiB |
@@ -17,7 +17,7 @@ function drawGraph(deveui, alias, property, start, stop, minmax, create_graph) {
|
|||||||
minfunc = function(min) { if (min > 0) { return 0 } else { return min } }
|
minfunc = function(min) { if (min > 0) { return 0 } else { return min } }
|
||||||
maxfunc = function(max) { return max + 5 }
|
maxfunc = function(max) { return max + 5 }
|
||||||
labels = {
|
labels = {
|
||||||
offsetX: 35,
|
offsetX: 12,
|
||||||
offsetY: -5,
|
offsetY: -5,
|
||||||
align: 'right'
|
align: 'right'
|
||||||
};
|
};
|
||||||
@@ -28,7 +28,7 @@ function drawGraph(deveui, alias, property, start, stop, minmax, create_graph) {
|
|||||||
minfunc = function(min) { return 0 }
|
minfunc = function(min) { return 0 }
|
||||||
maxfunc = function(max) { return 100 }
|
maxfunc = function(max) { return 100 }
|
||||||
labels = {
|
labels = {
|
||||||
offsetX: 30,
|
offsetX: 12,
|
||||||
offsetY: -5,
|
offsetY: -5,
|
||||||
align: 'right'
|
align: 'right'
|
||||||
};
|
};
|
||||||
@@ -49,7 +49,7 @@ function drawGraph(deveui, alias, property, start, stop, minmax, create_graph) {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
labels = {
|
labels = {
|
||||||
offsetX: 45,
|
offsetX: 12,
|
||||||
offsetY: -5,
|
offsetY: -5,
|
||||||
align: 'right',
|
align: 'right',
|
||||||
formatter: function(val, index) {
|
formatter: function(val, index) {
|
||||||
@@ -63,7 +63,7 @@ function drawGraph(deveui, alias, property, start, stop, minmax, create_graph) {
|
|||||||
minfunc = function(min) { return 0 }
|
minfunc = function(min) { return 0 }
|
||||||
maxfunc = function(max) { return 100 }
|
maxfunc = function(max) { return 100 }
|
||||||
labels = {
|
labels = {
|
||||||
offsetX: 30,
|
offsetX: 12,
|
||||||
offsetY: -5,
|
offsetY: -5,
|
||||||
align: 'right'
|
align: 'right'
|
||||||
};
|
};
|
||||||
@@ -75,7 +75,7 @@ function drawGraph(deveui, alias, property, start, stop, minmax, create_graph) {
|
|||||||
minfunc = function(min) { return 900 }
|
minfunc = function(min) { return 900 }
|
||||||
maxfunc = function(max) { return 1060 }
|
maxfunc = function(max) { return 1060 }
|
||||||
labels = {
|
labels = {
|
||||||
offsetX: 35,
|
offsetX: 12,
|
||||||
offsetY: -5,
|
offsetY: -5,
|
||||||
align: 'right'
|
align: 'right'
|
||||||
};
|
};
|
||||||
|
|||||||