@operato/scene-mpi 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +31 -0
  3. package/assets/favicon.ico +0 -0
  4. package/assets/images/spinner.png +0 -0
  5. package/dist/auto-clicker.d.ts +10 -0
  6. package/dist/auto-clicker.js +84 -0
  7. package/dist/auto-clicker.js.map +1 -0
  8. package/dist/boot-button.d.ts +20 -0
  9. package/dist/boot-button.js +90 -0
  10. package/dist/boot-button.js.map +1 -0
  11. package/dist/gateway-on-button.d.ts +7 -0
  12. package/dist/gateway-on-button.js +88 -0
  13. package/dist/gateway-on-button.js.map +1 -0
  14. package/dist/gateway-on-message.d.ts +3 -0
  15. package/dist/gateway-on-message.js +375 -0
  16. package/dist/gateway-on-message.js.map +1 -0
  17. package/dist/gateway.d.ts +58 -0
  18. package/dist/gateway.js +396 -0
  19. package/dist/gateway.js.map +1 -0
  20. package/dist/index.d.ts +5 -0
  21. package/dist/index.js +7 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/indicator-on-message.d.ts +2 -0
  24. package/dist/indicator-on-message.js +5 -0
  25. package/dist/indicator-on-message.js.map +1 -0
  26. package/dist/indicator-user-action.d.ts +5 -0
  27. package/dist/indicator-user-action.js +263 -0
  28. package/dist/indicator-user-action.js.map +1 -0
  29. package/dist/indicator.d.ts +83 -0
  30. package/dist/indicator.js +544 -0
  31. package/dist/indicator.js.map +1 -0
  32. package/dist/reply-button.d.ts +20 -0
  33. package/dist/reply-button.js +67 -0
  34. package/dist/reply-button.js.map +1 -0
  35. package/dist/segment-display.d.ts +41 -0
  36. package/dist/segment-display.js +521 -0
  37. package/dist/segment-display.js.map +1 -0
  38. package/dist/seven-segment.d.ts +7 -0
  39. package/dist/seven-segment.js +137 -0
  40. package/dist/seven-segment.js.map +1 -0
  41. package/dist/templates/auto-clicker.d.ts +17 -0
  42. package/dist/templates/auto-clicker.js +19 -0
  43. package/dist/templates/auto-clicker.js.map +1 -0
  44. package/dist/templates/boot-button.d.ts +16 -0
  45. package/dist/templates/boot-button.js +18 -0
  46. package/dist/templates/boot-button.js.map +1 -0
  47. package/dist/templates/gateway.d.ts +16 -0
  48. package/dist/templates/gateway.js +18 -0
  49. package/dist/templates/gateway.js.map +1 -0
  50. package/dist/templates/index.d.ts +16 -0
  51. package/dist/templates/index.js +15 -0
  52. package/dist/templates/index.js.map +1 -0
  53. package/dist/templates/indicator.d.ts +16 -0
  54. package/dist/templates/indicator.js +18 -0
  55. package/dist/templates/indicator.js.map +1 -0
  56. package/dist/templates/reply-button.d.ts +16 -0
  57. package/dist/templates/reply-button.js +18 -0
  58. package/dist/templates/reply-button.js.map +1 -0
  59. package/dist/templates/seven-segment.d.ts +28 -0
  60. package/dist/templates/seven-segment.js +30 -0
  61. package/dist/templates/seven-segment.js.map +1 -0
  62. package/dist/uuid.d.ts +1 -0
  63. package/dist/uuid.js +21 -0
  64. package/dist/uuid.js.map +1 -0
  65. package/helps/scene/component/auto-clicker.ko.md +3 -0
  66. package/helps/scene/component/auto-clicker.md +3 -0
  67. package/helps/scene/component/auto-clicker.zh.md +3 -0
  68. package/helps/scene/component/boot-button.ko.md +3 -0
  69. package/helps/scene/component/boot-button.md +3 -0
  70. package/helps/scene/component/boot-button.zh.md +3 -0
  71. package/helps/scene/component/gateway.ko.md +3 -0
  72. package/helps/scene/component/gateway.md +3 -0
  73. package/helps/scene/component/gateway.zh.md +3 -0
  74. package/helps/scene/component/indicator.ko.md +3 -0
  75. package/helps/scene/component/indicator.md +3 -0
  76. package/helps/scene/component/indicator.zh.md +3 -0
  77. package/helps/scene/component/reply-button.ko.md +3 -0
  78. package/helps/scene/component/reply-button.md +3 -0
  79. package/helps/scene/component/reply-button.zh.md +3 -0
  80. package/helps/scene/component/seven-segment.ko.md +3 -0
  81. package/helps/scene/component/seven-segment.md +3 -0
  82. package/helps/scene/component/seven-segment.zh.md +3 -0
  83. package/icons/boot-button.png +0 -0
  84. package/icons/button-error.png +0 -0
  85. package/icons/button-start.png +0 -0
  86. package/icons/button-status.png +0 -0
  87. package/icons/button-stop.png +0 -0
  88. package/icons/gateway.png +0 -0
  89. package/icons/icon-boot-button.png +0 -0
  90. package/icons/icon-gateway.png +0 -0
  91. package/icons/icon-indicator.png +0 -0
  92. package/icons/icon-reply-button.png +0 -0
  93. package/icons/icon-seven-segment.png +0 -0
  94. package/icons/indicator.png +0 -0
  95. package/icons/no-image.png +0 -0
  96. package/icons/reply-button.png +0 -0
  97. package/package.json +61 -0
  98. package/src/auto-clicker.ts +97 -0
  99. package/src/boot-button.ts +112 -0
  100. package/src/gateway-on-button.ts +97 -0
  101. package/src/gateway-on-message.ts +405 -0
  102. package/src/gateway.ts +484 -0
  103. package/src/index.ts +6 -0
  104. package/src/indicator-on-message.ts +6 -0
  105. package/src/indicator-user-action.ts +292 -0
  106. package/src/indicator.ts +638 -0
  107. package/src/reply-button.ts +88 -0
  108. package/src/segment-display.ts +608 -0
  109. package/src/seven-segment.ts +162 -0
  110. package/src/templates/auto-clicker.ts +19 -0
  111. package/src/templates/boot-button.ts +18 -0
  112. package/src/templates/gateway.ts +18 -0
  113. package/src/templates/index.ts +15 -0
  114. package/src/templates/indicator.ts +18 -0
  115. package/src/templates/reply-button.ts +18 -0
  116. package/src/templates/seven-segment.ts +30 -0
  117. package/src/uuid.ts +20 -0
  118. package/things-scene.config.js +5 -0
  119. package/translations/en.json +26 -0
  120. package/translations/ja.json +26 -0
  121. package/translations/ko.json +26 -0
  122. package/translations/ms.json +23 -0
  123. package/translations/zh.json +23 -0
  124. package/tsconfig.json +22 -0
  125. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,162 @@
