@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.
Files changed (53) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +13 -0
  3. package/assets/favicon.ico +0 -0
  4. package/assets/images/spinner.png +0 -0
  5. package/db.sqlite +0 -0
  6. package/dist/editors/index.d.ts +0 -0
  7. package/dist/editors/index.js +2 -0
  8. package/dist/editors/index.js.map +1 -0
  9. package/dist/groups/index.d.ts +0 -0
  10. package/dist/groups/index.js +2 -0
  11. package/dist/groups/index.js.map +1 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +2 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/libs/format.d.ts +7 -0
  16. package/dist/libs/format.js +42 -0
  17. package/dist/libs/format.js.map +1 -0
  18. package/dist/tact-timer.d.ts +16 -0
  19. package/dist/tact-timer.js +141 -0
  20. package/dist/tact-timer.js.map +1 -0
  21. package/dist/templates/index.d.ts +17 -0
  22. package/dist/templates/index.js +3 -0
  23. package/dist/templates/index.js.map +1 -0
  24. package/dist/templates/tact-timer.d.ts +17 -0
  25. package/dist/templates/tact-timer.js +18 -0
  26. package/dist/templates/tact-timer.js.map +1 -0
  27. package/helps/scene/component/manufacturing/tact-timer.ja.md +34 -0
  28. package/helps/scene/component/manufacturing/tact-timer.ko.md +34 -0
  29. package/helps/scene/component/manufacturing/tact-timer.md +34 -0
  30. package/helps/scene/component/manufacturing/tact-timer.ms.md +34 -0
  31. package/helps/scene/component/manufacturing/tact-timer.zh.md +34 -0
  32. package/icons/tact-timer.png +0 -0
  33. package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +25 -0
  34. package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +15 -0
  35. package/logs/application-2023-12-01-00.log +9 -0
  36. package/logs/application-2023-12-01-01.log +3 -0
  37. package/logs/application-2023-12-01-02.log +1 -0
  38. package/logs/connections-2023-12-01-00.log +41 -0
  39. package/package.json +61 -0
  40. package/schema.graphql +3963 -0
  41. package/src/index.ts +1 -0
  42. package/src/libs/format.ts +47 -0
  43. package/src/tact-timer.ts +184 -0
  44. package/src/templates/index.ts +3 -0
  45. package/src/templates/tact-timer.ts +18 -0
  46. package/things-scene.config.js +5 -0
  47. package/translations/en.json +10 -0
  48. package/translations/ja.json +10 -0
  49. package/translations/ko.json +9 -0
  50. package/translations/ms.json +10 -0
  51. package/translations/zh.json +10 -0
  52. package/tsconfig.json +21 -0
  53. 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,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/groups/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1 @@
1
+ export { default as TactTimer } from './tact-timer';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { default as TactTimer } from './tact-timer';
2
+ //# sourceMappingURL=index.js.map
@@ -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,7 @@
1
+ /**
2
+ * 시간 표시 포맷을 맞추는 함수
3
+ *
4
+ * @param {Number} seconds seconds
5
+ * @param {string} timeFormat hh:mm:ss
6
+ */
7
+ export default function formatTime(seconds?: number, timeFormat?: string): string;
@@ -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,3 @@
1
+ import tactTimer from './tact-timer';
2
+ export default [tactTimer];
3
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ 2023-12-01T01:39:56+09:00 error: thumbnail not found
2
+ 2023-12-01T01:39:56+09:00 error: thumbnail not found
3
+ 2023-12-01T01:39:56+09:00 error: thumbnail not found
@@ -0,0 +1 @@
1
+ 2023-12-01T02:28:01+09:00 error: Cannot return null for non-nullable field Query.board.