Skip to content

Commit ddcb958

Browse files
authored
Merge branch 'master' into dependabot/npm_and_yarn/postcss-8.4.31
2 parents 10b5647 + 2ef0aa6 commit ddcb958

38 files changed

+2145
-1555
lines changed

.eslintrc.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
"@typescript-eslint/triple-slash-reference": 0,
3131
"@typescript-eslint/no-unused-vars": 0,
3232
"@typescript-eslint/no-explicit-any": 0,
33-
"@typescript-eslint/ban-ts-comment": 0
33+
"@typescript-eslint/ban-ts-comment": 0,
34+
"@typescript-eslint/no-unsafe-declaration-merging": 0
3435
},
3536
"globals": {
3637
"micro": "readonly",

.github/workflows/node.js.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ jobs:
1717
strategy:
1818
matrix:
1919
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
20-
node-version: [16.x, 18.x]
20+
node-version: [18.x, 20.x]
2121

2222
steps:
23-
- uses: actions/checkout@v3
23+
- uses: actions/checkout@v4
2424
- name: Use Node.js ${{ matrix.node-version }}
2525
uses: actions/setup-node@v3
2626
with:

board.htm

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
<link Content-Type="text/css" href="/iotstyle.css" rel="stylesheet" defer />
1919
<script src="/micro.js" defer></script>
2020

21+
<link Content-Type="text/css" href="/u-toast.css" rel="stylesheet" />
22+
<script src="u-toast.js"></script>
23+
2124
<style>
2225
svg.setconfig {
2326
position: absolute;
@@ -47,6 +50,8 @@
4750
border-color: red;
4851
}
4952
</style>
53+
<link Content-Type="text/css" href="/u-toast.css" rel="stylesheet" />
54+
<script src="u-toast.js"></script>
5055
</head>
5156

5257
<body>
@@ -64,6 +69,7 @@ <h1>Board</h1>
6469
</div>
6570

6671
<main class="panel"></main>
72+
<u-toast></u-toast>
6773

6874
<div id="u-templates" style="display:none">
6975

css/base.scss

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ a:hover {
176176
h2,
177177
h3,
178178
h4 {
179+
text-wrap: balance;
179180
font-family: $u-font-sans-serif;
180181
font-weight: bold;
181182
}

css/doc.scss

+17-1
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,26 @@ img[title='w600'] {
9898
}
9999

100100
.warning {
101-
padding: 0.2rem;
101+
margin: 0.2rem;
102+
padding: 0.4rem;
102103
border-radius: 0.4rem;
103104
}
104105

106+
107+
// mark links to external sites
108+
109+
a[href^='http']::after {
110+
content: '';
111+
display: inline-block;
112+
width: 1em;
113+
height: 1em;
114+
vertical-align: text-bottom;
115+
margin-left: 0.25em;
116+
background-size: 1em;
117+
background-image: url("data:image/svg+xml, %3Csvg viewBox='0 0 48 48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M22.689 4v4.918h13.114l-17.049 17.05 3.279 3.606 17.377-17.05v12.787H44V4z' /%3E%3Cpath d='M33 22.99V40H8V15h17v-4l-21 .001V44h33V22.952z' /%3E%3C/svg%3E");
118+
}
119+
120+
105121
// formatted code blocks
106122

107123
@media print {

css/iot.scss

+1-2
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,7 @@ input.switch[type='range'] {
296296
.form-actions {
297297
display: flex;
298298
flex-flow: row wrap;
299-
column-gap: $u-gutter2;
300-
row-gap: $u-gutter2;
299+
gap: $u-gutter2;
301300
}
302301

303302

elements.json

+64-52
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
{
22
"device": {
33
"sys": "true",
4-
"properties": ["room", "name", "i2c-sda", "i2c-scl", "safemode", "sd", "reboottime", "logfile", "cache"],
4+
"properties": ["room", "name", "safemode", "sd", "reboottime", "logfile", "cache",
5+
"i2c-scl", "i2c-sda",
6+
"spi-scl", "spi-miso", "spi-mosi"],
57
"actions": ["log"],
68
"events": ["onSysStart", "onStart"]
79
},
@@ -22,12 +24,16 @@
2224
},
2325

2426
"element": {
25-
"properties": ["loglevel", "title", "description"],
27+
"properties": ["title", "description", "room", "loglevel", "startup"],
2628
"actions": ["start", "stop"]
2729
},
2830

29-
"analog": {
30-
"properties": ["readtimems", "hysteresis", "pin", "reference", "mapinmin", "mapinmax", "mapoutmin", "mapoutmax"],
31+
"sensor": {
32+
"properties": ["readtime", "resendtime", "warmuptime", "restart"]
33+
},
34+
35+
"analog": { "extends": "sensor",
36+
"properties": ["pin", "hysteresis", "reference", "mapinmin", "mapinmax", "mapoutmin", "mapoutmax"],
3137
"events": ["onvalue", "onreference", "onhigh", "onlow"]
3238
},
3339

@@ -86,22 +92,24 @@
8692
"events": ["onvalue", "onhigh", "onlow"]
8793
},
8894

89-
"displaydot": {
95+
"displayoutput": {
9096
"sys": "false",
91-
"properties": ["page", "x", "y", "color"],
97+
"properties": ["x", "y", "w", "h", "page", "color", "background", "border"],
9298
"actions": ["value", "clear", "redraw"]
9399
},
94100

95-
"displaytext": {
101+
"displaydot": { "extends": "displayoutput" },
102+
103+
"displayrect": { "extends": "displayoutput" },
104+
105+
"displaytext": { "extends": "displayoutput",
96106
"sys": "false",
97-
"properties": ["page", "x", "y", "color", "fontsize", "prefix", "postfix"],
98-
"actions": ["value", "clear", "redraw"]
107+
"properties": ["fontsize", "prefix", "postfix"]
99108
},
100109

101-
"displayline": {
110+
"displayline": { "extends": "displayoutput",
102111
"sys": "false",
103-
"properties": ["page", "x", "y", "x1", "y1", "color"],
104-
"actions": ["redraw"]
112+
"properties": ["x1", "y1"]
105113
},
106114

107115
"displaybutton": {
@@ -177,7 +185,7 @@
177185

178186
"display":{
179187
"ui": "display",
180-
"properties": ["color", "background", "address", "spimosi", "spimiso", "spiclk", "spics", "spidc", "invert", "resetpin", "lightpin", "width", "height", "rotation"],
188+
"properties": ["width", "height", "rotation", "busmode", "address", "spimosi", "spimiso", "spiclk", "cspin", "dcpin", "color", "background", "border", "invert", "resetpin", "lightpin"],
181189
"actions" : ["brightness", "page", "addpage", "clear"],
182190
"events": ["onpage"]
183191
},
@@ -187,8 +195,23 @@
187195
"displayst7735": { "extends": "display", "ui": "display" },
188196
"displayst7789": { "extends": "display", "ui": "display" },
189197
"displayst7796": { "extends": "display", "ui": "display" },
190-
"displaytouchgt911": { "icon": "default" },
191-
"displaypanel": { "extends": "display", "ui": "display" },
198+
"displaygc9a01": { "extends": "display", "ui": "display" },
199+
200+
"displaytouchcst816": { "icon": "default", "sys": "true",
201+
"properties": ["address", "width", "height", "rotation", "interruptpin", "resetpin"],
202+
"events": ["ontouch"]
203+
},
204+
205+
"displaytouchgt911": { "icon": "default",
206+
"properties": ["address", "width", "height", "rotation", "interruptpin", "resetpin"],
207+
"events": ["ontouch"]
208+
},
209+
210+
"displaytouchft6336": { "icon": "default",
211+
"properties": ["width", "height", "rotation", "interruptpin", "resetpin"]
212+
},
213+
214+
"displayesp32panel": { "extends": "display", "ui": "display" },
192215

193216
"tm1637": {
194217
"properties": ["datapin", "clockpin"],
@@ -205,74 +228,63 @@
205228
"events": ["onvoltage", "oncurrent", "onpower"]
206229
},
207230

208-
"ina219": {
209-
"ui": "ina2xx",
210-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart",
211-
"gain", "mode", "samples", "range"],
231+
"ina219": { "extends": "sensor", "ui": "ina2xx",
232+
"properties": ["address", "gain", "mode", "samples", "range"],
212233
"events": ["onvoltage", "oncurrent", "onpower"]
213234
},
214235

215-
"ina226": {
216-
"ui": "ina2xx",
217-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart",
218-
"gain", "mode", "samples", "range"],
236+
"ina226": { "extends": "sensor", "ui": "ina2xx",
237+
"properties": ["address", "gain", "mode", "samples", "range"],
219238
"events": ["onvoltage", "oncurrent", "onpower"]
220239
},
221240

222-
"dht": {
223-
"ui": "air",
224-
"properties": ["pin", "readtime", "warmuptime", "resendtime", "restart"],
241+
"dht": { "extends": "sensor", "ui": "air",
242+
"properties": ["pin", "type", "powerpin", "powerinvert"],
225243
"events": ["ontemperature", "onhumidity"]
226244
},
227245

228-
"aht20": {
229-
"icon": "dht", "ui": "air",
230-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
246+
"aht20": { "extends": "sensor", "icon": "dht", "ui": "air",
247+
"properties": ["address"],
231248
"events": ["ontemperature", "onhumidity"]
232249
},
233250

234-
"am2320": {
235-
"icon": "dht", "ui": "air",
236-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
251+
"am2320": { "extends": "sensor", "icon": "dht", "ui": "air",
252+
"properties": ["address"],
237253
"events": ["ontemperature", "onhumidity"]
238254
},
239255

240-
"sht20": {
241-
"icon": "dht", "ui": "air",
242-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
256+
"sht20": { "extends": "sensor", "icon": "dht", "ui": "air",
257+
"properties": ["address"],
243258
"events": ["ontemperature", "onhumidity"]
244259
},
245260

246-
"dallas": {
247-
"properties": ["pin", "readtime", "warmuptime", "resendtime", "restart"],
261+
"dallas": { "extends": "sensor",
262+
"properties": ["pin"],
248263
"events": ["ontemperature"]
249264
},
250265

251-
"bme680": {
252-
"icon": "dht", "ui": "air",
253-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
266+
"bme680": { "extends": "sensor", "icon": "dht", "ui": "air",
267+
"properties": ["address"],
254268
"events": ["ontemperature", "onhumidity", "onpressure", "ongas"]
255269
},
256270

257-
"bmp280": {
258-
"icon": "dht", "ui": "air",
259-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
271+
"bmp280": { "extends": "sensor", "icon": "dht", "ui": "air",
272+
"properties": ["address"],
260273
"events": ["ontemperature", "onpressure"]
261274
},
262275

263-
"scd4x": {
264-
"icon": "dht", "ui": "air",
265-
"properties": ["address", "readtime", "warmuptime", "resendtime", "restart"],
276+
"scd4x": { "extends": "sensor", "icon": "dht", "ui": "air",
277+
"properties": ["address"],
266278
"events": ["ontemperature", "onhumidity", "onco2"]
267279
},
268280

269-
"bh1750": {
270-
"properties": ["address", "mode", "factor", "readtime", "warmuptime", "resendtime", "restart"],
281+
"bh1750": { "extends": "sensor",
282+
"properties": ["address", "mode", "factor"],
271283
"events": ["onvalue"]
272284
},
273285

274-
"pms": {
275-
"properties": ["pinrx", "pintx", "readtime", "warmuptime", "resendtime", "restart"],
286+
"pms": { "extends": "sensor",
287+
"properties": ["pinrx", "pintx"],
276288
"events": ["onvalue"]
277289
},
278290

@@ -349,8 +361,8 @@
349361
},
350362

351363
"timer": {
352-
"properties": ["type", "waittime", "pulsetime", "cycletime"],
353-
"actions": ["next"],
364+
"properties": ["mode", "waittime", "pulsetime", "cycletime", "restart"],
365+
"actions": ["start", "stop", "next"],
354366
"events": ["onon", "onoff", "onvalue"]
355367
},
356368

elementsvg.js

+27-20
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,34 @@ function createBox(tName, txt) {
1414
pObj.appendChild(cn);
1515

1616
// document.documentElement.setAttribute('viewBox', '0 0 120 ' + (y + 20));
17-
document.documentElement.setAttribute('height', (2*(y + 18)));
17+
document.documentElement.setAttribute('height', (2 * (y + 18)));
1818
y += 12;
1919
}
2020

21-
function create(def) {
22-
// remove old blocks
23-
pObj.querySelectorAll('g.block').forEach(function (x) {
24-
pObj.removeChild(x)
25-
});
26-
y = 12;
21+
function create(def, bClean = false) {
22+
if (bClean) {
23+
// remove old blocks
24+
pObj.querySelectorAll('g.block').forEach(function(x) {
25+
pObj.removeChild(x);
26+
});
27+
y = 12;
28+
}
2729

2830
// header
2931
pObj.querySelector('text').textContent = def.name;
3032
var iconName = def.icon || def.name;
3133
pObj.querySelector('use').setAttribute("href", "/icons.svg#" + iconName);
3234

3335
if (def.properties)
34-
def.properties.forEach(function (e) {
36+
def.properties.forEach(function(e) {
3537
createBox("property", e);
3638
});
3739
if (def.events)
38-
def.events.forEach(function (e) {
40+
def.events.forEach(function(e) {
3941
createBox("event", e);
4042
});
4143
if (def.actions)
42-
def.actions.forEach(function (e) {
44+
def.actions.forEach(function(e) {
4345
createBox("action", e);
4446
});
4547
}
@@ -48,18 +50,23 @@ document.api = {
4850
create: create
4951
};
5052

51-
window.addEventListener("load", function () {
53+
window.addEventListener("load", async function() {
5254
var s = document.location.search;
5355
if (s.length > 1) {
5456
var qElem = s.substring(1);
55-
fetch('elements.json')
56-
.then(function (result) { return result.json(); })
57-
.then(function (e) {
58-
var def = e[qElem];
59-
if (def) {
60-
def.name = qElem;
61-
create(def);
62-
}
63-
});
57+
58+
let e = await fetch('elements.json');
59+
e = await e.json();
60+
var def = e[qElem];
61+
if (def) {
62+
// create element level
63+
create(e["element"], true);
64+
65+
if (def.extends)
66+
create(e[def.extends]);
67+
68+
def.name = qElem;
69+
create(def);
70+
}
6471
}
6572
});

favicon.svg

+10-1
Loading

0 commit comments

Comments
 (0)