@ledvance/ui-biz-bundle 1.1.87 → 1.1.89
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/package.json +1 -1
- package/src/modules/flags/FlagHash.ts +346 -0
- package/src/modules/flags/FlagPage.tsx +10 -2
- package/src/modules/history/HistoryPage.tsx +233 -223
- package/src/modules/history/SwitchHistoryPageActions.ts +5 -5
- package/src/modules/timer/TimerPage.tsx +2 -2
- package/src/modules/timer/TimerPageAction.ts +2 -2
- package/src/newModules/biorhythm/BiorhythmEditPage.tsx +1 -1
- package/src/newModules/biorhythm/BiorhythmPage.tsx +1 -1
- package/src/newModules/energyConsumption/EnergyConsumptionChart.tsx +22 -30
- package/src/newModules/energyConsumption/EnergyConsumptionDetail.tsx +5 -5
- package/src/newModules/energyConsumption/EnergyConsumptionPage.tsx +4 -4
- package/src/newModules/energyConsumption/component/EnergyModal.tsx +1 -1
- package/src/newModules/energyConsumption/component/Overview.tsx +1 -1
- package/src/newModules/fixedTime/FixedTimeDetailPage.tsx +9 -11
- package/src/newModules/mood/MoodActions.ts +13 -6
- package/src/newModules/mood/MoodInfo.ts +170 -18
- package/src/newModules/mood/MoodPage.tsx +69 -53
- package/src/newModules/mood/StaticMoodEditorPage.tsx +8 -0
- package/src/newModules/randomTime/RandomTimeDetailPage.tsx +2 -1
- package/src/newModules/randomTime/RandomTimePage.tsx +1 -1
- package/src/newModules/sleepWakeUp/Interface.ts +2 -0
- package/src/newModules/sleepWakeUp/SleepWakeUpActions.ts +21 -6
- package/src/newModules/sleepWakeUp/SleepWakeUpDetailPage.tsx +10 -33
- package/src/newModules/sleepWakeUp/SleepWakeUpPage.tsx +4 -3
- package/src/newModules/swithInching/SwithInching.tsx +4 -4
- package/src/newModules/timeSchedule/TimeScheduleDetailPage.tsx +1 -1
- package/src/newModules/timeSchedule/TimeSchedulePage.tsx +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
2
2
|
import Page from '@ledvance/base/src/components/Page';
|
|
3
3
|
import { Utils } from 'tuya-panel-kit';
|
|
4
|
-
import {saveMoodList, useSceneStatusId, useSwitchLed, useWorkMode} from './MoodActions';
|
|
4
|
+
import { saveMoodList, useSceneStatusId, useSwitchLed, useWorkMode } from './MoodActions';
|
|
5
5
|
import {
|
|
6
6
|
useDeviceId,
|
|
7
7
|
useDeviceInfo,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { useReactive } from 'ahooks';
|
|
12
12
|
import Strings from '@ledvance/base/src/i18n';
|
|
13
13
|
import res from '@ledvance/base/src/res';
|
|
14
|
-
import { FlatList, StyleSheet, View, Platform } from 'react-native';
|
|
14
|
+
import { FlatList, StyleSheet, View, Platform, TouchableOpacity, Image } from 'react-native';
|
|
15
15
|
import Tag from '@ledvance/base/src/components/Tag';
|
|
16
16
|
import Spacer from '@ledvance/base/src/components/Spacer';
|
|
17
17
|
import InfoText from '@ledvance/base/src/components/InfoText';
|
|
@@ -25,6 +25,8 @@ import { ui_biz_routerKey } from '../../navigation/Routers'
|
|
|
25
25
|
import { cloneDeep, filter, map } from 'lodash';
|
|
26
26
|
import { saveFlagMode } from '@ledvance/ui-biz-bundle/src/modules/flags/FlagActions';
|
|
27
27
|
import { WorkMode } from '@ledvance/base/src/utils/interface';
|
|
28
|
+
import { showDialog } from '@ledvance/base/src/utils/common';
|
|
29
|
+
import I18n from '@ledvance/base/src/i18n';
|
|
28
30
|
|
|
29
31
|
const cx = Utils.RatioUtils.convertX;
|
|
30
32
|
|
|
@@ -65,16 +67,7 @@ const MoodPage = () => {
|
|
|
65
67
|
useEffect(() => {
|
|
66
68
|
state.loading = true
|
|
67
69
|
state.timerId = setTimeout(() => {
|
|
68
|
-
|
|
69
|
-
devId,
|
|
70
|
-
params,
|
|
71
|
-
params.featureId
|
|
72
|
-
).then(res => {
|
|
73
|
-
state.loading = false
|
|
74
|
-
if (res.success && Array.isArray(res.data)) {
|
|
75
|
-
state.originMoods = cloneDeep(res.data);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
70
|
+
getRemoteMoodInfo().then()
|
|
78
71
|
}, 250);
|
|
79
72
|
|
|
80
73
|
return () => {
|
|
@@ -82,6 +75,15 @@ const MoodPage = () => {
|
|
|
82
75
|
};
|
|
83
76
|
}, []);
|
|
84
77
|
|
|
78
|
+
const getRemoteMoodInfo = async (isRefresh?: boolean) => {
|
|
79
|
+
state.loading = true
|
|
80
|
+
const res = await getRemoteMoodList(devId, params, params.featureId, isRefresh)
|
|
81
|
+
state.loading = false
|
|
82
|
+
if (res.success && Array.isArray(res.data)) {
|
|
83
|
+
state.originMoods = cloneDeep(res.data);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
85
87
|
useEffect(() => {
|
|
86
88
|
state.filterMoods = state.originMoods.filter(item => {
|
|
87
89
|
return (
|
|
@@ -99,10 +101,10 @@ const MoodPage = () => {
|
|
|
99
101
|
mode === 'add'
|
|
100
102
|
? ui_biz_routerKey.ui_biz_mood_add
|
|
101
103
|
: isStatic
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
? ui_biz_routerKey.ui_biz_static_mood_edit
|
|
105
|
+
: !!(params.isMixLight || params.isCeilingLight)
|
|
106
|
+
? ui_biz_routerKey.ui_biz_dynamic_mix_mood_edit
|
|
107
|
+
: ui_biz_routerKey.ui_biz_dynamic_mood_edit;
|
|
106
108
|
navigation.navigate(path, {
|
|
107
109
|
mode,
|
|
108
110
|
isStatic,
|
|
@@ -141,29 +143,28 @@ const MoodPage = () => {
|
|
|
141
143
|
...currentMood.secondaryLamp,
|
|
142
144
|
nodes: currentMood.secondaryLamp && currentMood.secondaryLamp.nodes?.length
|
|
143
145
|
? currentMood.secondaryLamp.nodes.map(node => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
146
|
+
if (mode !== 'del') {
|
|
147
|
+
if (node.isColorNode) {
|
|
148
|
+
node.brightness = 0;
|
|
149
|
+
node.colorTemp = 0;
|
|
150
|
+
} else {
|
|
151
|
+
node.h = 0;
|
|
152
|
+
node.s = 0;
|
|
153
|
+
node.v = 0;
|
|
154
|
+
if (!params.isSupportTemperature) {
|
|
155
|
+
node.colorTemp = 100; // 适配dim灯
|
|
155
156
|
}
|
|
156
|
-
return node;
|
|
157
157
|
}
|
|
158
158
|
return node;
|
|
159
|
-
}
|
|
159
|
+
}
|
|
160
|
+
return node;
|
|
161
|
+
})
|
|
160
162
|
: [],
|
|
161
163
|
},
|
|
162
164
|
};
|
|
163
165
|
if (mode === 'set') {
|
|
164
|
-
await setMoodInfo(checkedMood);
|
|
165
166
|
await setSceneStatusId(checkedMood.id);
|
|
166
|
-
return;
|
|
167
|
+
return setMoodInfo(checkedMood);
|
|
167
168
|
}
|
|
168
169
|
let newScene: MoodUIInfo[] = [];
|
|
169
170
|
if (mode === 'add') {
|
|
@@ -200,11 +201,11 @@ const MoodPage = () => {
|
|
|
200
201
|
if (mood) {
|
|
201
202
|
if (mode === 'del') {
|
|
202
203
|
if (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
204
|
+
(mainWork !== WorkMode.Scene && secondaryWork !== WorkMode.Scene) ||
|
|
205
|
+
(params.isCeilingLight
|
|
206
|
+
? currentMood.mainLamp.id !== moodInfo.mainLamp.id &&
|
|
207
|
+
currentMood.secondaryLamp.id !== moodInfo.secondaryLamp.id
|
|
208
|
+
: (params.isSupportSceneStatus ? currentMood.id !== sceneStatusId : currentMood.id !== moodInfo.id)) || !switchLed
|
|
208
209
|
) {
|
|
209
210
|
return {
|
|
210
211
|
success: true,
|
|
@@ -271,21 +272,21 @@ const MoodPage = () => {
|
|
|
271
272
|
);
|
|
272
273
|
|
|
273
274
|
const getItemEnable = useCallback(
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
275
|
+
(moodItem: MoodUIInfo) => {
|
|
276
|
+
if (params.isCeilingLight) {
|
|
277
|
+
return (
|
|
278
|
+
moodInfo.mainLamp.id === moodItem.mainLamp.id &&
|
|
279
|
+
moodInfo.secondaryLamp.id === moodItem.secondaryLamp.id &&
|
|
280
|
+
(mainWork === WorkMode.Scene || secondaryWork === WorkMode.Scene) && !flagMode.flagMode && switchLed
|
|
281
|
+
);
|
|
282
|
+
} else if (params.isSupportSceneStatus && sceneStatusId !== -1) {
|
|
283
|
+
return sceneStatusId === moodItem.id && mainWork === WorkMode.Scene && !flagMode.flagMode && switchLed
|
|
284
|
+
} else {
|
|
285
|
+
return moodInfo.id === moodItem.id && mainWork === WorkMode.Scene && !flagMode.flagMode && switchLed
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
[moodInfo, mainWork, secondaryWork, flagMode?.flagMode, switchLed, sceneStatusId]
|
|
289
|
+
);
|
|
289
290
|
|
|
290
291
|
const nameRepeat = useCallback((mood: MoodUIInfo) => {
|
|
291
292
|
return !!state.originMoods.filter(m => !(params.isCeilingLight ? (m.mainLamp.id === mood.mainLamp.id && m.secondaryLamp.id === mood.secondaryLamp.id) : (m.id === mood.id))).find(m => m.name === mood.name)
|
|
@@ -306,7 +307,7 @@ const MoodPage = () => {
|
|
|
306
307
|
}}
|
|
307
308
|
loading={state.loading}
|
|
308
309
|
>
|
|
309
|
-
<View style={styles.tagLine}>
|
|
310
|
+
{!(params.isStringLight || params.isStripLight) && <View style={styles.tagLine}>
|
|
310
311
|
<Tag
|
|
311
312
|
checked={state.staticTagChecked}
|
|
312
313
|
text={Strings.getLang('mood_overview_filter_name_text1')}
|
|
@@ -322,7 +323,22 @@ const MoodPage = () => {
|
|
|
322
323
|
state.dynamicTagChecked = checked;
|
|
323
324
|
}}
|
|
324
325
|
/>
|
|
325
|
-
</View>
|
|
326
|
+
</View>}
|
|
327
|
+
<TouchableOpacity style={{ alignItems: 'flex-end',paddingRight: cx(24) }}
|
|
328
|
+
onPress={() => {
|
|
329
|
+
showDialog({
|
|
330
|
+
method: 'confirm',
|
|
331
|
+
title: I18n.getLang('flag_resetbutton'),
|
|
332
|
+
subTitle: I18n.getLang('flag_resetdescription'),
|
|
333
|
+
onConfirm: async (_, { close }) => {
|
|
334
|
+
close()
|
|
335
|
+
await getRemoteMoodInfo(true)
|
|
336
|
+
}
|
|
337
|
+
})
|
|
338
|
+
}}
|
|
339
|
+
>
|
|
340
|
+
<Image source={res.ic_refresh} style={{ width: cx(24), height: cx(24) }} />
|
|
341
|
+
</TouchableOpacity>
|
|
326
342
|
<Spacer height={cx(10)} />
|
|
327
343
|
{state.originMoods.length >= MAX_MOOD_COUNT && (
|
|
328
344
|
<View style={styles.infoLine}>
|
|
@@ -177,6 +177,14 @@ const StaticMoodEditorPage = () => {
|
|
|
177
177
|
reserveSV={true}
|
|
178
178
|
setIsColorMode={isColorMode => {
|
|
179
179
|
state.mainNode.isColorNode = isColorMode;
|
|
180
|
+
if (isColorMode && state.mainNode.h === 0 && state.mainNode.s === 0 && state.mainNode.v === 0) {
|
|
181
|
+
state.mainNode.s = 100;
|
|
182
|
+
state.mainNode.v = 100;
|
|
183
|
+
} else {
|
|
184
|
+
if (state.mainNode.brightness === 0 && state.mainNode.colorTemp === 0) {
|
|
185
|
+
state.mainNode.brightness = 100;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
180
188
|
}}
|
|
181
189
|
hsv={state.mainNode}
|
|
182
190
|
onHSVChange={(hsv) => {
|
|
@@ -22,6 +22,7 @@ import { Result } from "@ledvance/base/src/models/modules/Result";
|
|
|
22
22
|
import { useSystemTimeFormate } from "@ledvance/base/src/models/modules/NativePropsSlice";
|
|
23
23
|
|
|
24
24
|
const { convertX: cx } = Utils.RatioUtils;
|
|
25
|
+
const {parseTimer} = Utils.TimeUtils
|
|
25
26
|
|
|
26
27
|
export interface RandomTimeDetailPageParams extends RandomTimePageParams {
|
|
27
28
|
mode: 'add' | 'edit'
|
|
@@ -225,7 +226,7 @@ const RandomTimeDetailPage = () => {
|
|
|
225
226
|
</View>}
|
|
226
227
|
{/* summary */}
|
|
227
228
|
<Summary
|
|
228
|
-
frequency={loopText(state.randomTime.weeks)}
|
|
229
|
+
frequency={loopText(state.randomTime.weeks, parseTimer(state.randomTime.endTime * 60))}
|
|
229
230
|
time={`${convertMinutesTo12HourFormat(state.randomTime.startTime, is24Hour)} - ${convertMinutesTo12HourFormat(state.randomTime.endTime, is24Hour)}`}
|
|
230
231
|
hideActions={true}
|
|
231
232
|
/>
|
|
@@ -214,7 +214,7 @@ const RandomTimeCard = (props: {
|
|
|
214
214
|
thumbStyle={{ elevation: 0 }}
|
|
215
215
|
onValueChange={onSwitch} />
|
|
216
216
|
</View>
|
|
217
|
-
<Text style={styles.loopText}>{loopText(randomTime.weeks, parseTimer(randomTime.
|
|
217
|
+
<Text style={styles.loopText}>{loopText(randomTime.weeks, parseTimer(randomTime.endTime * 60))}</Text>
|
|
218
218
|
<Spacer height={cx(5)} />
|
|
219
219
|
<Text style={styles.loopText}>{randomTime.name}</Text>
|
|
220
220
|
<Spacer height={cx(showTags ? 5 : 20)} />
|
|
@@ -14,6 +14,7 @@ export interface WakeUpItem {
|
|
|
14
14
|
isSleep: boolean;
|
|
15
15
|
startTime: number;
|
|
16
16
|
endTime: number;
|
|
17
|
+
time: number
|
|
17
18
|
isColorMode: boolean;
|
|
18
19
|
}
|
|
19
20
|
|
|
@@ -49,6 +50,7 @@ export interface SleepItem {
|
|
|
49
50
|
isSleep: boolean;
|
|
50
51
|
startTime: number;
|
|
51
52
|
endTime: number;
|
|
53
|
+
time: number
|
|
52
54
|
isColorMode: boolean;
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -10,6 +10,17 @@ import I18n from '@ledvance/base/src/i18n'
|
|
|
10
10
|
const sleepPlanFeatureId = 'SleepPlan'
|
|
11
11
|
const wakeUpPlanFeatureId = 'WakeUpPlan'
|
|
12
12
|
|
|
13
|
+
export function getStartTime(item: SleepItem | WakeUpItem) {
|
|
14
|
+
const time = item.time - (item.isSleep ? 0 : item.delay * 5)
|
|
15
|
+
return time < 0 ? time + 1440 : time
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function getEndTime(item: SleepItem | WakeUpItem) {
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
const time = item.time + (item.isSleep ? item.delay * 5 : item.last * 5)
|
|
21
|
+
return time > 1440 ? time - 1440 : time
|
|
22
|
+
}
|
|
23
|
+
|
|
13
24
|
// 接口失败重试
|
|
14
25
|
let retryNumber = 0
|
|
15
26
|
const putFeatureFn = async (devId, featureId, data) => {
|
|
@@ -109,9 +120,11 @@ const wakeUpDp2Obj = (dp: string): WakeUpData | undefined => {
|
|
|
109
120
|
const brightness = hex2Int(plan.slice(18, 20))
|
|
110
121
|
const temperature = hex2Int(plan.slice(20, 22))
|
|
111
122
|
const last = hex2Int(plan.slice(22, 24))
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
123
|
+
const startMin = hour * 60 + minute - delay * 5
|
|
124
|
+
const startTime = startMin < 0 ? 1440 + startMin : startMin
|
|
125
|
+
const endMin = hour * 60 + minute + last * 5
|
|
126
|
+
const endTime = endMin > 1440 ? endMin - 1440 : endMin
|
|
127
|
+
const time = hour * 60 + minute
|
|
115
128
|
const cloneWeek = cloneDeep(weeks)
|
|
116
129
|
cloneWeek.pop()
|
|
117
130
|
const weeksValue = padStart([...cloneWeek].join(''), 8, '0')
|
|
@@ -121,6 +134,7 @@ const wakeUpDp2Obj = (dp: string): WakeUpData | undefined => {
|
|
|
121
134
|
enable, weeks, delay, hour, minute, h, s, v, brightness, temperature, last, nodeHex, isSleep: false,
|
|
122
135
|
startTime,
|
|
123
136
|
endTime,
|
|
137
|
+
time,
|
|
124
138
|
isColorMode: !!(h !== 0 || s !== 0 || v !== 0)
|
|
125
139
|
}
|
|
126
140
|
})
|
|
@@ -254,9 +268,9 @@ export const sleepDp2Obj = (dp: string): SleepData | undefined => {
|
|
|
254
268
|
const v = hex2Int(plan.slice(16, 18))
|
|
255
269
|
const brightness = hex2Int(plan.slice(18, 20))
|
|
256
270
|
const temperature = hex2Int(plan.slice(20, 22))
|
|
257
|
-
const
|
|
258
|
-
const
|
|
259
|
-
const endTime =
|
|
271
|
+
const startMin = hour * 60 + minute - delay * 5
|
|
272
|
+
const startTime = startMin < 0 ? 1440 + startMin : startMin
|
|
273
|
+
const endTime = hour * 60 + minute
|
|
260
274
|
const cloneWeek = cloneDeep(weeks)
|
|
261
275
|
cloneWeek.pop()
|
|
262
276
|
const weeksValue = padStart([...cloneWeek].join(''), 8, '0')
|
|
@@ -266,6 +280,7 @@ export const sleepDp2Obj = (dp: string): SleepData | undefined => {
|
|
|
266
280
|
enable, weeks, delay, hour, minute, h, s, v, brightness, temperature, nodeHex, isSleep: true,
|
|
267
281
|
startTime,
|
|
268
282
|
endTime,
|
|
283
|
+
time: endTime,
|
|
269
284
|
isColorMode: !!(h !== 0 || s !== 0 || v !== 0)
|
|
270
285
|
}
|
|
271
286
|
})
|
|
@@ -30,9 +30,11 @@ import { useParams } from '@ledvance/base/src/hooks/Hooks';
|
|
|
30
30
|
import ColorTempAdjustView from '@ledvance/base/src/components/ColorTempAdjustView';
|
|
31
31
|
import ColorAdjustView from '@ledvance/base/src/components/ColorAdjustView';
|
|
32
32
|
import Summary from '@ledvance/base/src/components/Summary';
|
|
33
|
+
import { getEndTime, getStartTime } from './SleepWakeUpActions'
|
|
33
34
|
|
|
34
35
|
const { convertX: cx } = Utils.RatioUtils;
|
|
35
36
|
const { toFixedString } = Utils.NumberUtils;
|
|
37
|
+
const {parseTimer} = Utils.TimeUtils
|
|
36
38
|
|
|
37
39
|
interface SleepWakeUpDetailPageProps extends SleepWakeUpPageRouteParams {
|
|
38
40
|
mode: 'add' | 'edit';
|
|
@@ -79,21 +81,6 @@ const SleepWakeUpDetailPage = () => {
|
|
|
79
81
|
}
|
|
80
82
|
}, [state.sleepWakeUp.last]);
|
|
81
83
|
|
|
82
|
-
useUpdateEffect(() => {
|
|
83
|
-
const { startTime, endTime, delay, isSleep } = state.sleepWakeUp;
|
|
84
|
-
if (isSleep) {
|
|
85
|
-
state.sleepWakeUp.hour = Math.trunc(startTime / 60);
|
|
86
|
-
state.sleepWakeUp.minute = startTime % 60;
|
|
87
|
-
const endMin = startTime + delay * 5;
|
|
88
|
-
state.sleepWakeUp.endTime = endMin > 1440 ? endMin - 1440 : endMin;
|
|
89
|
-
} else {
|
|
90
|
-
state.sleepWakeUp.hour = Math.trunc(endTime / 60);
|
|
91
|
-
state.sleepWakeUp.minute = endTime % 60;
|
|
92
|
-
const startMin = endTime - delay * 5;
|
|
93
|
-
state.sleepWakeUp.startTime = startMin < 0 ? startMin + 1440 : startMin;
|
|
94
|
-
}
|
|
95
|
-
}, [state.sleepWakeUp.startTime, state.sleepWakeUp.delay, state.sleepWakeUp.endTime]);
|
|
96
|
-
|
|
97
84
|
const getRangeTime = (time: number, isStart?: boolean) => {
|
|
98
85
|
if (isStart) {
|
|
99
86
|
return time < 0 ? 1440 + time : time;
|
|
@@ -270,14 +257,10 @@ const SleepWakeUpDetailPage = () => {
|
|
|
270
257
|
singlePicker={true}
|
|
271
258
|
amText={I18n.getLang('manage_user_calendar_label_am')}
|
|
272
259
|
pmText={I18n.getLang('manage_user_calendar_label_pm')}
|
|
273
|
-
startTime={
|
|
260
|
+
startTime={state.sleepWakeUp.time}
|
|
274
261
|
symbol={''}
|
|
275
262
|
onTimerChange={time => {
|
|
276
|
-
|
|
277
|
-
state.sleepWakeUp.startTime = time;
|
|
278
|
-
} else {
|
|
279
|
-
state.sleepWakeUp.endTime = time;
|
|
280
|
-
}
|
|
263
|
+
state.sleepWakeUp.time = time
|
|
281
264
|
}}
|
|
282
265
|
/>
|
|
283
266
|
|
|
@@ -295,7 +278,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
295
278
|
}}
|
|
296
279
|
/>
|
|
297
280
|
<Spacer />
|
|
298
|
-
<Text style={{ marginHorizontal: cx(24) }}>{loopText(state.sleepWakeUp.weeks)}</Text>
|
|
281
|
+
<Text style={{ marginHorizontal: cx(24) }}>{loopText(state.sleepWakeUp.weeks, parseTimer(getEndTime(state.sleepWakeUp) * 60))}</Text>
|
|
299
282
|
<Spacer />
|
|
300
283
|
</View>
|
|
301
284
|
|
|
@@ -440,7 +423,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
440
423
|
props.isSleep
|
|
441
424
|
? 'add_sleepschedule_one_source_settings_text2'
|
|
442
425
|
: 'add_wakeupschedule_settings_text2',
|
|
443
|
-
`${convertMinutesTo12HourFormat(state.sleepWakeUp
|
|
426
|
+
`${convertMinutesTo12HourFormat(getStartTime(state.sleepWakeUp), is24HourClock)}`
|
|
444
427
|
)}
|
|
445
428
|
</Text>
|
|
446
429
|
<Spacer />
|
|
@@ -490,7 +473,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
490
473
|
{I18n.formatValue(
|
|
491
474
|
'add_wakeupschedule_settings_text5',
|
|
492
475
|
`${convertMinutesTo12HourFormat(
|
|
493
|
-
|
|
476
|
+
getEndTime(state.sleepWakeUp),
|
|
494
477
|
is24HourClock
|
|
495
478
|
)}`
|
|
496
479
|
)}
|
|
@@ -501,12 +484,8 @@ const SleepWakeUpDetailPage = () => {
|
|
|
501
484
|
</View>
|
|
502
485
|
{/* Summary */}
|
|
503
486
|
<Summary
|
|
504
|
-
frequency={loopText(state.sleepWakeUp.weeks)}
|
|
505
|
-
time={`${convertMinutesTo12HourFormat(
|
|
506
|
-
state.sleepWakeUp.startTime,
|
|
507
|
-
is24HourClock
|
|
508
|
-
)} - ${convertMinutesTo12HourFormat(state.sleepWakeUp.endTime + (state.sleepWakeUp.isSleep ? 0 : state.sleepWakeUp.last * 5),
|
|
509
|
-
is24HourClock)}`}
|
|
487
|
+
frequency={loopText(state.sleepWakeUp.weeks, parseTimer(getEndTime(state.sleepWakeUp) * 60))}
|
|
488
|
+
time={`${convertMinutesTo12HourFormat(getStartTime(state.sleepWakeUp), is24HourClock)} - ${convertMinutesTo12HourFormat(getEndTime(state.sleepWakeUp), is24HourClock)}`}
|
|
510
489
|
actions={(
|
|
511
490
|
<View>
|
|
512
491
|
<Text style={{ fontSize: cx(12), color: '#000000' }}>
|
|
@@ -532,9 +511,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
532
511
|
<View style={styles.filletCorner}>
|
|
533
512
|
<Text style={styles.rightTitle}>
|
|
534
513
|
{convertMinutesTo12HourFormat(
|
|
535
|
-
|
|
536
|
-
? state.sleepWakeUp.endTime
|
|
537
|
-
: getRangeTime(state.sleepWakeUp.endTime + state.sleepWakeUp.last * 5),
|
|
514
|
+
getEndTime(state.sleepWakeUp),
|
|
538
515
|
is24HourClock
|
|
539
516
|
)}
|
|
540
517
|
</Text>
|
|
@@ -14,7 +14,7 @@ import { convertMinutesTo12HourFormat, loopText } from "@ledvance/base/src/utils
|
|
|
14
14
|
import TextButton from "@ledvance/base/src/components/TextButton";
|
|
15
15
|
import { ui_biz_routerKey } from '../../navigation/Routers'
|
|
16
16
|
import { cloneDeep } from "lodash";
|
|
17
|
-
import { sleepNode2Dp, useSleepMode, useWakeUp, wakeUpNode2Dp } from "./SleepWakeUpActions";
|
|
17
|
+
import { getEndTime, getStartTime, sleepNode2Dp, useSleepMode, useWakeUp, wakeUpNode2Dp } from "./SleepWakeUpActions";
|
|
18
18
|
import { SleepUIItem, WakeUpUIItem } from "./Interface";
|
|
19
19
|
import Card from "@ledvance/base/src/components/Card";
|
|
20
20
|
import { useParams } from "@ledvance/base/src/hooks/Hooks";
|
|
@@ -22,6 +22,7 @@ import { ApplyForItem } from "../timeSchedule/Interface";
|
|
|
22
22
|
import InfoText from "@ledvance/base/src/components/InfoText";
|
|
23
23
|
|
|
24
24
|
const cx = Utils.RatioUtils.convertX
|
|
25
|
+
const { parseTimer } = Utils.TimeUtils
|
|
25
26
|
|
|
26
27
|
export interface SleepWakeUpPageRouteParams {
|
|
27
28
|
isSupportColor?: boolean
|
|
@@ -317,13 +318,13 @@ const SleepWakeUpCard = (props: {
|
|
|
317
318
|
<Spacer height={cx(16)} />
|
|
318
319
|
<View style={styles.switchLine}>
|
|
319
320
|
<Text style={styles.time}>
|
|
320
|
-
{`${convertMinutesTo12HourFormat(sleepWakeUp
|
|
321
|
+
{`${convertMinutesTo12HourFormat(getStartTime(sleepWakeUp), is24HourClock)} - ${convertMinutesTo12HourFormat(getEndTime(sleepWakeUp), is24HourClock)}`}</Text>
|
|
321
322
|
<SwitchButton
|
|
322
323
|
value={sleepWakeUp.enable}
|
|
323
324
|
thumbStyle={{ elevation: 0 }}
|
|
324
325
|
onValueChange={onSwitch} />
|
|
325
326
|
</View>
|
|
326
|
-
<Text style={styles.loopText}>{loopText(sleepWakeUp.weeks)}</Text>
|
|
327
|
+
<Text style={styles.loopText}>{loopText(sleepWakeUp.weeks, parseTimer(getEndTime(sleepWakeUp) * 60))}</Text>
|
|
327
328
|
<Spacer height={cx(5)} />
|
|
328
329
|
<Text style={styles.loopText}>{sleepWakeUp.name}</Text>
|
|
329
330
|
<Spacer height={cx(10)} />
|
|
@@ -26,11 +26,11 @@ const SwitchInching = () => {
|
|
|
26
26
|
const deviceInfo = useDeviceInfo()
|
|
27
27
|
const navigation = useNavigation()
|
|
28
28
|
const [switchInching, setSwitchInching] = useSwitchInching(params.switchInchingCode)
|
|
29
|
-
const [randomTimePlan, setRandomTimePlan] = useRandomTime(params.
|
|
30
|
-
const [fixedTimePlan, setFixedTimePlan] = useFixedTime(params.
|
|
29
|
+
const [randomTimePlan, setRandomTimePlan] = useRandomTime(params.randomTimeCode, true)
|
|
30
|
+
const [fixedTimePlan, setFixedTimePlan] = useFixedTime(params.cycleTimeCode, true)
|
|
31
31
|
const [countdown1, setCountDown1] = useCountdown1(params.countdownCode)
|
|
32
|
-
const randomEnable =
|
|
33
|
-
const fixedEnable =
|
|
32
|
+
const randomEnable = randomTimePlan.some(item => item.enable)
|
|
33
|
+
const fixedEnable = fixedTimePlan.some(item => item.enable)
|
|
34
34
|
const timerEnable = !!countdown1
|
|
35
35
|
const state = useReactive<SwitchInchingState>({
|
|
36
36
|
enable: false,
|
|
@@ -221,7 +221,7 @@ const TimeScheduleDetailPage = (props: { theme?: any }) => {
|
|
|
221
221
|
fontFamily: 'helvetica_neue_lt_std_bd',
|
|
222
222
|
},
|
|
223
223
|
applyContent: {
|
|
224
|
-
backgroundColor: props.theme.card.
|
|
224
|
+
backgroundColor: props.theme.card.border,
|
|
225
225
|
borderRadius: 4,
|
|
226
226
|
minHeight: cx(55),
|
|
227
227
|
flex: 1,
|
|
@@ -141,7 +141,7 @@ const TimeSchedulePage = (props: { theme?: any }) => {
|
|
|
141
141
|
width: 'auto',
|
|
142
142
|
minWidth: cx(150),
|
|
143
143
|
paddingHorizontal: cx(16),
|
|
144
|
-
backgroundColor: props.theme.button.
|
|
144
|
+
backgroundColor: props.theme.button.primary,
|
|
145
145
|
},
|
|
146
146
|
categoryList: {
|
|
147
147
|
display: 'flex',
|