@things-factory/station 10.1.33
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/README.md +124 -0
- package/dist-client/index.d.ts +11 -0
- package/dist-client/index.js +13 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/station/scene/index.d.ts +11 -0
- package/dist-client/station/scene/index.js +12 -0
- package/dist-client/station/scene/index.js.map +1 -0
- package/dist-client/station/scene/station-context-binding.d.ts +25 -0
- package/dist-client/station/scene/station-context-binding.js +39 -0
- package/dist-client/station/scene/station-context-binding.js.map +1 -0
- package/dist-client/station/scene/station-context-scene.d.ts +28 -0
- package/dist-client/station/scene/station-context-scene.js +138 -0
- package/dist-client/station/scene/station-context-scene.js.map +1 -0
- package/dist-client/station/scene/station-counts-scene.d.ts +6 -0
- package/dist-client/station/scene/station-counts-scene.js +51 -0
- package/dist-client/station/scene/station-counts-scene.js.map +1 -0
- package/dist-client/station/scene/station-field-scene.d.ts +6 -0
- package/dist-client/station/scene/station-field-scene.js +89 -0
- package/dist-client/station/scene/station-field-scene.js.map +1 -0
- package/dist-client/station/scene/station-icons.d.ts +82 -0
- package/dist-client/station/scene/station-icons.js +131 -0
- package/dist-client/station/scene/station-icons.js.map +1 -0
- package/dist-client/station/scene/station-numpad-scene.d.ts +9 -0
- package/dist-client/station/scene/station-numpad-scene.js +144 -0
- package/dist-client/station/scene/station-numpad-scene.js.map +1 -0
- package/dist-client/station/scene/station-scene-style.d.ts +51 -0
- package/dist-client/station/scene/station-scene-style.js +108 -0
- package/dist-client/station/scene/station-scene-style.js.map +1 -0
- package/dist-client/station/scene/station-scene.d.ts +295 -0
- package/dist-client/station/scene/station-scene.js +68 -0
- package/dist-client/station/scene/station-scene.js.map +1 -0
- package/dist-client/station/scene/station-who-scene.d.ts +6 -0
- package/dist-client/station/scene/station-who-scene.js +48 -0
- package/dist-client/station/scene/station-who-scene.js.map +1 -0
- package/dist-client/station/scene/station-work-panel-scene.d.ts +28 -0
- package/dist-client/station/scene/station-work-panel-scene.js +37 -0
- package/dist-client/station/scene/station-work-panel-scene.js.map +1 -0
- package/dist-client/station/station-board-binding.d.ts +16 -0
- package/dist-client/station/station-board-binding.js +20 -0
- package/dist-client/station/station-board-binding.js.map +1 -0
- package/dist-client/station/station-context.d.ts +178 -0
- package/dist-client/station/station-context.js +30 -0
- package/dist-client/station/station-context.js.map +1 -0
- package/dist-client/station/station-palette.d.ts +34 -0
- package/dist-client/station/station-palette.js +119 -0
- package/dist-client/station/station-palette.js.map +1 -0
- package/dist-client/station/station-runtime.d.ts +47 -0
- package/dist-client/station/station-runtime.js +47 -0
- package/dist-client/station/station-runtime.js.map +1 -0
- package/dist-client/station/station-scene-context.d.ts +68 -0
- package/dist-client/station/station-scene-context.js +62 -0
- package/dist-client/station/station-scene-context.js.map +1 -0
- package/dist-client/station/station-screen-flow.d.ts +16 -0
- package/dist-client/station/station-screen-flow.js +58 -0
- package/dist-client/station/station-screen-flow.js.map +1 -0
- package/dist-client/station/station-tile-registry.d.ts +89 -0
- package/dist-client/station/station-tile-registry.js +86 -0
- package/dist-client/station/station-tile-registry.js.map +1 -0
- package/dist-client/station/station-work-panel-view.d.ts +23 -0
- package/dist-client/station/station-work-panel-view.js +125 -0
- package/dist-client/station/station-work-panel-view.js.map +1 -0
- package/dist-client/station/station-work-runtime.d.ts +47 -0
- package/dist-client/station/station-work-runtime.js +161 -0
- package/dist-client/station/station-work-runtime.js.map +1 -0
- package/dist-client/station/station-work-scenarios.d.ts +41 -0
- package/dist-client/station/station-work-scenarios.js +59 -0
- package/dist-client/station/station-work-scenarios.js.map +1 -0
- package/dist-client/station/task-counts.d.ts +32 -0
- package/dist-client/station/task-counts.js +26 -0
- package/dist-client/station/task-counts.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/activities/activity-station-screen-control-withdrawal.d.ts +62 -0
- package/dist-server/activities/activity-station-screen-control-withdrawal.js +147 -0
- package/dist-server/activities/activity-station-screen-control-withdrawal.js.map +1 -0
- package/dist-server/activities/activity-station-screen-release.d.ts +81 -0
- package/dist-server/activities/activity-station-screen-release.js +147 -0
- package/dist-server/activities/activity-station-screen-release.js.map +1 -0
- package/dist-server/activities/index.d.ts +49 -0
- package/dist-server/activities/index.js +21 -0
- package/dist-server/activities/index.js.map +1 -0
- package/dist-server/index.d.ts +3 -0
- package/dist-server/index.js +8 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/service/index.d.ts +23 -0
- package/dist-server/service/index.js +41 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/station/deletion-changes.d.ts +14 -0
- package/dist-server/service/station/deletion-changes.js +25 -0
- package/dist-server/service/station/deletion-changes.js.map +1 -0
- package/dist-server/service/station/index.d.ts +13 -0
- package/dist-server/service/station/index.js +25 -0
- package/dist-server/service/station/index.js.map +1 -0
- package/dist-server/service/station/reversibility.d.ts +21 -0
- package/dist-server/service/station/reversibility.js +24 -0
- package/dist-server/service/station/reversibility.js.map +1 -0
- package/dist-server/service/station/screen-model-digest.d.ts +60 -0
- package/dist-server/service/station/screen-model-digest.js +97 -0
- package/dist-server/service/station/screen-model-digest.js.map +1 -0
- package/dist-server/service/station/staged-material.d.ts +62 -0
- package/dist-server/service/station/staged-material.js +44 -0
- package/dist-server/service/station/staged-material.js.map +1 -0
- package/dist-server/service/station/station-argument-sources.d.ts +31 -0
- package/dist-server/service/station/station-argument-sources.js +66 -0
- package/dist-server/service/station/station-argument-sources.js.map +1 -0
- package/dist-server/service/station/station-assignment-choice.d.ts +81 -0
- package/dist-server/service/station/station-assignment-choice.js +105 -0
- package/dist-server/service/station/station-assignment-choice.js.map +1 -0
- package/dist-server/service/station/station-assignment-resolver.d.ts +104 -0
- package/dist-server/service/station/station-assignment-resolver.js +426 -0
- package/dist-server/service/station/station-assignment-resolver.js.map +1 -0
- package/dist-server/service/station/station-assignment-service.d.ts +33 -0
- package/dist-server/service/station/station-assignment-service.js +64 -0
- package/dist-server/service/station/station-assignment-service.js.map +1 -0
- package/dist-server/service/station/station-axes.d.ts +9 -0
- package/dist-server/service/station/station-axes.js +16 -0
- package/dist-server/service/station/station-axes.js.map +1 -0
- package/dist-server/service/station/station-flow.d.ts +156 -0
- package/dist-server/service/station/station-flow.js +255 -0
- package/dist-server/service/station/station-flow.js.map +1 -0
- package/dist-server/service/station/station-generate.d.ts +76 -0
- package/dist-server/service/station/station-generate.js +178 -0
- package/dist-server/service/station/station-generate.js.map +1 -0
- package/dist-server/service/station/station-product.d.ts +123 -0
- package/dist-server/service/station/station-product.js +77 -0
- package/dist-server/service/station/station-product.js.map +1 -0
- package/dist-server/service/station/station-runtime-binding.d.ts +6 -0
- package/dist-server/service/station/station-runtime-binding.js +46 -0
- package/dist-server/service/station/station-runtime-binding.js.map +1 -0
- package/dist-server/service/station/station-screen-assignment.d.ts +94 -0
- package/dist-server/service/station/station-screen-assignment.js +154 -0
- package/dist-server/service/station/station-screen-assignment.js.map +1 -0
- package/dist-server/service/station/station-screen-control-withdrawal-resolver.d.ts +37 -0
- package/dist-server/service/station/station-screen-control-withdrawal-resolver.js +130 -0
- package/dist-server/service/station/station-screen-control-withdrawal-resolver.js.map +1 -0
- package/dist-server/service/station/station-screen-control-withdrawal.d.ts +104 -0
- package/dist-server/service/station/station-screen-control-withdrawal.js +128 -0
- package/dist-server/service/station/station-screen-control-withdrawal.js.map +1 -0
- package/dist-server/service/station/station-screen-draft-resolver.d.ts +47 -0
- package/dist-server/service/station/station-screen-draft-resolver.js +153 -0
- package/dist-server/service/station/station-screen-draft-resolver.js.map +1 -0
- package/dist-server/service/station/station-screen-layout.d.ts +119 -0
- package/dist-server/service/station/station-screen-layout.js +202 -0
- package/dist-server/service/station/station-screen-layout.js.map +1 -0
- package/dist-server/service/station/station-screen-list-resolver.d.ts +69 -0
- package/dist-server/service/station/station-screen-list-resolver.js +215 -0
- package/dist-server/service/station/station-screen-list-resolver.js.map +1 -0
- package/dist-server/service/station/station-screen-publish-subscriber.d.ts +22 -0
- package/dist-server/service/station/station-screen-publish-subscriber.js +90 -0
- package/dist-server/service/station/station-screen-publish-subscriber.js.map +1 -0
- package/dist-server/service/station/station-screen-release-gate.d.ts +66 -0
- package/dist-server/service/station/station-screen-release-gate.js +67 -0
- package/dist-server/service/station/station-screen-release-gate.js.map +1 -0
- package/dist-server/service/station/station-screen-release-record.d.ts +62 -0
- package/dist-server/service/station/station-screen-release-record.js +139 -0
- package/dist-server/service/station/station-screen-release-record.js.map +1 -0
- package/dist-server/service/station/station-screen-release-signature.d.ts +23 -0
- package/dist-server/service/station/station-screen-release-signature.js +32 -0
- package/dist-server/service/station/station-screen-release-signature.js.map +1 -0
- package/dist-server/service/station/station-screen-scorecard.d.ts +15 -0
- package/dist-server/service/station/station-screen-scorecard.js +35 -0
- package/dist-server/service/station/station-screen-scorecard.js.map +1 -0
- package/dist-server/service/station/station-screen-spec-resolver.d.ts +36 -0
- package/dist-server/service/station/station-screen-spec-resolver.js +202 -0
- package/dist-server/service/station/station-screen-spec-resolver.js.map +1 -0
- package/dist-server/service/station/station-screen-spec.d.ts +104 -0
- package/dist-server/service/station/station-screen-spec.js +114 -0
- package/dist-server/service/station/station-screen-spec.js.map +1 -0
- package/dist-server/service/station/station-screen-thumbnail.d.ts +11 -0
- package/dist-server/service/station/station-screen-thumbnail.js +36 -0
- package/dist-server/service/station/station-screen-thumbnail.js.map +1 -0
- package/dist-server/service/station/station-service-resolver.d.ts +27 -0
- package/dist-server/service/station/station-service-resolver.js +95 -0
- package/dist-server/service/station/station-service-resolver.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +44 -0
- package/shared/station-axes.d.ts +4 -0
- package/shared/station-axes.js +155 -0
- package/shared/station-screen-flow-check.d.ts +12 -0
- package/shared/station-screen-flow-check.js +74 -0
- package/things-scene.config.js +15 -0
- package/translations/en.json +42 -0
- package/translations/ja.json +42 -0
- package/translations/ko.json +42 -0
- package/translations/ms.json +42 -0
- package/translations/zh.json +42 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { Shape } from '@hatiolab/things-scene';
|
|
2
|
+
import type { StationAction, StationSnapshot } from '../station-context';
|
|
3
|
+
import type { StationSceneContext } from '../station-scene-context';
|
|
4
|
+
declare const StationScene_base: (new (...args: any[]) => {
|
|
5
|
+
contains(x: number, y: number): boolean;
|
|
6
|
+
get path(): {
|
|
7
|
+
x: any;
|
|
8
|
+
y: any;
|
|
9
|
+
}[];
|
|
10
|
+
set path(path: {
|
|
11
|
+
x: any;
|
|
12
|
+
y: any;
|
|
13
|
+
}[]): any;
|
|
14
|
+
get anchors(): {
|
|
15
|
+
name: string;
|
|
16
|
+
position: {
|
|
17
|
+
x: any;
|
|
18
|
+
y: any;
|
|
19
|
+
};
|
|
20
|
+
}[];
|
|
21
|
+
get bounds(): any;
|
|
22
|
+
set bounds(bounds: any): any;
|
|
23
|
+
render(ctx: CanvasRenderingContext2D): void;
|
|
24
|
+
_app: any;
|
|
25
|
+
_model: any;
|
|
26
|
+
_state: any;
|
|
27
|
+
_delta: any;
|
|
28
|
+
_animation: any;
|
|
29
|
+
_animate: any;
|
|
30
|
+
_parent: any;
|
|
31
|
+
_disposed: any;
|
|
32
|
+
_textHidden: any;
|
|
33
|
+
_text_substitutor: any;
|
|
34
|
+
_value_substitutor: any;
|
|
35
|
+
_mappings: any;
|
|
36
|
+
_realObject: import("@hatiolab/things-scene").IRealObject | undefined;
|
|
37
|
+
_cachedState: any;
|
|
38
|
+
updatedAt: any;
|
|
39
|
+
fontSize: any;
|
|
40
|
+
__cache__: any;
|
|
41
|
+
created(): void;
|
|
42
|
+
added(parent: import("@hatiolab/things-scene/dist-types/types/component").Container): void;
|
|
43
|
+
removed(parent: import("@hatiolab/things-scene/dist-types/types/component").Container): void;
|
|
44
|
+
ready(): Promise<void>;
|
|
45
|
+
_readyInvoked: boolean;
|
|
46
|
+
invokeReady(): void | Promise<void>;
|
|
47
|
+
touch(): void;
|
|
48
|
+
clearCache(...attrs: string[]): void;
|
|
49
|
+
removeSelf(completely?: boolean): void;
|
|
50
|
+
resetAnimation(): void;
|
|
51
|
+
dispose(): void;
|
|
52
|
+
get nature(): import("@hatiolab/things-scene").ComponentNature;
|
|
53
|
+
get disposed(): boolean;
|
|
54
|
+
isLayer(): boolean;
|
|
55
|
+
isGroup(): boolean;
|
|
56
|
+
isContainer(): this is import("@hatiolab/things-scene/dist-types/types/component").Container;
|
|
57
|
+
isLine(): boolean;
|
|
58
|
+
isRoot(): boolean;
|
|
59
|
+
isRootModel(): boolean;
|
|
60
|
+
is3dish(): boolean;
|
|
61
|
+
get is3dMode(): boolean;
|
|
62
|
+
isIn3DSpace(): boolean;
|
|
63
|
+
isTemplate(): boolean;
|
|
64
|
+
isHTMLElement(): boolean;
|
|
65
|
+
isConnectable(): boolean;
|
|
66
|
+
isIdentifiable(): boolean;
|
|
67
|
+
isPositionable(): boolean;
|
|
68
|
+
replaceRefids(replaceMap: Record<string, string>): void;
|
|
69
|
+
get(property: string): any;
|
|
70
|
+
set(props: any, propval?: any): any;
|
|
71
|
+
getState(property: string): any;
|
|
72
|
+
setState(props: Partial<import("@hatiolab/things-scene").State> | string, propval?: any): any;
|
|
73
|
+
get model(): any;
|
|
74
|
+
get state(): import("@hatiolab/things-scene").State;
|
|
75
|
+
get refid(): any;
|
|
76
|
+
get hierarchy(): any;
|
|
77
|
+
get volatile(): string[];
|
|
78
|
+
_applyProps(target: Record<string, any>, props: Record<string, any>, options: import("@hatiolab/things-scene/dist-types/components/component").ApplyPropsOptions): any;
|
|
79
|
+
move(offset: {
|
|
80
|
+
x: number;
|
|
81
|
+
y: number;
|
|
82
|
+
}, ...args: boolean[]): void;
|
|
83
|
+
symmetryX(x?: number): void;
|
|
84
|
+
symmetryY(y: number): void;
|
|
85
|
+
adjustResize(bounds: import("@hatiolab/things-scene").BOUNDS, origin_bounds: import("@hatiolab/things-scene").BOUNDS, diagonal: boolean): {
|
|
86
|
+
left: any;
|
|
87
|
+
top: any;
|
|
88
|
+
width: any;
|
|
89
|
+
height: any;
|
|
90
|
+
};
|
|
91
|
+
adjustRotation(rotation: number, step: boolean): number;
|
|
92
|
+
outline(progress: number): any;
|
|
93
|
+
get center(): import("@hatiolab/things-scene").POINT;
|
|
94
|
+
set center(p: import("@hatiolab/things-scene").POINT): any;
|
|
95
|
+
get location(): import("@hatiolab/things-scene").POINT;
|
|
96
|
+
set location(l: import("@hatiolab/things-scene").POINT): any;
|
|
97
|
+
get rotate(): import("@hatiolab/things-scene").POINT;
|
|
98
|
+
set rotate(r: import("@hatiolab/things-scene").POINT): any;
|
|
99
|
+
get dimension(): import("@hatiolab/things-scene").DIMENSION;
|
|
100
|
+
set dimension(d: import("@hatiolab/things-scene").DIMENSION): any;
|
|
101
|
+
get drawPath(): import("@hatiolab/things-scene").POINT[];
|
|
102
|
+
get rotatePoint(): import("@hatiolab/things-scene").POINT;
|
|
103
|
+
get mutable(): boolean;
|
|
104
|
+
get resizable(): boolean;
|
|
105
|
+
get rotatable(): boolean;
|
|
106
|
+
buildRealObject(): import("@hatiolab/things-scene").IRealObject | undefined;
|
|
107
|
+
get realObject(): import("@hatiolab/things-scene").IRealObject | undefined;
|
|
108
|
+
draw(context?: import("@hatiolab/things-scene").SceneRenderContext): void;
|
|
109
|
+
prerender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
|
|
110
|
+
postrender(context: import("@hatiolab/things-scene").SceneRenderContext): void;
|
|
111
|
+
prepare(resolve: (component: import("@hatiolab/things-scene").Component) => void, reject: (reason: any) => void): void;
|
|
112
|
+
prepareIf(condition: boolean): void;
|
|
113
|
+
drawText(context: import("@hatiolab/things-scene").SceneRenderContext): void;
|
|
114
|
+
drawStroke(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
115
|
+
drawFill(context: import("@hatiolab/things-scene").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
116
|
+
get strokeStyle(): any;
|
|
117
|
+
set strokeStyle(v: any): any;
|
|
118
|
+
get fillStyle(): any;
|
|
119
|
+
set fillStyle(v: any): any;
|
|
120
|
+
get fontColor(): string;
|
|
121
|
+
set fontColor(v: string): any;
|
|
122
|
+
get rotation(): number;
|
|
123
|
+
set rotation(v: number): any;
|
|
124
|
+
get decorators(): string[];
|
|
125
|
+
get decotag(): string;
|
|
126
|
+
get hidden(): boolean;
|
|
127
|
+
set hidden(v: boolean): any;
|
|
128
|
+
get tag(): string;
|
|
129
|
+
set tag(v: string): any;
|
|
130
|
+
get appendum(): any;
|
|
131
|
+
set appendum(v: any): any;
|
|
132
|
+
defaultTextSubstitutor(): string;
|
|
133
|
+
textLines(context?: import("@hatiolab/things-scene").SceneRenderContext): any[][];
|
|
134
|
+
get font(): string;
|
|
135
|
+
get lineHeight(): number;
|
|
136
|
+
get textSubstitutor(): () => string;
|
|
137
|
+
get text(): string;
|
|
138
|
+
set text(v: string): any;
|
|
139
|
+
get textBounds(): import("@hatiolab/things-scene").BOUNDS;
|
|
140
|
+
get textRotation(): number;
|
|
141
|
+
get textHidden(): boolean;
|
|
142
|
+
set textHidden(v: boolean): any;
|
|
143
|
+
get hasTextProperty(): boolean;
|
|
144
|
+
animate(opts: import("@hatiolab/things-scene").AnimationConfig): any;
|
|
145
|
+
effect(context: import("@hatiolab/things-scene").SceneRenderContext, model: any): void;
|
|
146
|
+
serialize(...others: any[]): string;
|
|
147
|
+
trim(): void;
|
|
148
|
+
closeScene(data: any): void;
|
|
149
|
+
delta(attr?: string | object, value?: any): any;
|
|
150
|
+
invalidate(): void;
|
|
151
|
+
get value(): any;
|
|
152
|
+
set value(v: any): any;
|
|
153
|
+
get data(): any;
|
|
154
|
+
set data(v: any): any;
|
|
155
|
+
set tap(v: any): any;
|
|
156
|
+
get mappings(): any[];
|
|
157
|
+
get retention(): number;
|
|
158
|
+
get animation(): import("@hatiolab/things-scene").AnimationController | undefined;
|
|
159
|
+
get started(): boolean;
|
|
160
|
+
set started(v: boolean): any;
|
|
161
|
+
get controls(): import("@hatiolab/things-scene").Control[] | undefined;
|
|
162
|
+
findFirst(finder: string | ((c: import("@hatiolab/things-scene").Component) => boolean), ...others: any[]): import("@hatiolab/things-scene").Component | undefined;
|
|
163
|
+
findAll(s: string | ((c: import("@hatiolab/things-scene").Component) => boolean), ...others: any[]): any[] | undefined;
|
|
164
|
+
capture(x: number, y: number, except?: (c: import("@hatiolab/things-scene").Component) => boolean): any;
|
|
165
|
+
findAnchor(name: string): any;
|
|
166
|
+
isDescendible(container: import("@hatiolab/things-scene").Component | any): boolean;
|
|
167
|
+
getContext(component?: unknown): any;
|
|
168
|
+
get root(): import("@hatiolab/things-scene").Component;
|
|
169
|
+
get rootModel(): import("@hatiolab/things-scene").Component;
|
|
170
|
+
get parent(): import("@hatiolab/things-scene").Component;
|
|
171
|
+
set parent(v: import("@hatiolab/things-scene").Component): any;
|
|
172
|
+
get scalable(): boolean;
|
|
173
|
+
get stuck(): boolean;
|
|
174
|
+
get capturable(): boolean;
|
|
175
|
+
get position(): string;
|
|
176
|
+
get origin(): string;
|
|
177
|
+
get offset(): import("@hatiolab/things-scene").POINT;
|
|
178
|
+
get app(): import("@hatiolab/things-scene").ApplicationContext;
|
|
179
|
+
drawEffect(context: import("@hatiolab/things-scene").SceneRenderContext): void;
|
|
180
|
+
prepareFill(resolve: Function, reject: Function): void;
|
|
181
|
+
prepareFillIf(condition: boolean): void;
|
|
182
|
+
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
183
|
+
drawImage(context: import("@hatiolab/things-scene").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
184
|
+
mutateBounds(logic: ((bounds: import("@hatiolab/things-scene").BOUNDS) => import("@hatiolab/things-scene").BOUNDS | void) | null, context?: any): void;
|
|
185
|
+
mutatePath(beforeLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, afterLogic: ((path: import("@hatiolab/things-scene").POINT[]) => import("@hatiolab/things-scene").POINT[] | void) | null, context?: any): void;
|
|
186
|
+
access(accessor: string): any;
|
|
187
|
+
substitute(template: string, data: any): string | undefined;
|
|
188
|
+
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
189
|
+
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
190
|
+
buildMappings(): void;
|
|
191
|
+
executeMappings(force?: boolean): void;
|
|
192
|
+
disposeMappings(): void;
|
|
193
|
+
ondropfile(transfered: FileList, files: string[]): void;
|
|
194
|
+
transcoordS2P(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
|
|
195
|
+
transcoordP2S(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
|
|
196
|
+
transcoordS2T(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
197
|
+
transcoordT2P(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
198
|
+
transcoordT2S(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
199
|
+
transcoordS2TR(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
200
|
+
transcoordS2O(x: number, y: number, target: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
201
|
+
transcoordC2S(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
202
|
+
transcoordS2C(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
203
|
+
toParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
|
|
204
|
+
fromParent(x: number, y: number, rp?: import("@hatiolab/things-scene").POINT): import("@hatiolab/things-scene").POINT;
|
|
205
|
+
toScene(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
206
|
+
fromScene(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
207
|
+
toLocal(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
208
|
+
toGlobal(x: number, y: number, top?: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
209
|
+
toOther(x: number, y: number, target: import("@hatiolab/things-scene").Component): import("@hatiolab/things-scene").POINT;
|
|
210
|
+
on<K extends keyof import("@hatiolab/things-scene").ComponentEventMap>(name: K, callback: (...args: import("@hatiolab/things-scene").ComponentEventMap[K]) => void, context?: any): any;
|
|
211
|
+
on(name: string | object, callback: Function, context?: any): any;
|
|
212
|
+
off<K extends keyof import("@hatiolab/things-scene").ComponentEventMap>(name: K, callback?: ((...args: import("@hatiolab/things-scene").ComponentEventMap[K]) => void) | undefined, context?: any): any;
|
|
213
|
+
off(name?: string | object, callback?: Function, context?: any): any;
|
|
214
|
+
once<K extends keyof import("@hatiolab/things-scene").ComponentEventMap>(name: K, callback: (...args: import("@hatiolab/things-scene").ComponentEventMap[K]) => void, context?: any): any;
|
|
215
|
+
once(name: string | object, callback: Function, context?: any): any;
|
|
216
|
+
trigger<K extends keyof import("@hatiolab/things-scene").ComponentEventMap>(name: K, ...args: import("@hatiolab/things-scene").ComponentEventMap[K]): any;
|
|
217
|
+
trigger(name: string, ...args: any[]): any;
|
|
218
|
+
delegate_on(delegator: any): any;
|
|
219
|
+
delegate_off(delegator: any): any;
|
|
220
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
221
|
+
calculateBounds?(): void;
|
|
222
|
+
oncreate_element?(element: HTMLElement): void;
|
|
223
|
+
removeComponent(component: import("@hatiolab/things-scene").Component, ghost?: boolean): void;
|
|
224
|
+
addComponent(component: import("@hatiolab/things-scene").Component, ghost?: boolean): void;
|
|
225
|
+
insertComponentAt(component: import("@hatiolab/things-scene").Component, index: number, ghost?: boolean): void;
|
|
226
|
+
getOverlay(component: import("@hatiolab/things-scene").Component): HTMLElement | undefined;
|
|
227
|
+
findById(id: string): import("@hatiolab/things-scene").Component | undefined;
|
|
228
|
+
findByRefid(ref: string | number): import("@hatiolab/things-scene").Component | undefined;
|
|
229
|
+
findAllById(id: string): import("@hatiolab/things-scene").Component[];
|
|
230
|
+
resize(): void;
|
|
231
|
+
fit(type?: string): void;
|
|
232
|
+
get components(): import("@hatiolab/things-scene").Component[] | undefined;
|
|
233
|
+
get layout(): any;
|
|
234
|
+
get auxOverlay(): HTMLElement | undefined;
|
|
235
|
+
get isReady(): boolean;
|
|
236
|
+
get unitScale(): number;
|
|
237
|
+
get selected(): import("@hatiolab/things-scene").Component[];
|
|
238
|
+
set selected(_v: import("@hatiolab/things-scene").Component[]): any;
|
|
239
|
+
get focused(): import("@hatiolab/things-scene").Component | null;
|
|
240
|
+
set focused(_v: import("@hatiolab/things-scene").Component | null): any;
|
|
241
|
+
get hasSameParentForAllSelected(): boolean;
|
|
242
|
+
set hasSameParentForAllSelected(_v: boolean): any;
|
|
243
|
+
get fitMode(): string | undefined;
|
|
244
|
+
set fitMode(_v: string | undefined): any;
|
|
245
|
+
get element(): HTMLElement | null;
|
|
246
|
+
set element(_v: HTMLElement | null): any;
|
|
247
|
+
}) & typeof Shape;
|
|
248
|
+
/**
|
|
249
|
+
* What every board-side station component inherits — **the part that makes the numbers move.**
|
|
250
|
+
*
|
|
251
|
+
* ── What was wrong ─────────────────────────────────────────────────────────
|
|
252
|
+
* The first board components read the context inside `render()` and nothing else. Canvas components
|
|
253
|
+
* are only asked to render when something invalidates them, and a snapshot arriving from the server
|
|
254
|
+
* invalidates nothing. So a board drew the counts once — usually while they were still empty — and
|
|
255
|
+
* then sat there showing them for the rest of the shift. No error, no blank: a wrong number,
|
|
256
|
+
* confidently.
|
|
257
|
+
*
|
|
258
|
+
* ── Bound late, on purpose ─────────────────────────────────────────────────
|
|
259
|
+
* The context is looked up on every read rather than once when the component is added, because the
|
|
260
|
+
* order is fixed and unhelpful: the viewer builds the scene (adding every component) and only then
|
|
261
|
+
* does the page have a scene to register the context on. Bind once in `added()` and every component
|
|
262
|
+
* would have looked a moment too early and said "not connected" for good.
|
|
263
|
+
*
|
|
264
|
+
* A `Map.get` per read is nothing, and the moment the context does appear the first invalidate picks
|
|
265
|
+
* it up and the subscription starts.
|
|
266
|
+
*
|
|
267
|
+
* ── Nothing is invented when there is no context ───────────────────────────
|
|
268
|
+
* `snapshot` is undefined then, and the component draws that it is not connected. Drawing a zero
|
|
269
|
+
* would read as "nothing came off this machine today", a different and much worse claim.
|
|
270
|
+
*/
|
|
271
|
+
export declare class StationScene<Ground = unknown> extends StationScene_base {
|
|
272
|
+
private binding;
|
|
273
|
+
removed(parent: any): void;
|
|
274
|
+
dispose(): void;
|
|
275
|
+
/**
|
|
276
|
+
* The context this board was opened with, or nothing when the page has not attached one.
|
|
277
|
+
*
|
|
278
|
+
* Subscribes the first time it finds one, so a component that starts life before the page is ready
|
|
279
|
+
* still ends up redrawing when the numbers move.
|
|
280
|
+
*/
|
|
281
|
+
protected get context(): StationSceneContext | undefined;
|
|
282
|
+
/**
|
|
283
|
+
* What to draw. Undefined means not connected — say so, do not draw a zero.
|
|
284
|
+
*
|
|
285
|
+
* `Ground` 는 이 제품의 바탕이다. 기계의 씬은 인자를 안 주고(= `unknown`) 축만 읽는다. 바탕을 읽는
|
|
286
|
+
* 씬은 `StationScene<PlantGround>` 로 서고, 그렇게 **무엇을 읽는지가 클래스 줄에 적힌다**
|
|
287
|
+
* (ADR-0083 결정 6).
|
|
288
|
+
*/
|
|
289
|
+
protected get snapshot(): StationSnapshot<Ground> | undefined;
|
|
290
|
+
/** One finished label, by the name an author picks — `order.name`, `window.good`. */
|
|
291
|
+
protected label(name: string): string | number | undefined;
|
|
292
|
+
/** Leaving a fact. What actually gets recorded is none of this component's business. */
|
|
293
|
+
protected act(action: StationAction): void;
|
|
294
|
+
}
|
|
295
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { RectPath, Shape } from '@hatiolab/things-scene';
|
|
2
|
+
import { StationContextBinding } from './station-context-binding';
|
|
3
|
+
/**
|
|
4
|
+
* What every board-side station component inherits — **the part that makes the numbers move.**
|
|
5
|
+
*
|
|
6
|
+
* ── What was wrong ─────────────────────────────────────────────────────────
|
|
7
|
+
* The first board components read the context inside `render()` and nothing else. Canvas components
|
|
8
|
+
* are only asked to render when something invalidates them, and a snapshot arriving from the server
|
|
9
|
+
* invalidates nothing. So a board drew the counts once — usually while they were still empty — and
|
|
10
|
+
* then sat there showing them for the rest of the shift. No error, no blank: a wrong number,
|
|
11
|
+
* confidently.
|
|
12
|
+
*
|
|
13
|
+
* ── Bound late, on purpose ─────────────────────────────────────────────────
|
|
14
|
+
* The context is looked up on every read rather than once when the component is added, because the
|
|
15
|
+
* order is fixed and unhelpful: the viewer builds the scene (adding every component) and only then
|
|
16
|
+
* does the page have a scene to register the context on. Bind once in `added()` and every component
|
|
17
|
+
* would have looked a moment too early and said "not connected" for good.
|
|
18
|
+
*
|
|
19
|
+
* A `Map.get` per read is nothing, and the moment the context does appear the first invalidate picks
|
|
20
|
+
* it up and the subscription starts.
|
|
21
|
+
*
|
|
22
|
+
* ── Nothing is invented when there is no context ───────────────────────────
|
|
23
|
+
* `snapshot` is undefined then, and the component draws that it is not connected. Drawing a zero
|
|
24
|
+
* would read as "nothing came off this machine today", a different and much worse claim.
|
|
25
|
+
*/
|
|
26
|
+
export class StationScene extends RectPath(Shape) {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.binding = new StationContextBinding(this, () => this.invalidate());
|
|
30
|
+
}
|
|
31
|
+
removed(parent) {
|
|
32
|
+
this.binding.release();
|
|
33
|
+
super.removed?.(parent);
|
|
34
|
+
}
|
|
35
|
+
dispose() {
|
|
36
|
+
this.binding.release();
|
|
37
|
+
super.dispose();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The context this board was opened with, or nothing when the page has not attached one.
|
|
41
|
+
*
|
|
42
|
+
* Subscribes the first time it finds one, so a component that starts life before the page is ready
|
|
43
|
+
* still ends up redrawing when the numbers move.
|
|
44
|
+
*/
|
|
45
|
+
get context() {
|
|
46
|
+
return this.binding.context;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* What to draw. Undefined means not connected — say so, do not draw a zero.
|
|
50
|
+
*
|
|
51
|
+
* `Ground` 는 이 제품의 바탕이다. 기계의 씬은 인자를 안 주고(= `unknown`) 축만 읽는다. 바탕을 읽는
|
|
52
|
+
* 씬은 `StationScene<PlantGround>` 로 서고, 그렇게 **무엇을 읽는지가 클래스 줄에 적힌다**
|
|
53
|
+
* (ADR-0083 결정 6).
|
|
54
|
+
*/
|
|
55
|
+
get snapshot() {
|
|
56
|
+
return this.context?.snapshot;
|
|
57
|
+
}
|
|
58
|
+
/** One finished label, by the name an author picks — `order.name`, `window.good`. */
|
|
59
|
+
label(name) {
|
|
60
|
+
return this.context?.values[name];
|
|
61
|
+
}
|
|
62
|
+
/** Leaving a fact. What actually gets recorded is none of this component's business. */
|
|
63
|
+
act(action) {
|
|
64
|
+
if (!this.context?.readOnly)
|
|
65
|
+
this.context?.act(action);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=station-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"station-scene.js","sourceRoot":"","sources":["../../../client/station/scene/station-scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAIxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,YAA+B,SAAQ,QAAQ,CAAC,KAAK,CAAC;IAAnE;;QACU,YAAO,GAAG,IAAI,qBAAqB,CAAC,IAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IA0CnF,CAAC;IAxCC,OAAO,CAAC,MAAW;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QACtB,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QACtB,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IAED;;;;;OAKG;IACH,IAAc,OAAO;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,QAA+C,CAAA;IACtE,CAAC;IAED,qFAAqF;IAC3E,KAAK,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,wFAAwF;IAC9E,GAAG,CAAC,MAAqB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;YAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxD,CAAC;CACF","sourcesContent":["import { RectPath, Shape } from '@hatiolab/things-scene'\n\nimport type { StationAction, StationSnapshot } from '../station-context'\nimport type { StationSceneContext } from '../station-scene-context'\nimport { StationContextBinding } from './station-context-binding'\n\n/**\n * What every board-side station component inherits — **the part that makes the numbers move.**\n *\n * ── What was wrong ─────────────────────────────────────────────────────────\n * The first board components read the context inside `render()` and nothing else. Canvas components\n * are only asked to render when something invalidates them, and a snapshot arriving from the server\n * invalidates nothing. So a board drew the counts once — usually while they were still empty — and\n * then sat there showing them for the rest of the shift. No error, no blank: a wrong number,\n * confidently.\n *\n * ── Bound late, on purpose ─────────────────────────────────────────────────\n * The context is looked up on every read rather than once when the component is added, because the\n * order is fixed and unhelpful: the viewer builds the scene (adding every component) and only then\n * does the page have a scene to register the context on. Bind once in `added()` and every component\n * would have looked a moment too early and said \"not connected\" for good.\n *\n * A `Map.get` per read is nothing, and the moment the context does appear the first invalidate picks\n * it up and the subscription starts.\n *\n * ── Nothing is invented when there is no context ───────────────────────────\n * `snapshot` is undefined then, and the component draws that it is not connected. Drawing a zero\n * would read as \"nothing came off this machine today\", a different and much worse claim.\n */\nexport class StationScene<Ground = unknown> extends RectPath(Shape) {\n private binding = new StationContextBinding(this as any, () => this.invalidate())\n\n removed(parent: any) {\n this.binding.release()\n super.removed?.(parent)\n }\n\n dispose() {\n this.binding.release()\n super.dispose()\n }\n\n /**\n * The context this board was opened with, or nothing when the page has not attached one.\n *\n * Subscribes the first time it finds one, so a component that starts life before the page is ready\n * still ends up redrawing when the numbers move.\n */\n protected get context(): StationSceneContext | undefined {\n return this.binding.context\n }\n\n /**\n * What to draw. Undefined means not connected — say so, do not draw a zero.\n *\n * `Ground` 는 이 제품의 바탕이다. 기계의 씬은 인자를 안 주고(= `unknown`) 축만 읽는다. 바탕을 읽는\n * 씬은 `StationScene<PlantGround>` 로 서고, 그렇게 **무엇을 읽는지가 클래스 줄에 적힌다**\n * (ADR-0083 결정 6).\n */\n protected get snapshot(): StationSnapshot<Ground> | undefined {\n return this.context?.snapshot as StationSnapshot<Ground> | undefined\n }\n\n /** One finished label, by the name an author picks — `order.name`, `window.good`. */\n protected label(name: string): string | number | undefined {\n return this.context?.values[name]\n }\n\n /** Leaving a fact. What actually gets recorded is none of this component's business. */\n protected act(action: StationAction): void {\n if (!this.context?.readOnly) this.context?.act(action)\n }\n}\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { sceneComponent } from '@hatiolab/things-scene';
|
|
3
|
+
import { STATION_COLOR, drawCard, drawDetached, drawHeading } from './station-scene-style';
|
|
4
|
+
import { StationScene } from './station-scene';
|
|
5
|
+
/**
|
|
6
|
+
* On a board · who is here.
|
|
7
|
+
*
|
|
8
|
+
* When nobody has scanned in, this does not say "none". It says what to do. A shop-floor screen that
|
|
9
|
+
* reports an empty seat leaves the operator looking for the thing that is broken; one that says
|
|
10
|
+
* "scan your badge" gets the shift started.
|
|
11
|
+
*/
|
|
12
|
+
const NATURE = {
|
|
13
|
+
mutable: false,
|
|
14
|
+
resizable: true,
|
|
15
|
+
rotatable: false,
|
|
16
|
+
properties: [
|
|
17
|
+
{ type: 'string', label: 'equipment', name: 'equipment', property: 'equipment' },
|
|
18
|
+
{ type: 'string', label: 'label', name: 'label', property: 'label' },
|
|
19
|
+
{ type: 'string', label: 'prompt', name: 'prompt', property: 'prompt' }
|
|
20
|
+
]
|
|
21
|
+
};
|
|
22
|
+
let StationWhoScene = class StationWhoScene extends StationScene {
|
|
23
|
+
render(context) {
|
|
24
|
+
const state = this.state;
|
|
25
|
+
const { left, top, width, height } = state;
|
|
26
|
+
const snapshot = this.snapshot;
|
|
27
|
+
if (!snapshot) {
|
|
28
|
+
drawDetached(context, 'not connected', left, top, width, height);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const operator = snapshot.operator;
|
|
32
|
+
drawCard(context, left, top, width, height, operator ? STATION_COLOR.line : STATION_COLOR.warn);
|
|
33
|
+
const y = drawHeading(context, state.label || 'operator', left, top, width);
|
|
34
|
+
context.textBaseline = 'top';
|
|
35
|
+
context.font = 'bold 22px sans-serif';
|
|
36
|
+
context.fillStyle = operator ? STATION_COLOR.ink : STATION_COLOR.warn;
|
|
37
|
+
context.fillText(operator ? String(operator.name) : String(state.prompt || 'scan your badge'), left + 8, y + 2);
|
|
38
|
+
context.textBaseline = 'alphabetic';
|
|
39
|
+
}
|
|
40
|
+
get nature() {
|
|
41
|
+
return NATURE;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
StationWhoScene = __decorate([
|
|
45
|
+
sceneComponent('station-who')
|
|
46
|
+
], StationWhoScene);
|
|
47
|
+
export default StationWhoScene;
|
|
48
|
+
//# sourceMappingURL=station-who-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"station-who-scene.js","sourceRoot":"","sources":["../../../client/station/scene/station-who-scene.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE;QACV,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;QAChF,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACxE;CACF,CAAA;AAGc,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,YAAY;IACvD,MAAM,CAAC,OAAiC;QACtC,MAAM,KAAK,GAAQ,IAAI,CAAC,KAAK,CAAA;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAE9B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YAChE,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;QAElC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAE/F,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAE3E,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;QAC5B,OAAO,CAAC,IAAI,GAAG,sBAAsB,CAAA;QACrC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAA;QACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/G,OAAO,CAAC,YAAY,GAAG,YAAY,CAAA;IACrC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AA3BoB,eAAe;IADnC,cAAc,CAAC,aAAa,CAAC;GACT,eAAe,CA2BnC;eA3BoB,eAAe","sourcesContent":["import { ComponentNature, sceneComponent } from '@hatiolab/things-scene'\n\nimport { STATION_COLOR, drawCard, drawDetached, drawHeading } from './station-scene-style'\nimport { StationScene } from './station-scene'\n\n/**\n * On a board · who is here.\n *\n * When nobody has scanned in, this does not say \"none\". It says what to do. A shop-floor screen that\n * reports an empty seat leaves the operator looking for the thing that is broken; one that says\n * \"scan your badge\" gets the shift started.\n */\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: false,\n properties: [\n { type: 'string', label: 'equipment', name: 'equipment', property: 'equipment' },\n { type: 'string', label: 'label', name: 'label', property: 'label' },\n { type: 'string', label: 'prompt', name: 'prompt', property: 'prompt' }\n ]\n}\n\n@sceneComponent('station-who')\nexport default class StationWhoScene extends StationScene {\n render(context: CanvasRenderingContext2D) {\n const state: any = this.state\n const { left, top, width, height } = state\n const snapshot = this.snapshot\n\n if (!snapshot) {\n drawDetached(context, 'not connected', left, top, width, height)\n return\n }\n\n const operator = snapshot.operator\n\n drawCard(context, left, top, width, height, operator ? STATION_COLOR.line : STATION_COLOR.warn)\n\n const y = drawHeading(context, state.label || 'operator', left, top, width)\n\n context.textBaseline = 'top'\n context.font = 'bold 22px sans-serif'\n context.fillStyle = operator ? STATION_COLOR.ink : STATION_COLOR.warn\n context.fillText(operator ? String(operator.name) : String(state.prompt || 'scan your badge'), left + 8, y + 2)\n context.textBaseline = 'alphabetic'\n }\n\n get nature() {\n return NATURE\n }\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HTMLOverlayElement } from '@hatiolab/things-scene';
|
|
2
|
+
import '../station-work-panel-view';
|
|
3
|
+
import type { StationWorkPanelView } from '../station-work-panel-view';
|
|
4
|
+
/** Domain UI composed on the engine's tested overlay, geometry and selection machinery. */
|
|
5
|
+
export declare class StationWorkPanelScene extends HTMLOverlayElement {
|
|
6
|
+
get tagName(): string;
|
|
7
|
+
is3dish(): boolean;
|
|
8
|
+
setElementProperties(element: StationWorkPanelView): void;
|
|
9
|
+
render(): void;
|
|
10
|
+
get nature(): {
|
|
11
|
+
mutable: boolean;
|
|
12
|
+
resizable: boolean;
|
|
13
|
+
rotatable: boolean;
|
|
14
|
+
properties: ({
|
|
15
|
+
type: string;
|
|
16
|
+
label: string;
|
|
17
|
+
name: string;
|
|
18
|
+
property: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: string;
|
|
21
|
+
label: string;
|
|
22
|
+
name: string;
|
|
23
|
+
property: {
|
|
24
|
+
options: string[];
|
|
25
|
+
};
|
|
26
|
+
})[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { HTMLOverlayElement, sceneComponent } from '@hatiolab/things-scene';
|
|
3
|
+
import { i18next } from '@operato/i18n';
|
|
4
|
+
import '../station-work-panel-view';
|
|
5
|
+
import { WORK_SERVICE } from '../station-work-runtime';
|
|
6
|
+
/** Domain UI composed on the engine's tested overlay, geometry and selection machinery. */
|
|
7
|
+
let StationWorkPanelScene = class StationWorkPanelScene extends HTMLOverlayElement {
|
|
8
|
+
get tagName() { return 'station-work-panel-view'; }
|
|
9
|
+
is3dish() { return false; }
|
|
10
|
+
setElementProperties(element) {
|
|
11
|
+
element.label = String(this.state.label || i18next.t('label.station-sim-work-form'));
|
|
12
|
+
element.view = this.state.view || 'status';
|
|
13
|
+
element.runtime = this.root?.getService?.(WORK_SERVICE);
|
|
14
|
+
element.editing = !this.app?.isViewMode;
|
|
15
|
+
element.targetScreen = this.state.targetScreen || '';
|
|
16
|
+
element.flowAction = this.state.flowAction || 'next';
|
|
17
|
+
element.flowGuard = this.state.flowGuard || 'none';
|
|
18
|
+
element.resetScope = this.state.resetScope || 'none';
|
|
19
|
+
}
|
|
20
|
+
render() { if (this.element)
|
|
21
|
+
this.setElementProperties(this.element); }
|
|
22
|
+
get nature() {
|
|
23
|
+
return { mutable: false, resizable: true, rotatable: false, properties: [
|
|
24
|
+
{ type: 'string', label: i18next.t('label.station-sim-prop-label'), name: 'label', property: 'label' },
|
|
25
|
+
{ type: 'select', label: i18next.t('label.station-sim-prop-view'), name: 'view', property: { options: ['orders', 'materials', 'scan', 'inputs', 'checks', 'status', 'commit', 'navigation'] } },
|
|
26
|
+
{ type: 'string', label: i18next.t('label.station-sim-prop-target-screen'), name: 'targetScreen', property: 'targetScreen' },
|
|
27
|
+
{ type: 'select', label: i18next.t('label.station-sim-prop-flow-action'), name: 'flowAction', property: { options: ['next', 'back', 'cancel', 'next-work'] } },
|
|
28
|
+
{ type: 'select', label: i18next.t('label.station-sim-prop-flow-guard'), name: 'flowGuard', property: { options: ['none', 'order', 'materials', 'ready'] } },
|
|
29
|
+
{ type: 'select', label: i18next.t('label.station-sim-prop-reset-scope'), name: 'resetScope', property: { options: ['none', 'inputs', 'work'] } }
|
|
30
|
+
] };
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
StationWorkPanelScene = __decorate([
|
|
34
|
+
sceneComponent('station-work-panel')
|
|
35
|
+
], StationWorkPanelScene);
|
|
36
|
+
export { StationWorkPanelScene };
|
|
37
|
+
//# sourceMappingURL=station-work-panel-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"station-work-panel-scene.js","sourceRoot":"","sources":["../../../client/station/scene/station-work-panel-scene.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,4BAA4B,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGtD,2FAA2F;AAEpF,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,kBAAkB;IAC3D,IAAI,OAAO,KAAG,OAAO,yBAAyB,CAAA,CAAA,CAAC;IAC/C,OAAO,KAAG,OAAO,KAAK,CAAA,CAAA,CAAC;IACvB,oBAAoB,CAAC,OAA4B;QAC/C,OAAO,CAAC,KAAK,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAE,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,GAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAE,QAAQ,CAAA;QACtC,OAAO,CAAC,OAAO,GAAE,IAAI,CAAC,IAAY,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,CAAA;QAC9D,OAAO,CAAC,OAAO,GAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAA;QACrC,OAAO,CAAC,YAAY,GAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAE,EAAE,CAAA;QAChD,OAAO,CAAC,UAAU,GAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAE,MAAM,CAAA;QAChD,OAAO,CAAC,SAAS,GAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAE,MAAM,CAAA;QAC9C,OAAO,CAAC,UAAU,GAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAE,MAAM,CAAA;IAClD,CAAC;IACD,MAAM,KAAG,IAAG,IAAI,CAAC,OAAO;QAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAA+B,CAAC,CAAA,CAAA,CAAC;IACzF,IAAI,MAAM;QAAG,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC;gBAC3E,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAC;gBAC7F,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,CAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,YAAY,CAAC,EAAC,EAAC;gBAC5K,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC,CAAC,EAAC,IAAI,EAAC,cAAc,EAAC,QAAQ,EAAC,cAAc,EAAC;gBACnH,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,EAAC,IAAI,EAAC,YAAY,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,CAAC,MAAM,EAAC,MAAM,EAAC,QAAQ,EAAC,WAAW,CAAC,EAAC,EAAC;gBAC/I,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAC,IAAI,EAAC,WAAW,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,CAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,CAAC,EAAC,EAAC;gBAC7I,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,EAAC,IAAI,EAAC,YAAY,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,CAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,CAAC,EAAC,EAAC;aACpI,EAAC,CAAA;IAAA,CAAC;CACJ,CAAA;AAtBY,qBAAqB;IADjC,cAAc,CAAC,oBAAoB,CAAC;GACxB,qBAAqB,CAsBjC","sourcesContent":["import { HTMLOverlayElement, sceneComponent } from '@hatiolab/things-scene'\nimport { i18next } from '@operato/i18n'\nimport '../station-work-panel-view'\nimport { WORK_SERVICE } from '../station-work-runtime'\nimport type { StationWorkPanelView } from '../station-work-panel-view'\n\n/** Domain UI composed on the engine's tested overlay, geometry and selection machinery. */\n@sceneComponent('station-work-panel')\nexport class StationWorkPanelScene extends HTMLOverlayElement {\n get tagName(){return 'station-work-panel-view'}\n is3dish(){return false}\n setElementProperties(element:StationWorkPanelView){\n element.label=String(this.state.label||i18next.t('label.station-sim-work-form'))\n element.view=this.state.view||'status'\n element.runtime=(this.root as any)?.getService?.(WORK_SERVICE)\n element.editing=!this.app?.isViewMode\n element.targetScreen=this.state.targetScreen||''\n element.flowAction=this.state.flowAction||'next'\n element.flowGuard=this.state.flowGuard||'none'\n element.resetScope=this.state.resetScope||'none'\n }\n render(){if(this.element)this.setElementProperties(this.element as StationWorkPanelView)}\n get nature(){return {mutable:false,resizable:true,rotatable:false,properties:[\n {type:'string',label:i18next.t('label.station-sim-prop-label'),name:'label',property:'label'},\n {type:'select',label:i18next.t('label.station-sim-prop-view'),name:'view',property:{options:['orders','materials','scan','inputs','checks','status','commit','navigation']}},\n {type:'string',label:i18next.t('label.station-sim-prop-target-screen'),name:'targetScreen',property:'targetScreen'},\n {type:'select',label:i18next.t('label.station-sim-prop-flow-action'),name:'flowAction',property:{options:['next','back','cancel','next-work']}},\n {type:'select',label:i18next.t('label.station-sim-prop-flow-guard'),name:'flowGuard',property:{options:['none','order','materials','ready']}},\n {type:'select',label:i18next.t('label.station-sim-prop-reset-scope'),name:'resetScope',property:{options:['none','inputs','work']}}\n ]}}\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 저작자에게 내놓는 축 이름 — **보드 편집기와 컴포저가 이것을 읽는다.**
|
|
3
|
+
*
|
|
4
|
+
* ── 왜 기계가 이름만 드나 (ADR-0083 결정 6) ─────────────────────────────────
|
|
5
|
+
* 이 파일은 operato-plant 에서 왔고, 거기서는 이름을 내는 일과 **값을 펴는 일**을 같이 했다
|
|
6
|
+
* (`stationValues` · `stationData` — 작업지시의 수량, 지시서의 절차를 축 이름에 앉히는 것). 값을 펴는
|
|
7
|
+
* 쪽은 제품의 구조를 읽으므로 제품에 남는다(`StationClientProduct.valuesOf`). 여기 오는 것은
|
|
8
|
+
* **이름뿐**이다.
|
|
9
|
+
*
|
|
10
|
+
* ── 이름은 선언에서 나온다. 펴는 함수에서 나오지 않는다 ─────────────────────
|
|
11
|
+
* 글로 적어 두면 저작자가 오타와 「애초에 없는 이름」을 못 가른다. 그래서 코드에서 나오되,
|
|
12
|
+
* `shared/station-axes.js` 라는 **선언**에서 나온다 — 오늘 `stationValues` 가 마침 내놓는 키에서
|
|
13
|
+
* 뽑던 때에는 원본이 둘이 됐다. 서버가 거절하는 이름을 이쪽이 내놓거나, 서버가 받는 이름을 이쪽이
|
|
14
|
+
* 안 내놓거나 했고 **양쪽 다 조용했다.**
|
|
15
|
+
*/
|
|
16
|
+
export declare function stationBindingNames(): string[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 저작자에게 내놓는 축 이름 — **보드 편집기와 컴포저가 이것을 읽는다.**
|
|
3
|
+
*
|
|
4
|
+
* ── 왜 기계가 이름만 드나 (ADR-0083 결정 6) ─────────────────────────────────
|
|
5
|
+
* 이 파일은 operato-plant 에서 왔고, 거기서는 이름을 내는 일과 **값을 펴는 일**을 같이 했다
|
|
6
|
+
* (`stationValues` · `stationData` — 작업지시의 수량, 지시서의 절차를 축 이름에 앉히는 것). 값을 펴는
|
|
7
|
+
* 쪽은 제품의 구조를 읽으므로 제품에 남는다(`StationClientProduct.valuesOf`). 여기 오는 것은
|
|
8
|
+
* **이름뿐**이다.
|
|
9
|
+
*
|
|
10
|
+
* ── 이름은 선언에서 나온다. 펴는 함수에서 나오지 않는다 ─────────────────────
|
|
11
|
+
* 글로 적어 두면 저작자가 오타와 「애초에 없는 이름」을 못 가른다. 그래서 코드에서 나오되,
|
|
12
|
+
* `shared/station-axes.js` 라는 **선언**에서 나온다 — 오늘 `stationValues` 가 마침 내놓는 키에서
|
|
13
|
+
* 뽑던 때에는 원본이 둘이 됐다. 서버가 거절하는 이름을 이쪽이 내놓거나, 서버가 받는 이름을 이쪽이
|
|
14
|
+
* 안 내놓거나 했고 **양쪽 다 조용했다.**
|
|
15
|
+
*/
|
|
16
|
+
import { STATION_AXES } from '../../shared/station-axes.js';
|
|
17
|
+
export function stationBindingNames() {
|
|
18
|
+
return [...STATION_AXES];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=station-board-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"station-board-binding.js","sourceRoot":"","sources":["../../client/station/station-board-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAA;AAC1B,CAAC","sourcesContent":["/**\n * 저작자에게 내놓는 축 이름 — **보드 편집기와 컴포저가 이것을 읽는다.**\n *\n * ── 왜 기계가 이름만 드나 (ADR-0083 결정 6) ─────────────────────────────────\n * 이 파일은 operato-plant 에서 왔고, 거기서는 이름을 내는 일과 **값을 펴는 일**을 같이 했다\n * (`stationValues` · `stationData` — 작업지시의 수량, 지시서의 절차를 축 이름에 앉히는 것). 값을 펴는\n * 쪽은 제품의 구조를 읽으므로 제품에 남는다(`StationClientProduct.valuesOf`). 여기 오는 것은\n * **이름뿐**이다.\n *\n * ── 이름은 선언에서 나온다. 펴는 함수에서 나오지 않는다 ─────────────────────\n * 글로 적어 두면 저작자가 오타와 「애초에 없는 이름」을 못 가른다. 그래서 코드에서 나오되,\n * `shared/station-axes.js` 라는 **선언**에서 나온다 — 오늘 `stationValues` 가 마침 내놓는 키에서\n * 뽑던 때에는 원본이 둘이 됐다. 서버가 거절하는 이름을 이쪽이 내놓거나, 서버가 받는 이름을 이쪽이\n * 안 내놓거나 했고 **양쪽 다 조용했다.**\n */\n\nimport { STATION_AXES } from '../../shared/station-axes.js'\n\nexport function stationBindingNames(): string[] {\n return [...STATION_AXES]\n}\n"]}
|