easy-three-utils 0.0.395 → 0.0.396
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.
|
@@ -8,9 +8,22 @@ import Styles from './index.module.less'
|
|
|
8
8
|
|
|
9
9
|
dayjs.extend(duration)
|
|
10
10
|
|
|
11
|
+
interface IControlEvent {
|
|
12
|
+
rewind: string
|
|
13
|
+
pause: 'PAUSE'
|
|
14
|
+
play: 'PLAY'
|
|
15
|
+
stop: 'STOP'
|
|
16
|
+
fastForward: string
|
|
17
|
+
}
|
|
18
|
+
|
|
11
19
|
const Timeline: React.FC<{
|
|
12
|
-
getViewer: () => Cesium.Viewer
|
|
20
|
+
getViewer: () => Cesium.Viewer
|
|
13
21
|
style?: React.CSSProperties
|
|
22
|
+
enabledControl?: boolean
|
|
23
|
+
onControlEvent?<T extends keyof IControlEvent>(type: T, value: IControlEvent[T]): void
|
|
24
|
+
onSliderChange?: (time: string) => void
|
|
25
|
+
onSpeedChange?: (speed: number) => void
|
|
26
|
+
|
|
14
27
|
}> = memo((props) => {
|
|
15
28
|
|
|
16
29
|
const { getViewer } = props
|
|
@@ -51,7 +64,7 @@ const Timeline: React.FC<{
|
|
|
51
64
|
getViewer().clock.onTick.removeEventListener(setClockEvent)
|
|
52
65
|
}
|
|
53
66
|
|
|
54
|
-
const
|
|
67
|
+
const sliderChange = (value: number) => {
|
|
55
68
|
setPercent(() => value)
|
|
56
69
|
const totalSeconds = Cesium.JulianDate.secondsDifference(
|
|
57
70
|
getViewer().clock.stopTime,
|
|
@@ -62,10 +75,13 @@ const Timeline: React.FC<{
|
|
|
62
75
|
(value / 100) * totalSeconds,
|
|
63
76
|
new Cesium.JulianDate()
|
|
64
77
|
)
|
|
78
|
+
|
|
79
|
+
const nowDate = Cesium.JulianDate.toDate(newTime)
|
|
80
|
+
props.onSliderChange && props.onSliderChange(dayjs(nowDate).format('YYYY-MM-DD HH:mm:ss'))
|
|
81
|
+
|
|
65
82
|
getViewer().clock.currentTime = newTime
|
|
66
83
|
}
|
|
67
84
|
|
|
68
|
-
type TContronType = 'rewind' | 'pause' | 'play' | 'stop' | 'fastForward'
|
|
69
85
|
const control = {
|
|
70
86
|
rewind: () => {
|
|
71
87
|
getViewer().clock.currentTime = Cesium.JulianDate.addSeconds(
|
|
@@ -73,16 +89,23 @@ const Timeline: React.FC<{
|
|
|
73
89
|
-30 * 60,
|
|
74
90
|
new Cesium.JulianDate()
|
|
75
91
|
)
|
|
92
|
+
|
|
93
|
+
const nowDate = dayjs(Cesium.JulianDate.toDate(getViewer().clock.currentTime))
|
|
94
|
+
props.onControlEvent && props.onControlEvent('rewind', dayjs(nowDate).format('YYYY-MM-DD HH:mm:ss'))
|
|
76
95
|
},
|
|
77
96
|
play: () => {
|
|
78
97
|
getViewer().clock.shouldAnimate = true
|
|
98
|
+
props.onControlEvent && props.onControlEvent('play', 'PLAY')
|
|
79
99
|
},
|
|
80
100
|
pause: () => {
|
|
81
101
|
getViewer().clock.shouldAnimate = false
|
|
102
|
+
props.onControlEvent && props.onControlEvent('pause', 'PAUSE')
|
|
82
103
|
},
|
|
83
104
|
stop: () => {
|
|
84
105
|
getViewer().clock.currentTime = getViewer().clock.startTime
|
|
85
106
|
getViewer().clock.shouldAnimate = false
|
|
107
|
+
props.onControlEvent && props.onControlEvent('stop', 'STOP')
|
|
108
|
+
|
|
86
109
|
},
|
|
87
110
|
fastForward: () => {
|
|
88
111
|
getViewer().clock.currentTime = Cesium.JulianDate.addSeconds(
|
|
@@ -90,6 +113,9 @@ const Timeline: React.FC<{
|
|
|
90
113
|
30 * 60,
|
|
91
114
|
new Cesium.JulianDate()
|
|
92
115
|
)
|
|
116
|
+
|
|
117
|
+
const nowDate = dayjs(Cesium.JulianDate.toDate(getViewer().clock.currentTime))
|
|
118
|
+
props.onControlEvent && props.onControlEvent('fastForward', dayjs(nowDate).format('YYYY-MM-DD HH:mm:ss'))
|
|
93
119
|
}
|
|
94
120
|
}
|
|
95
121
|
|
|
@@ -117,27 +143,31 @@ const Timeline: React.FC<{
|
|
|
117
143
|
}}>
|
|
118
144
|
<div className={Styles['slider-box']} style={{ ...props.style }}>
|
|
119
145
|
<Slider
|
|
146
|
+
disabled={props.enabledControl === false}
|
|
120
147
|
min={0}
|
|
121
148
|
max={100}
|
|
122
149
|
step={0.1}
|
|
123
150
|
value={percent}
|
|
124
|
-
onChange={(value: number) =>
|
|
151
|
+
onChange={(value: number) => sliderChange(value)}
|
|
125
152
|
/>
|
|
126
153
|
<div className={Styles['control']}>
|
|
127
154
|
{
|
|
128
|
-
(['rewind', 'pause', 'play', 'stop', 'fastForward'] as
|
|
155
|
+
props.enabledControl !== false && (['rewind', 'pause', 'play', 'stop', 'fastForward'] as (keyof IControlEvent)[]).map(item =>
|
|
129
156
|
<img key={item} onClick={() => control[item]()} src={import.meta.env.MODE === 'development' ? (window as any).__POLT__URL__ + `/assets/image/${item}_01.png` : `/assets/image/${item}_01.png`} />
|
|
130
157
|
)
|
|
131
158
|
}
|
|
132
159
|
<div className={Styles['control-box']}>
|
|
133
|
-
|
|
134
|
-
<div
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
160
|
+
{
|
|
161
|
+
props.enabledControl !== false && <div className={Styles['control-input']}>
|
|
162
|
+
<div style={{ minWidth: '45px' }}>倍速:</div>
|
|
163
|
+
<Input value={speed} onInput={(e) => {
|
|
164
|
+
setSpeed(Number((e.target as any).value))
|
|
165
|
+
getViewer().clock.multiplier = Number((e.target as any).value)
|
|
166
|
+
props.onSpeedChange && props.onSpeedChange(Number((e.target as any).value))
|
|
167
|
+
}}></Input>
|
|
168
|
+
<div>X</div>
|
|
169
|
+
</div>
|
|
170
|
+
}
|
|
141
171
|
<div className={Styles['time-text']}><span style={{ color: '#00f2fe' }}>{currentTime}</span><div style={{ padding: "0 4px" }}>/</div>{totalTime}</div>
|
|
142
172
|
</div>
|
|
143
173
|
</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easy-three-utils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.396",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"types": "./index.d.ts",
|
|
11
|
-
"description": ""
|
|
11
|
+
"description": "修改时间轴,新增参数"
|
|
12
12
|
}
|