@operato/scene-manufacturing 1.3.0
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.
- package/CHANGELOG.md +11 -0
- package/README.md +13 -0
- package/assets/favicon.ico +0 -0
- package/assets/images/spinner.png +0 -0
- package/db.sqlite +0 -0
- package/dist/editors/index.d.ts +0 -0
- package/dist/editors/index.js +2 -0
- package/dist/editors/index.js.map +1 -0
- package/dist/groups/index.d.ts +0 -0
- package/dist/groups/index.js +2 -0
- package/dist/groups/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/format.d.ts +7 -0
- package/dist/libs/format.js +42 -0
- package/dist/libs/format.js.map +1 -0
- package/dist/tact-timer.d.ts +16 -0
- package/dist/tact-timer.js +141 -0
- package/dist/tact-timer.js.map +1 -0
- package/dist/templates/index.d.ts +17 -0
- package/dist/templates/index.js +3 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/tact-timer.d.ts +17 -0
- package/dist/templates/tact-timer.js +18 -0
- package/dist/templates/tact-timer.js.map +1 -0
- package/helps/scene/component/manufacturing/tact-timer.ja.md +34 -0
- package/helps/scene/component/manufacturing/tact-timer.ko.md +34 -0
- package/helps/scene/component/manufacturing/tact-timer.md +34 -0
- package/helps/scene/component/manufacturing/tact-timer.ms.md +34 -0
- package/helps/scene/component/manufacturing/tact-timer.zh.md +34 -0
- package/icons/tact-timer.png +0 -0
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +25 -0
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +15 -0
- package/logs/application-2023-12-01-00.log +9 -0
- package/logs/application-2023-12-01-01.log +3 -0
- package/logs/application-2023-12-01-02.log +1 -0
- package/logs/connections-2023-12-01-00.log +41 -0
- package/package.json +61 -0
- package/schema.graphql +3963 -0
- package/src/index.ts +1 -0
- package/src/libs/format.ts +47 -0
- package/src/tact-timer.ts +184 -0
- package/src/templates/index.ts +3 -0
- package/src/templates/tact-timer.ts +18 -0
- package/things-scene.config.js +5 -0
- package/translations/en.json +10 -0
- package/translations/ja.json +10 -0
- package/translations/ko.json +9 -0
- package/translations/ms.json +10 -0
- package/translations/zh.json +10 -0
- package/tsconfig.json +21 -0
- package/tsconfig.tsbuildinfo +1 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [1.3.0](https://github.com/things-scene/operato-scene/compare/v1.2.91...v1.3.0) (2023-11-30)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :rocket: New Features
|
|
10
|
+
|
|
11
|
+
* add manufacturing module ([55cdb2d](https://github.com/things-scene/operato-scene/commit/55cdb2d13018c71cdf825efba0647757bd79e3ee))
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## build
|
|
2
|
+
|
|
3
|
+
`$ yarn build`
|
|
4
|
+
|
|
5
|
+
| type | filename | for | tested |
|
|
6
|
+
| ---- | ------------------------------------------ | -------------- | ------ |
|
|
7
|
+
| UMD | things-scene-scene-manufacturing.js | modern browser | O |
|
|
8
|
+
| UMD | things-scene-scene-manufacturing-ie.js | ie 11 | O |
|
|
9
|
+
| ESM | things-scene-scene-manufacturing.mjs | modern browser | O |
|
|
10
|
+
|
|
11
|
+
## publish
|
|
12
|
+
|
|
13
|
+
`$ yarn publish`
|
|
Binary file
|
|
Binary file
|
package/db.sqlite
ADDED
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/groups/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as TactTimer } from './tact-timer';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA","sourcesContent":["export { default as TactTimer } from './tact-timer'\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 문자열 길이를 늘려주는 함수
|
|
3
|
+
*
|
|
4
|
+
* @param {String} i
|
|
5
|
+
* @param {Number} len
|
|
6
|
+
*/
|
|
7
|
+
function ii(i, len) {
|
|
8
|
+
var s = i;
|
|
9
|
+
len = len || 2;
|
|
10
|
+
while (s.length < len)
|
|
11
|
+
s = '0' + s;
|
|
12
|
+
return s;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 시간 표시 포맷을 맞추는 함수
|
|
16
|
+
*
|
|
17
|
+
* @param {Number} seconds seconds
|
|
18
|
+
* @param {string} timeFormat hh:mm:ss
|
|
19
|
+
*/
|
|
20
|
+
export default function formatTime(seconds = 0, timeFormat = '') {
|
|
21
|
+
var h = 0, m = 0, s = 0;
|
|
22
|
+
var formatted = '';
|
|
23
|
+
h = Math.floor(seconds / 3600);
|
|
24
|
+
formatted = timeFormat.replace(/(^|[^\\])hh+/g, '$1' + ii(h.toString()));
|
|
25
|
+
formatted = formatted.replace(/(^|[^\\])h/g, '$1' + h);
|
|
26
|
+
if (timeFormat !== formatted) {
|
|
27
|
+
timeFormat = formatted;
|
|
28
|
+
seconds %= 3600;
|
|
29
|
+
}
|
|
30
|
+
m = Math.floor(seconds / 60);
|
|
31
|
+
formatted = timeFormat.replace(/(^|[^\\])mm+/g, '$1' + ii(m.toString()));
|
|
32
|
+
formatted = formatted.replace(/(^|[^\\])m/g, '$1' + m);
|
|
33
|
+
if (timeFormat !== formatted) {
|
|
34
|
+
timeFormat = formatted;
|
|
35
|
+
seconds %= 60;
|
|
36
|
+
}
|
|
37
|
+
s = seconds;
|
|
38
|
+
formatted = timeFormat.replace(/(^|[^\\])ss+/g, '$1' + ii(s.toString()));
|
|
39
|
+
formatted = formatted.replace(/(^|[^\\])s/g, '$1' + s);
|
|
40
|
+
return formatted;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/libs/format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,SAAS,EAAE,CAAC,CAAS,EAAE,GAAY;IACjC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;IACd,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,GAAG,EAAE;IAC7D,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAA;IACP,IAAI,SAAS,GAAG,EAAE,CAAA;IAElB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC9B,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACxE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;IACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,SAAS,CAAA;QACtB,OAAO,IAAI,IAAI,CAAA;IACjB,CAAC;IAED,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IAC5B,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACxE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;IACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,SAAS,CAAA;QACtB,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;IAED,CAAC,GAAG,OAAO,CAAA;IACX,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACxE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;IAEtD,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["/**\n * 문자열 길이를 늘려주는 함수\n *\n * @param {String} i\n * @param {Number} len\n */\nfunction ii(i: string, len?: number) {\n var s = i\n len = len || 2\n while (s.length < len) s = '0' + s\n return s\n}\n\n/**\n * 시간 표시 포맷을 맞추는 함수\n *\n * @param {Number} seconds seconds\n * @param {string} timeFormat hh:mm:ss\n */\nexport default function formatTime(seconds = 0, timeFormat = '') {\n var h = 0,\n m = 0,\n s = 0\n var formatted = ''\n\n h = Math.floor(seconds / 3600)\n formatted = timeFormat.replace(/(^|[^\\\\])hh+/g, '$1' + ii(h.toString()))\n formatted = formatted.replace(/(^|[^\\\\])h/g, '$1' + h)\n if (timeFormat !== formatted) {\n timeFormat = formatted\n seconds %= 3600\n }\n\n m = Math.floor(seconds / 60)\n formatted = timeFormat.replace(/(^|[^\\\\])mm+/g, '$1' + ii(m.toString()))\n formatted = formatted.replace(/(^|[^\\\\])m/g, '$1' + m)\n if (timeFormat !== formatted) {\n timeFormat = formatted\n seconds %= 60\n }\n\n s = seconds\n formatted = timeFormat.replace(/(^|[^\\\\])ss+/g, '$1' + ii(s.toString()))\n formatted = formatted.replace(/(^|[^\\\\])s/g, '$1' + s)\n\n return formatted\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ComponentNature, Properties, Shape } from '@hatiolab/things-scene';
|
|
2
|
+
declare const TactTimer_base: typeof Shape;
|
|
3
|
+
export default class TactTimer extends TactTimer_base {
|
|
4
|
+
private _due?;
|
|
5
|
+
get nature(): ComponentNature;
|
|
6
|
+
ready(): void;
|
|
7
|
+
start(): void;
|
|
8
|
+
onchange(after: Properties): void;
|
|
9
|
+
counting(): void;
|
|
10
|
+
render(context: CanvasRenderingContext2D): void;
|
|
11
|
+
postrender(context: CanvasRenderingContext2D): void;
|
|
12
|
+
get tactTime(): number;
|
|
13
|
+
set tactTime(tactTime: number);
|
|
14
|
+
get countdown(): number;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Component, RectPath, Shape } from '@hatiolab/things-scene';
|
|
5
|
+
import format from './libs/format';
|
|
6
|
+
const NATURE = {
|
|
7
|
+
mutable: false,
|
|
8
|
+
resizable: true,
|
|
9
|
+
rotatable: true,
|
|
10
|
+
properties: [
|
|
11
|
+
{
|
|
12
|
+
type: 'number',
|
|
13
|
+
label: 'tact-time',
|
|
14
|
+
name: 'tactTime',
|
|
15
|
+
placeholder: 'seconds'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
type: 'string',
|
|
19
|
+
label: 'format',
|
|
20
|
+
name: 'format',
|
|
21
|
+
placeholder: 'hh:mm:ss'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: 'select',
|
|
25
|
+
label: 'progress-direction',
|
|
26
|
+
name: 'progressDirection',
|
|
27
|
+
property: {
|
|
28
|
+
options: ['', 'increase', 'decrease']
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: 'color',
|
|
33
|
+
label: 'increase-progress-color',
|
|
34
|
+
name: 'increaseProgressColor'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'color',
|
|
38
|
+
label: 'decrease-progress-color',
|
|
39
|
+
name: 'decreaseProgressColor'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'color',
|
|
43
|
+
label: 'increase-font-color',
|
|
44
|
+
name: 'increaseFontColor'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'color',
|
|
48
|
+
label: 'decrese-font-color',
|
|
49
|
+
name: 'decreaseFontColor'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'boolean',
|
|
53
|
+
label: 'auto-start',
|
|
54
|
+
name: 'autoStart'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'number',
|
|
58
|
+
label: 'round',
|
|
59
|
+
name: 'round'
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
'value-property': 'tactTime',
|
|
63
|
+
help: 'scene/component/manufacturing/tact-timer'
|
|
64
|
+
};
|
|
65
|
+
export default class TactTimer extends RectPath(Shape) {
|
|
66
|
+
get nature() {
|
|
67
|
+
return NATURE;
|
|
68
|
+
}
|
|
69
|
+
ready() {
|
|
70
|
+
if (!this.app.isViewMode) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const { autoStart } = this.state;
|
|
74
|
+
if (autoStart) {
|
|
75
|
+
this.start();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
start() {
|
|
79
|
+
this._due = Date.now() + this.tactTime * 1000;
|
|
80
|
+
this.counting();
|
|
81
|
+
}
|
|
82
|
+
onchange(after) {
|
|
83
|
+
if ('tactTime' in after) {
|
|
84
|
+
this.start();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
counting() {
|
|
88
|
+
// @ts-ignore
|
|
89
|
+
if (this.disposed || this.countdown < -this.tactTime) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
requestAnimationFrame(() => {
|
|
93
|
+
const countdown = this.countdown;
|
|
94
|
+
const text = format(Math.abs(countdown), this.getState('format'));
|
|
95
|
+
this.text = text;
|
|
96
|
+
this.setState('data', this.countdown);
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
this.counting();
|
|
99
|
+
}, 1000);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
render(context) {
|
|
103
|
+
var { tactTime, top, left, height, width, round = 0, fontColor, increaseFontColor, decreaseFontColor, increaseProgressColor = 'transparent', decreaseProgressColor = 'transparent' } = this.state;
|
|
104
|
+
const increase = this.countdown > 0 && this.countdown / tactTime > 0.2;
|
|
105
|
+
// progress의 색상
|
|
106
|
+
context.beginPath();
|
|
107
|
+
context.roundRect(left, top, width, height, round);
|
|
108
|
+
context.clip();
|
|
109
|
+
this.drawFill(context);
|
|
110
|
+
// value의 색상
|
|
111
|
+
context.beginPath();
|
|
112
|
+
var progress = Math.abs((this.countdown / tactTime) * 100);
|
|
113
|
+
if (!isNaN(progress)) {
|
|
114
|
+
progress = width - (width * progress) / 100;
|
|
115
|
+
progress = Math.max(Math.min(progress, width), 0);
|
|
116
|
+
context.rect(left, top, progress, height);
|
|
117
|
+
context.fillStyle = increase ? increaseProgressColor : decreaseProgressColor;
|
|
118
|
+
context.fill();
|
|
119
|
+
context.beginPath();
|
|
120
|
+
}
|
|
121
|
+
context.roundRect(left, top, width, height);
|
|
122
|
+
this.setState('fontColor', (increase ? increaseFontColor : decreaseFontColor) || fontColor);
|
|
123
|
+
}
|
|
124
|
+
postrender(context) {
|
|
125
|
+
this.drawStroke(context);
|
|
126
|
+
this.drawText(context);
|
|
127
|
+
}
|
|
128
|
+
get tactTime() {
|
|
129
|
+
return Number(this.getState('tactTime') || 0);
|
|
130
|
+
}
|
|
131
|
+
set tactTime(tactTime) {
|
|
132
|
+
this.setState('tactTime', Number(tactTime) || 0);
|
|
133
|
+
}
|
|
134
|
+
get countdown() {
|
|
135
|
+
const due = this._due || 0;
|
|
136
|
+
const now = Date.now();
|
|
137
|
+
return Math.round((due - now) / 1000);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
Component.register('tact-timer', TactTimer);
|
|
141
|
+
//# sourceMappingURL=tact-timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tact-timer.js","sourceRoot":"","sources":["../src/tact-timer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ComponentNature, Properties, RectPath, Shape } from '@hatiolab/things-scene'\n\nimport format from './libs/format'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'tact-time',\n name: 'tactTime',\n placeholder: 'seconds'\n },\n {\n type: 'string',\n label: 'format',\n name: 'format',\n placeholder: 'hh:mm:ss'\n },\n {\n type: 'select',\n label: 'progress-direction',\n name: 'progressDirection',\n property: {\n options: ['', 'increase', 'decrease']\n }\n },\n {\n type: 'color',\n label: 'increase-progress-color',\n name: 'increaseProgressColor'\n },\n {\n type: 'color',\n label: 'decrease-progress-color',\n name: 'decreaseProgressColor'\n },\n {\n type: 'color',\n label: 'increase-font-color',\n name: 'increaseFontColor'\n },\n {\n type: 'color',\n label: 'decrese-font-color',\n name: 'decreaseFontColor'\n },\n {\n type: 'boolean',\n label: 'auto-start',\n name: 'autoStart'\n },\n {\n type: 'number',\n label: 'round',\n name: 'round'\n }\n ],\n 'value-property': 'tactTime',\n help: 'scene/component/manufacturing/tact-timer'\n}\n\nexport default class TactTimer extends RectPath(Shape) {\n private _due?: number\n\n get nature() {\n return NATURE\n }\n\n ready() {\n if (!this.app.isViewMode) {\n return\n }\n\n const { autoStart } = this.state\n\n if (autoStart) {\n this.start()\n }\n }\n\n start() {\n this._due = Date.now() + this.tactTime * 1000\n this.counting()\n }\n\n onchange(after: Properties) {\n if ('tactTime' in after) {\n this.start()\n }\n }\n\n counting() {\n // @ts-ignore\n if (this.disposed || this.countdown < -this.tactTime) {\n return\n }\n\n requestAnimationFrame(() => {\n const countdown = this.countdown\n\n const text = format(Math.abs(countdown), this.getState('format'))\n this.text = text\n\n this.setState('data', this.countdown)\n\n setTimeout(() => {\n this.counting()\n }, 1000)\n })\n }\n\n render(context: CanvasRenderingContext2D) {\n var {\n tactTime,\n top,\n left,\n height,\n width,\n round = 0,\n fontColor,\n increaseFontColor,\n decreaseFontColor,\n increaseProgressColor = 'transparent',\n decreaseProgressColor = 'transparent'\n } = this.state\n\n const increase = this.countdown > 0 && this.countdown / tactTime > 0.2\n\n // progress의 색상\n context.beginPath()\n context.roundRect(left, top, width, height, round)\n context.clip()\n this.drawFill(context)\n\n // value의 색상\n context.beginPath()\n\n var progress = Math.abs((this.countdown / tactTime) * 100)\n\n if (!isNaN(progress)) {\n progress = width - (width * progress) / 100\n progress = Math.max(Math.min(progress, width), 0)\n\n context.rect(left, top, progress, height)\n context.fillStyle = increase ? increaseProgressColor : decreaseProgressColor\n context.fill()\n\n context.beginPath()\n }\n\n context.roundRect(left, top, width, height)\n\n this.setState('fontColor', (increase ? increaseFontColor : decreaseFontColor) || fontColor)\n }\n\n postrender(context: CanvasRenderingContext2D) {\n this.drawStroke(context)\n this.drawText(context)\n }\n\n get tactTime() {\n return Number(this.getState('tactTime') || 0)\n }\n\n set tactTime(tactTime) {\n this.setState('tactTime', Number(tactTime) || 0)\n }\n\n get countdown() {\n const due = this._due || 0\n const now = Date.now()\n\n return Math.round((due - now) / 1000)\n }\n}\n\nComponent.register('tact-timer', TactTimer)\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
type: string;
|
|
3
|
+
description: string;
|
|
4
|
+
group: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
model: {
|
|
7
|
+
type: string;
|
|
8
|
+
left: number;
|
|
9
|
+
top: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
fontSize: number;
|
|
13
|
+
lineWidth: number;
|
|
14
|
+
round: number;
|
|
15
|
+
};
|
|
16
|
+
}[];
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,eAAe,CAAC,SAAS,CAAC,CAAA","sourcesContent":["import tactTimer from './tact-timer'\n\nexport default [tactTimer]\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
type: string;
|
|
3
|
+
description: string;
|
|
4
|
+
group: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
model: {
|
|
7
|
+
type: string;
|
|
8
|
+
left: number;
|
|
9
|
+
top: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
fontSize: number;
|
|
13
|
+
lineWidth: number;
|
|
14
|
+
round: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const icon = new URL('../../icons/tact-timer.png', import.meta.url).href;
|
|
2
|
+
export default {
|
|
3
|
+
type: 'tact timer',
|
|
4
|
+
description: 'tact timer',
|
|
5
|
+
group: 'etc' /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */,
|
|
6
|
+
icon,
|
|
7
|
+
model: {
|
|
8
|
+
type: 'tact-timer',
|
|
9
|
+
left: 100,
|
|
10
|
+
top: 100,
|
|
11
|
+
width: 200,
|
|
12
|
+
height: 40,
|
|
13
|
+
fontSize: 80,
|
|
14
|
+
lineWidth: 1,
|
|
15
|
+
round: 10
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=tact-timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tact-timer.js","sourceRoot":"","sources":["../../src/templates/tact-timer.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAExE,eAAe;IACb,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,KAAK,EAAE,KAAK,CAAC,gGAAgG;IAC7G,IAAI;IACJ,KAAK,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CAAA","sourcesContent":["const icon = new URL('../../icons/tact-timer.png', import.meta.url).href\n\nexport default {\n type: 'tact timer',\n description: 'tact timer',\n group: 'etc' /* line|shape|textAndMedia|chartAndGauge|table|container|dataSource|IoT|3D|warehouse|form|etc */,\n icon,\n model: {\n type: 'tact-timer',\n left: 100,\n top: 100,\n width: 200,\n height: 40,\n fontSize: 80,\n lineWidth: 1,\n round: 10\n }\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# タクトタイマー
|
|
2
|
+
|
|
3
|
+
「タクトタイマー」は、生産ラインやプロセスで使用される時間管理ツールで、特定の作業や活動に割り当てられた時間、すなわちタクトタイムを設定し管理するために使用されます。このツールはリアルタイムでタクトタイムを計算し、実際に経過した時間をモニタリングし、進捗バーとカウントダウンテキストを表示することで、ユーザーに現在の進行状況を視覚的に表現します。これにより、生産プロセスを効率的に管理し、生産量を最適化するのに役立ちます。
|
|
4
|
+
|
|
5
|
+
## properties
|
|
6
|
+
|
|
7
|
+
- tactTime
|
|
8
|
+
- このコンポーネントの value プロパティ。
|
|
9
|
+
- カウントダウンフォーマット(format)
|
|
10
|
+
- フォーマット:hh:mm:ss
|
|
11
|
+
- カウントダウン結果の表示形式
|
|
12
|
+
- progressDirection
|
|
13
|
+
- プログレスバーの進行方向を設定
|
|
14
|
+
- increase の場合、increaseProgressColor から始まり、0 を超えた後は decreaseProgressColor に変更される
|
|
15
|
+
- decrease の場合、decreaseProgressColor から始まり、0 を超えた後は increaseProgressColor に変更される
|
|
16
|
+
- increaseProgressColor
|
|
17
|
+
- 増加時の進行色
|
|
18
|
+
- tactTime 設定から tactTime の 20%カウントダウンまでの進行色
|
|
19
|
+
- decreaseProgressColor
|
|
20
|
+
- 減少時の進行色
|
|
21
|
+
- tactTime の 20%カウントダウンから-tactTime までの進行色
|
|
22
|
+
- increseFontColor
|
|
23
|
+
- 増加時のフォント色
|
|
24
|
+
- decreseFontColor
|
|
25
|
+
- 減少時のフォント色
|
|
26
|
+
- autoStart
|
|
27
|
+
- カウントダウンを自動的に開始する
|
|
28
|
+
- round
|
|
29
|
+
- コンポーネントの矩形エリアの 4 つの角の丸い部分の半径サイズ
|
|
30
|
+
|
|
31
|
+
## data
|
|
32
|
+
|
|
33
|
+
- tackTime の設定時点からカウントダウンされた現在の値が毎秒設定される。(単位:秒)
|
|
34
|
+
- tactTime の設定値から始まり、0 を過ぎて-tactTime までカウントダウンされる。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Tact Timer
|
|
2
|
+
|
|
3
|
+
"Tact Timer"는 생산 라인이나 공정에서 사용되는 시간 관리 도구로, 특정 작업이나 활동에 할당된 시간인 Tact time을 설정하고 관리하는 데 사용됩니다. 이 도구는 실시간으로 Tact time을 계산하고 실제 경과 시간을 모니터링하며, 프로그레스 바와 카운트다운 텍스트를 표시하여 사용자에게 현재 진행 상황을 시각적으로 표현합니다. 이를 통해 생산 과정을 효율적으로 관리하고 생산량을 최적화하는 데 도움을 줍니다.
|
|
4
|
+
|
|
5
|
+
## properties
|
|
6
|
+
|
|
7
|
+
- tactTime
|
|
8
|
+
- 이 컴포넌트의 value property 이다.
|
|
9
|
+
- 카운트다운 포맷(format)
|
|
10
|
+
- format : hh:mm:ss
|
|
11
|
+
- 카운트다운 결과 표현형식
|
|
12
|
+
- progressDirection
|
|
13
|
+
- 프로그레스바의 진행 방향 설정
|
|
14
|
+
- increase인 경우에는 increaseProgressColor로 시작하여, 0를 지난 후부터는 decreaseProgressColor로 변경된다
|
|
15
|
+
- decrease인 경우에는 decreaseProgressColor로 시작하여, 0를 지난 후부터는 increaseProgressColor로 변경된다
|
|
16
|
+
- increaseProgressColor
|
|
17
|
+
- 증가시 진행 색상
|
|
18
|
+
- tackTime 설정시부터 tactTime의 20% 수준 countdown까지의 진행 색상
|
|
19
|
+
- decreaseProgressColor
|
|
20
|
+
- 감소시 진행 색상
|
|
21
|
+
- tackTime 20% 수준의 countdown에서부터 -tactTime 까지의 진행 색상
|
|
22
|
+
- increseFontColor
|
|
23
|
+
- 증가시 폰트 색상
|
|
24
|
+
- decreseFontColor
|
|
25
|
+
- 감소시 폰트 색상
|
|
26
|
+
- autoStart
|
|
27
|
+
- 카운트다운을 자동으로 시작한다
|
|
28
|
+
- round
|
|
29
|
+
- 컴포넌트 사각형영역의 4꼭지점 부분의 둥근 모양의 반지름 크기
|
|
30
|
+
|
|
31
|
+
## data
|
|
32
|
+
|
|
33
|
+
- tackTime 설정값 세팅 시점부터 카운트다운된 현재 값이 매초 설정된다.(단위 seconds)
|
|
34
|
+
- tactTime 설정값에서 시작해서 0를 지나서 -tactTime 까지 카운트다운된다.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Tact Timer
|
|
2
|
+
|
|
3
|
+
"Tact Timer" is a time management tool used in production lines or processes, utilized for setting and managing the time allocated for specific tasks or activities, known as Tact time. This tool calculates Tact time in real-time and monitors the actual elapsed time, visually representing the current progress to the user by displaying a progress bar and countdown text. This helps in efficiently managing the production process and optimizing output.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
- tactTime
|
|
8
|
+
- This component's value property.
|
|
9
|
+
- Countdown Format (format)
|
|
10
|
+
- Format: hh:mm:ss
|
|
11
|
+
- Display format of the countdown result
|
|
12
|
+
- progressDirection
|
|
13
|
+
- Sets the progress direction of the progress bar
|
|
14
|
+
- In case of increase, it starts with increaseProgressColor and changes to decreaseProgressColor after passing 0
|
|
15
|
+
- In case of decrease, it starts with decreaseProgressColor and changes to increaseProgressColor after passing 0
|
|
16
|
+
- increaseProgressColor
|
|
17
|
+
- Progress color when increasing
|
|
18
|
+
- Progress color from setting tactTime to the 20% level countdown of tactTime
|
|
19
|
+
- decreaseProgressColor
|
|
20
|
+
- Progress color when decreasing
|
|
21
|
+
- Progress color from the 20% level countdown of tactTime to -tactTime
|
|
22
|
+
- increseFontColor
|
|
23
|
+
- Font color when increasing
|
|
24
|
+
- decreseFontColor
|
|
25
|
+
- Font color when decreasing
|
|
26
|
+
- autoStart
|
|
27
|
+
- Automatically starts the countdown
|
|
28
|
+
- round
|
|
29
|
+
- Radius size of the rounded corners at the four vertices of the component's rectangular area
|
|
30
|
+
|
|
31
|
+
## Data
|
|
32
|
+
|
|
33
|
+
- The current value counted down from the moment of setting the tackTime is set every second. (Unit: seconds)
|
|
34
|
+
- The countdown starts from the tactTime setting value, passing 0 to -tactTime.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Tact Timer
|
|
2
|
+
|
|
3
|
+
"Tact Timer" ialah alat pengurusan masa yang digunakan dalam barisan pengeluaran atau proses, yang digunakan untuk menetapkan dan mengurus masa yang diperuntukkan untuk tugas atau aktiviti tertentu, iaitu Tact time. Alat ini mengira Tact time secara real-time dan memantau masa yang telah berlalu secara sebenar, dan memaparkan bar kemajuan dan teks kiraan mundur untuk menggambarkan kemajuan semasa kepada pengguna secara visual. Ini membantu dalam mengurus proses pengeluaran dengan cekap dan mengoptimumkan output.
|
|
4
|
+
|
|
5
|
+
## properties
|
|
6
|
+
|
|
7
|
+
- tactTime
|
|
8
|
+
- Harta benda value komponen ini.
|
|
9
|
+
- Format Kiraan Mundur (format)
|
|
10
|
+
- Format: hh:mm:ss
|
|
11
|
+
- Format paparan hasil kiraan mundur
|
|
12
|
+
- progressDirection
|
|
13
|
+
- Menetapkan arah kemajuan bar kemajuan
|
|
14
|
+
- Jika increase, bermula dengan increaseProgressColor dan bertukar kepada decreaseProgressColor selepas melalui 0
|
|
15
|
+
- Jika decrease, bermula dengan decreaseProgressColor dan bertukar kepada increaseProgressColor selepas melalui 0
|
|
16
|
+
- increaseProgressColor
|
|
17
|
+
- Warna kemajuan semasa peningkatan
|
|
18
|
+
- Warna kemajuan dari penentuan tactTime hingga ke tahap kiraan mundur 20% tactTime
|
|
19
|
+
- decreaseProgressColor
|
|
20
|
+
- Warna kemajuan semasa pengurangan
|
|
21
|
+
- Warna kemajuan dari tahap kiraan mundur 20% tactTime hingga ke -tactTime
|
|
22
|
+
- increseFontColor
|
|
23
|
+
- Warna fon semasa peningkatan
|
|
24
|
+
- decreseFontColor
|
|
25
|
+
- Warna fon semasa pengurangan
|
|
26
|
+
- autoStart
|
|
27
|
+
- Memulakan kiraan mundur secara automatik
|
|
28
|
+
- round
|
|
29
|
+
- Saiz jejari bentuk bulat pada empat penjuru kawasan segi empat komponen
|
|
30
|
+
|
|
31
|
+
## Data
|
|
32
|
+
|
|
33
|
+
- Nilai semasa yang dikira mundur dari saat penentuan tackTime ditetapkan setiap saat. (Unit: saat)
|
|
34
|
+
- Kiraan mundur bermula dari nilai penentuan tactTime, melalui 0 ke -tactTime.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Tact Timer
|
|
2
|
+
|
|
3
|
+
“Tact Timer”是一种用于生产线或流程的时间管理工具,用于设置和管理特定任务或活动分配的时间,即 Tact time。该工具实时计算 Tact time 并监控实际过去的时间,通过显示进度条和倒计时文字,以视觉方式向用户表达当前的进展情况。这有助于有效管理生产过程,优化产量。
|
|
4
|
+
|
|
5
|
+
## properties
|
|
6
|
+
|
|
7
|
+
- tactTime
|
|
8
|
+
- 此组件的 value 属性。
|
|
9
|
+
- 倒计时格式(format)
|
|
10
|
+
- 格式:hh:mm:ss
|
|
11
|
+
- 倒计时结果的显示格式
|
|
12
|
+
- progressDirection
|
|
13
|
+
- 设置进度条的进展方向
|
|
14
|
+
- 如果是 increase,则从 increaseProgressColor 开始,过了 0 之后变为 decreaseProgressColor
|
|
15
|
+
- 如果是 decrease,则从 decreaseProgressColor 开始,过了 0 之后变为 increaseProgressColor
|
|
16
|
+
- increaseProgressColor
|
|
17
|
+
- 增加时的进度颜色
|
|
18
|
+
- 从 tackTime 设置开始到 tactTime 的 20%倒计时的进度颜色
|
|
19
|
+
- decreaseProgressColor
|
|
20
|
+
- 减少时的进度颜色
|
|
21
|
+
- 从 tackTime 的 20%倒计时到-tactTime 的进度颜色
|
|
22
|
+
- increseFontColor
|
|
23
|
+
- 增加时的字体颜色
|
|
24
|
+
- decreseFontColor
|
|
25
|
+
- 减少时的字体颜色
|
|
26
|
+
- autoStart
|
|
27
|
+
- 自动开始倒计时
|
|
28
|
+
- round
|
|
29
|
+
- 组件矩形区域四个角的圆角半径大小
|
|
30
|
+
|
|
31
|
+
## data
|
|
32
|
+
|
|
33
|
+
- 从设置 tackTime 开始,每秒设置当前倒计时的值。(单位:秒)
|
|
34
|
+
- 从 tactTime 设置值开始,倒计时经过 0 到-tactTime。
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"keep": {
|
|
3
|
+
"days": true,
|
|
4
|
+
"amount": 2
|
|
5
|
+
},
|
|
6
|
+
"auditLog": "logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"date": 1701358700181,
|
|
10
|
+
"name": "logs/application-2023-12-01-00.log",
|
|
11
|
+
"hash": "2cc1d1a511d7defb74d40dc32f202d1badb9f75657b1f558f5b1c1906ad181a4"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"date": 1701362396909,
|
|
15
|
+
"name": "logs/application-2023-12-01-01.log",
|
|
16
|
+
"hash": "ec9b783e656fd52202ccba7f51ac57776964eeb4913ca99395e0c2994b2bc57f"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"date": 1701365281113,
|
|
20
|
+
"name": "logs/application-2023-12-01-02.log",
|
|
21
|
+
"hash": "84c23313bddd79db6dbcca3408f195a8831ee36675cef5c09af71f83a44d29a5"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"hashType": "sha256"
|
|
25
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"keep": {
|
|
3
|
+
"days": true,
|
|
4
|
+
"amount": 14
|
|
5
|
+
},
|
|
6
|
+
"auditLog": "logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"date": 1701358701612,
|
|
10
|
+
"name": "logs/connections-2023-12-01-00.log",
|
|
11
|
+
"hash": "173883b0db84bd765d6bc0ded70a54e39dd05e58a72447da2d68717058e3f169"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"hashType": "sha256"
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
2023-12-01T00:38:21+09:00 info: File Storage is Ready.
|
|
2
|
+
2023-12-01T00:38:21+09:00 error: oracledb module loading failed
|
|
3
|
+
2023-12-01T00:38:22+09:00 error: oracledb module loading failed
|
|
4
|
+
2023-12-01T00:38:30+09:00 info: File Storage is Ready.
|
|
5
|
+
2023-12-01T00:38:30+09:00 error: oracledb module loading failed
|
|
6
|
+
2023-12-01T00:38:30+09:00 error: oracledb module loading failed
|
|
7
|
+
2023-12-01T00:38:31+09:00 info: Default DataSource established
|
|
8
|
+
2023-12-01T00:38:32+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
|
|
9
|
+
2023-12-01T00:38:32+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2023-12-01T02:28:01+09:00 error: Cannot return null for non-nullable field Query.board.
|