1
+ const NATURE: ComponentNature = {
2
+ mutable: false,
3
+ resizable: true,
4
+ rotatable: true,
5
+ properties: [
6
+ {
7
+ type: 'string',
8
+ label: 'value',
9
+ name: 'value',
10
+ placeholder: '12:34:56'
11
+ },
12
+ {
13
+ type: 'string',
14
+ label: 'pattern',
15
+ name: 'pattern',
16
+ placeholder: '##:##:##'
17
+ },
18
+ {
19
+ type: 'number',
20
+ label: 'digit height',
21
+ name: 'digitHeight',
22
+ placeholder: '20'
23
+ },
24
+ {
25
+ type: 'number',
26
+ label: 'digit width',
27
+ name: 'digitWidth',
28
+ placeholder: '10'
29
+ },
30
+ {
31
+ type: 'number',
32
+ label: 'digit distance',
33
+ name: 'digitDistance',
34
+ placeholder: '2.5'
35
+ },
36
+ {
37
+ type: 'number',
38
+ label: 'display angle',
39
+ name: 'displayAngle',
40
+ placeholder: '12'
41
+ },
42
+ {
43
+ type: 'number',
44
+ label: 'segment width',
45
+ name: 'segmentWidth',
46
+ placeholder: '2.5'
47
+ },
48
+ {
49
+ type: 'number',
50
+ label: 'segment distance',
51
+ name: 'segmentDistance',
52
+ placeholder: '0.2'
53
+ },
54
+ {
55
+ type: 'select',
56
+ label: 'segment count',
57
+ name: 'segmentCount',
58
+ property: {
59
+ options: [
60
+ {
61
+ display: 7,
62
+ value: 7
63
+ },
64
+ {
65
+ display: 14,
66
+ value: 14
67
+ },
68
+ {
69
+ display: 16,
70
+ value: 16
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ {
76
+ type: 'select',
77
+ label: 'corner type',
78
+ name: 'cornerType',
79
+ property: {
80
+ options: [
81
+ {
82
+ display: 'SymmetricCorner',
83
+ value: 0
84
+ },
85
+ {
86
+ display: 'SquaredCorner',
87
+ value: 1
88
+ },
89
+ {
90
+ display: 'RoundedCorner',
91
+ value: 2
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ {
97
+ type: 'color',
98
+ label: 'color-on',
99
+ name: 'colorOn'
100
+ },
101
+ {
102
+ type: 'color',
103
+ label: 'color-off',
104
+ name: 'colorOff'
105
+ }
106
+ ],
107
+ 'value-property': 'value',
108
+ help: 'scene/component/seven-segment'
109
+ }
110
+
111
+ import { Component, ComponentNature, RectPath, Shape } from '@hatiolab/things-scene'
112
+ import SegmentDisplay from './segment-display'
113
+
114
+ export default class SevenSegment extends RectPath(Shape) {
115
+ render(context: CanvasRenderingContext2D) {
116
+ var {
117
+ top,
118
+ left,
119
+ height,
120
+ width,
121
+ pattern = '##:##:##',
122
+ value = '12:34:56',
123
+ digitHeight = 20,
124
+ digitWidth = 10,
125
+ digitDistance = 2.5,
126
+ displayAngle = 12,
127
+ segmentWidth = 2.5,
128
+ segmentDistance = 0.2,
129
+ segmentCount = SegmentDisplay.SevenSegment,
130
+ cornerType = SegmentDisplay.RoundedCorner,
131
+ colorOn = 'rgb(233, 93, 15)',
132
+ colorOff = 'rgb(75, 30, 5)'
133
+ } = this.state
134
+
135
+ var display = new SegmentDisplay(width, height)
136
+ display.pattern = pattern
137
+ display.displayAngle = displayAngle
138
+ display.digitHeight = digitHeight
139
+ display.digitWidth = digitWidth
140
+ display.digitDistance = digitDistance
141
+ display.segmentWidth = segmentWidth
142
+ display.segmentDistance = segmentDistance
143
+ display.segmentCount = segmentCount
144
+ display.cornerType = cornerType
145
+ display.colorOn = colorOn
146
+ display.colorOff = colorOff
147
+
148
+ display.setValue(String(value))
149
+
150
+ context.translate(left, top)
151
+
152
+ display.draw(context)
153
+
154
+ context.beginPath()
155
+ }
156
+
157
+ get nature() {
158
+ return NATURE
159
+ }
160
+ }
161
+
162
+ Component.register('seven-segment', SevenSegment)
@@ -0,0 +1,19 @@
1
+ const icon = new URL('../../icons/no-image.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'auto-clicker',
5
+ description: 'auto clicking target',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'auto-clicker',
11
+ left: 100,
12
+ top: 100,
13
+ width: 100,
14
+ height: 100,
15
+ fillStyle: 'white',
16
+ strokeStyle: 'black',
17
+ switch: 'false'
18
+ }
19
+ }
@@ -0,0 +1,18 @@
1
+ const icon = new URL('../../icons/icon-boot-button.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'boot-button',
5
+ description: 'all gateway boot',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'boot-button',
11
+ left: 100,
12
+ top: 100,
13
+ width: 500,
14
+ height: 500,
15
+ fillStyle: 'transparent',
16
+ strokeStyle: 'transparent'
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ const icon = new URL('../../icons/icon-gateway.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'gateway',
5
+ description: 'multi-purpose indicator gateway',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'gateway',
11
+ left: 10,
12
+ top: 10,
13
+ width: 800,
14
+ height: 600,
15
+ fillStyle: 'cyan',
16
+ strokeStyle: 'darkgray'
17
+ }
18
+ }
@@ -0,0 +1,15 @@
1
+ import indicator from './indicator'
2
+ import gateway from './gateway'
3
+ import sevenSegment from './seven-segment'
4
+ import bootButton from './boot-button'
5
+ import replyButton from './reply-button'
6
+ // import autoClicker from './auto-clicker'
7
+
8
+ export default [
9
+ indicator,
10
+ gateway,
11
+ sevenSegment,
12
+ bootButton,
13
+ replyButton
14
+ // autoClicker
15
+ ]
@@ -0,0 +1,18 @@
1
+ const icon = new URL('../../icons/icon-indicator.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'indicator',
5
+ description: 'multi-purpose indicator',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'indicator',
11
+ left: 10,
12
+ top: 10,
13
+ width: 449,
14
+ height: 53,
15
+ fillStyle: 'black',
16
+ strokeStyle: 'darkgray'
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ const icon = new URL('../../icons/icon-reply-button.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'reply-button',
5
+ description: 'all mpi response',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'reply-button',
11
+ left: 100,
12
+ top: 100,
13
+ width: 500,
14
+ height: 500,
15
+ fillStyle: 'transparent',
16
+ strokeStyle: 'transparent'
17
+ }
18
+ }
@@ -0,0 +1,30 @@
1
+ const icon = new URL('../../icons/icon-seven-segment.png', import.meta.url).href
2
+
3
+ export default {
4
+ type: 'seven-segment',
5
+ description: 'electric seven segment emulator',
6
+ group: 'IoT',
7
+ /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */
8
+ icon,
9
+ model: {
10
+ type: 'seven-segment',
11
+ left: 10,
12
+ top: 10,
13
+ width: 200,
14
+ height: 300,
15
+ fillStyle: 'black',
16
+ strokeStyle: 'darkgray',
17
+ pattern: '##:##:##',
18
+ value: '12:34:56',
19
+ digitHeight: 20,
20
+ digitWidth: 10,
21
+ digitDistance: 2.5,
22
+ displayAngle: 12,
23
+ segmentWidth: 2.5,
24
+ segmentDistance: 0.2,
25
+ segmentCount: 7,
26
+ cornerType: 0,
27
+ colorOn: 'rgb(233, 93, 15)',
28
+ colorOff: 'rgb(75, 30, 5)'
29
+ }
30
+ }
package/src/uuid.ts ADDED
@@ -0,0 +1,20 @@
1
+ export function uuid() {
2
+ const chars = '0123456789abcdef'
3
+ const uuid = []
4
+ let random
5
+
6
+ for (let i = 0; i < 36; i++) {
7
+ if (i === 8 || i === 13 || i === 18 || i === 23) {
8
+ uuid[i] = '-'
9
+ } else if (i === 14) {
10
+ uuid[i] = '4'
11
+ } else {
12
+ if (random === undefined || i % 6 === 0) {
13
+ random = (Math.random() * 16) | 0
14
+ }
15
+ uuid[i] = chars[i === 19 ? (random & 0x3) | 0x8 : random]
16
+ }
17
+ }
18
+
19
+ return uuid.join('')
20
+ }
@@ -0,0 +1,5 @@
1
+ import templates from './dist/templates'
2
+
3
+ export default {
4
+ templates
5
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "label.org-box-qty": "box qty",
3
+ "label.org-ea-qty": "item qty",
4
+ "label.button_color": "button color",
5
+ "label.reply_publisher": "reply pub id",
6
+ "label.req_publisher": "req pub id",
7
+ "label.reply_target": "reply target",
8
+ "label.power_flag": "power flag",
9
+ "label.boot_flag": "boot flag",
10
+ "label.pub_topic": "pub topic",
11
+ "label.sub_topic": "sub topic",
12
+ "label.publisher": "publisher",
13
+ "label.switch": "switch",
14
+ "label.interval": "interval",
15
+ "label.segment_role": "segment role",
16
+ "label.digit height": "digit height",
17
+ "label.digit width": "digit width",
18
+ "label.digit distance": "diggit distance",
19
+ "label.display angle": "display angle",
20
+ "label.segment width": "segment width",
21
+ "label.segment distance": "segment distance",
22
+ "label.segment count": "segment count",
23
+ "label.corner type": "corner type",
24
+ "label.color-on": "on color",
25
+ "label.color-off": "off color"
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "label.org-box-qty": "ボックス数量",
3
+ "label.org-ea-qty": "アイテム数量",
4
+ "label.button_color": "ボタンの色",
5
+ "label.reply_publisher": "応答ID",
6
+ "label.req_publisher": "リクエストID",
7
+ "label.reply_target": "応答ターゲット",
8
+ "label.power_flag": "power flag",
9
+ "label.boot_flag": "boot flag",
10
+ "label.pub_topic": "pub topic",
11
+ "label.sub_topic": "sub topic",
12
+ "label.publisher": "パブリッシャー",
13
+ "label.switch": "スイッチ",
14
+ "label.interval": "間隔",
15
+ "label.segment_role": "セグメント ロール",
16
+ "label.digit height": "数字の高さ",
17
+ "label.digit width": "数字の幅",
18
+ "label.digit distance": "数時間距離",
19
+ "label.display angle": "角度",
20
+ "label.segment width": "セグメント幅",
21
+ "label.segment distance": "セグメント距離",
22
+ "label.segment count": "セグメント個数",
23
+ "label.corner type": "コーナー タイプ",
24
+ "label.color-on": "オン 色",
25
+ "label.color-off": "オフ 色"
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "label.org-box-qty": "박스 수량",
3
+ "label.org-ea-qty": "아이템 수량",
4
+ "label.button_color": "버튼 색상",
5
+ "label.reply_publisher": "응답ID",
6
+ "label.req_publisher": "요청ID",
7
+ "label.reply_target": "응답 타겟",
8
+ "label.power_flag": "power flag",
9
+ "label.boot_flag": "boot flag",
10
+ "label.pub_topic": "pub topic",
11
+ "label.sub_topic": "sub topic",
12
+ "label.publisher": "퍼블리셔",
13
+ "label.switch": "스위치",
14
+ "label.interval": "간격",
15
+ "label.segment_role": "세그먼트 역할",
16
+ "label.digit height": "숫자 높이",
17
+ "label.digit width": "숫자 폭",
18
+ "label.digit distance": "숫자간 거리",
19
+ "label.display angle": "각도",
20
+ "label.segment width": "세그먼트 폭",
21
+ "label.segment distance": "세그먼트 거리",
22
+ "label.segment count": "세그먼트 갯수",
23
+ "label.corner type": "코너 타입",
24
+ "label.color-on": "온 색상",
25
+ "label.color-off": "오프 색상"
26
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "label.org-box-qty": "box qty",
3
+ "label.org-ea-qty": "item qty",
4
+ "label.button_color": "button color",
5
+ "label.reply_publisher": "reply pub id",
6
+ "label.req_publisher": "req pub id",
7
+ "label.reply_target": "reply target",
8
+ "label.power_flag": "power flag",
9
+ "label.boot_flag": "boot flag",
10
+ "label.pub_topic": "pub topic",
11
+ "label.sub_topic": "sub topic",
12
+ "label.segment_role": "segment role",
13
+ "label.digit height": "digit height",
14
+ "label.digit width": "digit width",
15
+ "label.digit distance": "diggit distance",
16
+ "label.display angle": "display angle",
17
+ "label.segment width": "segment width",
18
+ "label.segment distance": "segment distance",
19
+ "label.segment count": "segment count",
20
+ "label.corner type": "corner type",
21
+ "label.color-on": "on color",
22
+ "label.color-off": "off color"
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "label.org-box-qty": "box qty",
3
+ "label.org-ea-qty": "item qty",
4
+ "label.button_color": "button color",
5
+ "label.reply_publisher": "reply pub id",
6
+ "label.req_publisher": "req pub id",
7
+ "label.reply_target": "reply target",
8
+ "label.power_flag": "power flag",
9
+ "label.boot_flag": "boot flag",
10
+ "label.pub_topic": "pub topic",
11
+ "label.sub_topic": "sub topic",
12
+ "label.segment_role": "segment role",
13
+ "label.digit height": "digit height",
14
+ "label.digit width": "digit width",
15
+ "label.digit distance": "diggit distance",
16
+ "label.display angle": "display angle",
17
+ "label.segment width": "segment width",
18
+ "label.segment distance": "segment distance",
19
+ "label.segment count": "segment count",
20
+ "label.corner type": "corner type",
21
+ "label.color-on": "on color",
22
+ "label.color-off": "off color"
23
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2018",
4
+ "module": "esnext",
5
+ "moduleResolution": "node",
6
+ "noEmitOnError": true,
7
+ "lib": ["es2019", "dom"],
8
+ "strict": true,
9
+ "esModuleInterop": false,
10
+ "allowSyntheticDefaultImports": true,
11
+ "experimentalDecorators": true,
12
+ "importHelpers": true,
13
+ "outDir": "dist",
14
+ "sourceMap": true,
15
+ "inlineSources": true,
16
+ "rootDir": "src",
17
+ "declaration": true,
18
+ "incremental": true,
19
+ "skipLibCheck": true
20
+ },
21
+ "include": ["**/*.ts", "*.d.ts"]
22
+ }