Skip to content

Commit e808a44

Browse files
committed
first worin version
1 parent 5403f84 commit e808a44

File tree

10 files changed

+203
-98
lines changed

10 files changed

+203
-98
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@ this will then create a npm package via github action.
1818
# info and demo files from:
1919

2020
http://wtt.vanse.de/2021/10/27/svghmi-dateien-erstellen/
21-
https://www.youtube.com/watch?v=EHxW9MD5r2Q (https://iqagent.sharefile.com/share/view/sf11d94e0d00248f39b375b6ea2897e62)
21+
https://www.youtube.com/watch?v=EHxW9MD5r2Q (https://iqagent.sharefile.com/share/view/sf11d94e0d00248f39b375b6ea2897e62)
22+
23+
# more infos
24+
25+
https://support.industry.siemens.com/cs/mdm/109813308?c=160642938123&lc=de-DE

package-lock.json

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
},
2424
"customElements": "custom-elements.json",
2525
"devDependencies": {
26+
"@node-projects/web-component-designer": "^0.1.253",
2627
"@web/dev-server": "^0.4.6",
2728
"release-it": "^19.0.1",
2829
"typescript": "^5.8.3"

sample/index.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
<body>
1313
<node-projects-svghmi src="./sample.svghmi" style="position: absolute; width: 500px; height: 300px;">
1414
</node-projects-svghmi>
15-
<node-projects-svghmi src="./BatteryCharge.svghmi" style="position: absolute; width: 500px; height: 300px; top: 400px;">
15+
<!--<node-projects-svghmi FarbeKreis="0xFF334455" src="./sample.svghmi" style="position: absolute; width: 500px; height: 300px; top: 400px;">
1616
</node-projects-svghmi>
17-
<node-projects-svghmi src="./RegenerativeBlower_WithBox.svghmi" style="position: absolute; width: 500px; height: 300px; top: 800px;">
17+
<node-projects-svghmi src="./BatteryCharge.svghmi" style="position: absolute; width: 500px; height: 300px; top: 800px;">
1818
</node-projects-svghmi>
19+
<node-projects-svghmi src="./RegenerativeBlower_WithBox.svghmi" style="position: absolute; width: 500px; height: 300px; top: 1200px;">
20+
</node-projects-svghmi>-->
1921
</body>
2022
</html>

sample/sample.svghmi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
height="185.71428"
1414
width="185.71432">
1515
<hmi:self type="widget" displayName="Testing" name="extended.Testing" version="1.0" performanceClass="L">
16-
<hmi:paramDef name="FarbeKreis" type="HmiColor" default="0xFF000000" />
16+
<hmi:paramDef name="FarbeKreis" type="HmiColor" default="0xFFaabbcc" />
1717
<hmi:paramDef name="FarbeRechteck" type="HmiColor" default="0xFF000000" />
1818
</hmi:self>
1919
<defs

src/Converter.ts

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,35 +41,35 @@ function hslToHex(h, s, l) {
4141
}
4242

4343
export class Converter {
44-
IsString(txt) {
44+
static IsString(txt) {
4545
return typeof txt == "string";
4646
}
4747

48-
IsNumber(txt) {
48+
static IsNumber(txt) {
4949
return typeof txt == "number";
5050
}
5151

52-
IsBoolean(txt) {
52+
static IsBoolean(txt) {
5353
return typeof txt == "boolean";
5454
}
5555

56-
CountItems(arr: []) {
56+
static CountItems(arr: []) {
5757
return arr.length;
5858
}
5959

60-
RBG(col: string) {
61-
return col.substring(4);
60+
static RGB(col: string) {
61+
return '#' + col.substring(4);
6262
}
6363

64-
RBGA(col: string) {
65-
return col.substring(4) + col.substring(2, 2);
64+
static RGBA(col: string) {
65+
return '#' + col.substring(4) + col.substring(2, 4);
6666
}
6767

68-
Alpha(col: string) {
69-
return col.substring(2);
68+
static Alpha(col: string) {
69+
return col.substring(2,2);
7070
}
7171

72-
Iluminate(input: string, deviation: number, low = '#FFFFFF', high = '#000000') {
72+
static Iluminate(input: string, deviation: number, low = '#FFFFFF', high = '#000000') {
7373
deviation = Math.max(-1, Math.min(1, deviation)); // Clamp deviation to [-1, 1]
7474

7575
let inputHSL = hexToHSL(input);
@@ -90,23 +90,28 @@ export class Converter {
9090
return hslToHex(inputHSL.h, inputHSL.s, adjustedL);
9191
}
9292

93-
Darker(input, deviation: number) {
93+
static Darker(input, deviation: number) {
9494
return this.Iluminate(input, deviation);
9595
}
9696

97-
Lighter(input, deviation: number) {
97+
static Lighter(input, deviation: number) {
9898
return this.Iluminate(input, -1 * deviation);
9999
}
100100

101-
Bounds(input: number, min: number, max: number) {
101+
static Bounds(input: number, min: number, max: number) {
102102
return Math.min(Math.max(input, min), max);
103103
}
104104

105-
Min(input: number, min: number) {
105+
static Min(input: number, min: number) {
106106
return Math.min(input, min);
107107
}
108108

109-
Max(input: number, max: number) {
109+
static Max(input: number, max: number) {
110110
return Math.min(input, max);
111111
}
112+
113+
static FormatPattern(value: string, patter: string) {
114+
//TODO...
115+
return value;
116+
}
112117
}

src/EvalWithContext.ts

Lines changed: 75 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,86 @@
11
import { Converter as ConverterImp } from "./Converter.js";
22
import { gt as gtImp, ge as geImp, lt as ltImp, le as leImp, eq as eqImp, ne as neImp, has as hasImp } from "./Comparison.js";
33
import { and as andImp, or as orImp, not as notImp } from "./Logic.js";
4+
import { SvgHmi } from "./SvgHmi.js";
45

6+
export function evalWithContext(svgHmi: SvgHmi, code: string) {
7+
try {
8+
//@ts-ignore
9+
var Converter = ConverterImp;
510

6-
export function evalWithContext(code: string) {
7-
//@ts-ignore
8-
var Converter = ConverterImp;
11+
var ParamProps = {};
12+
for (let p of svgHmi._svgHmiProperties.entries()) {
13+
ParamProps[p[1].name] = svgHmi[p[1].name] ?? p[1].default;
14+
}
915

10-
//@ts-ignore
11-
var gt = gtImp;
12-
//@ts-ignore
13-
var ge = geImp;
14-
//@ts-ignore
15-
var lt = ltImp;
16-
//@ts-ignore
17-
var le = leImp;
18-
//@ts-ignore
19-
var eq = eqImp;
20-
//@ts-ignore
21-
var ne = neImp;
22-
//@ts-ignore
23-
var has = hasImp;
16+
var LocalProps = {};
17+
for (let p of svgHmi._svgHmiLocalDefs.entries()) {
18+
LocalProps[p[1].name] = p[1].value;
19+
}
2420

25-
//@ts-ignore
26-
var and = andImp;
27-
//@ts-ignore
28-
var or = orImp
29-
//@ts-ignore
30-
var not = notImp
21+
//@ts-ignore
22+
var gt = gtImp;
23+
//@ts-ignore
24+
var ge = geImp;
25+
//@ts-ignore
26+
var lt = ltImp;
27+
//@ts-ignore
28+
var le = leImp;
29+
//@ts-ignore
30+
var eq = eqImp;
31+
//@ts-ignore
32+
var ne = neImp;
33+
//@ts-ignore
34+
var has = hasImp;
3135

32-
//@ts-ignore
33-
var abs = Math.abs;
34-
//@ts-ignore
35-
var round = Math.round;
36-
//@ts-ignore
37-
var floor = Math.floor;
38-
//@ts-ignore
39-
var ceil = Math.ceil;
40-
//@ts-ignore
41-
var sin = Math.sin;
42-
//@ts-ignore
43-
var asin = Math.asin;
44-
//@ts-ignore
45-
var cos = Math.cos;
46-
//@ts-ignore
47-
var acos = Math.acos;
48-
//@ts-ignore
49-
var tan = Math.tan;
50-
//@ts-ignore
51-
var atan = Math.atan;
52-
//@ts-ignore
53-
var atan2 = Math.atan2;
54-
//@ts-ignore
55-
var log = Math.log;
56-
//@ts-ignore
57-
var log10 = Math.log10;
58-
//@ts-ignore
59-
var sqrt = Math.sqrt;
60-
//@ts-ignore
61-
var pow = Math.pow;
62-
//@ts-ignore
63-
var ceil = Math.ceil;
64-
//@ts-ignore
65-
var rad2deg = x => x * 180 / Math.PI;
66-
//@ts-ignore
67-
var deg2rad = x => x * Math.PI / 180;
36+
//@ts-ignore
37+
var and = andImp;
38+
//@ts-ignore
39+
var or = orImp
40+
//@ts-ignore
41+
var not = notImp
6842

43+
//@ts-ignore
44+
var abs = Math.abs;
45+
//@ts-ignore
46+
var round = Math.round;
47+
//@ts-ignore
48+
var floor = Math.floor;
49+
//@ts-ignore
50+
var ceil = Math.ceil;
51+
//@ts-ignore
52+
var sin = Math.sin;
53+
//@ts-ignore
54+
var asin = Math.asin;
55+
//@ts-ignore
56+
var cos = Math.cos;
57+
//@ts-ignore
58+
var acos = Math.acos;
59+
//@ts-ignore
60+
var tan = Math.tan;
61+
//@ts-ignore
62+
var atan = Math.atan;
63+
//@ts-ignore
64+
var atan2 = Math.atan2;
65+
//@ts-ignore
66+
var log = Math.log;
67+
//@ts-ignore
68+
var log10 = Math.log10;
69+
//@ts-ignore
70+
var sqrt = Math.sqrt;
71+
//@ts-ignore
72+
var pow = Math.pow;
73+
//@ts-ignore
74+
var ceil = Math.ceil;
75+
//@ts-ignore
76+
var rad2deg = x => x * 180 / Math.PI;
77+
//@ts-ignore
78+
var deg2rad = x => x * Math.PI / 180;
6979

70-
return eval(code);
80+
81+
return eval(code);
82+
}
83+
catch (err) {
84+
console.warn(err);
85+
}
7186
}

0 commit comments

Comments
 (0)