@ledvance/group-ui-biz-bundle 1.0.55 → 1.0.56
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/randomTimeForPlug/Router.ts +2 -2
- package/src/modules/timeSchedule/Interface.ts +24 -2
- package/src/modules/timeSchedule/TimeScheduleActions.ts +8 -0
- package/src/modules/timeSchedule/TimeScheduleDetailPage.tsx +13 -8
- package/src/modules/timeSchedule/TimeSchedulePage.tsx +2 -2
- package/src/modules/timeSchedule/components/ManuaSettings.tsx +52 -3
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ import {ui_biz_routerKey} from "../../navigation/Routers";
|
|
|
5
5
|
|
|
6
6
|
const RandomTimeForPlugRouters: NavigationRoute[] = [
|
|
7
7
|
{
|
|
8
|
-
name: ui_biz_routerKey.
|
|
8
|
+
name: ui_biz_routerKey.group_ui_biz_random_time_plug,
|
|
9
9
|
component: RandomTimeForPlugPage,
|
|
10
10
|
options:{
|
|
11
11
|
hideTopbar: true,
|
|
@@ -13,7 +13,7 @@ const RandomTimeForPlugRouters: NavigationRoute[] = [
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
name: ui_biz_routerKey.
|
|
16
|
+
name: ui_biz_routerKey.group_ui_biz_random_time_plug_detail,
|
|
17
17
|
component: RandomTimeForPlugDetailPage,
|
|
18
18
|
options:{
|
|
19
19
|
hideTopbar: true,
|
|
@@ -41,7 +41,8 @@ export enum UVCFanMode {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
import
|
|
44
|
+
import I18n from "@ledvance/base/src/i18n";
|
|
45
|
+
import { MoodInfo, MoodUIInfo } from "../mood_new/Interface";
|
|
45
46
|
|
|
46
47
|
export interface Timer {
|
|
47
48
|
status: number;
|
|
@@ -80,6 +81,8 @@ interface judgmentSupport {
|
|
|
80
81
|
isStripLight?: boolean;
|
|
81
82
|
isStringLight?: boolean;
|
|
82
83
|
isMixLight?: boolean;
|
|
84
|
+
isFanLight?: boolean;
|
|
85
|
+
isUVCFan?: boolean;
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
export interface ManualSettingProps extends judgmentSupport {
|
|
@@ -94,7 +97,8 @@ export enum DeviceType {
|
|
|
94
97
|
LightSource = 'lightSource',
|
|
95
98
|
MixLight = 'mixLight',
|
|
96
99
|
StripLight = 'stripLight',
|
|
97
|
-
CeilingLight = 'ceilingLight'
|
|
100
|
+
CeilingLight = 'ceilingLight',
|
|
101
|
+
FanLight = 'fanLight'
|
|
98
102
|
}
|
|
99
103
|
// export type DeviceType = 'LightSource' | 'CeilingLight' | 'StringLight' | 'StripLight' | 'MixLight';
|
|
100
104
|
|
|
@@ -122,11 +126,19 @@ export interface StripLightData extends DeviceData {
|
|
|
122
126
|
export interface CeilingLightData extends DeviceData, StripLightData, MixLightData {
|
|
123
127
|
}
|
|
124
128
|
|
|
129
|
+
export interface FanLightData extends DeviceData {
|
|
130
|
+
fanSpeed: number
|
|
131
|
+
direction: 'forward' | 'reverse'
|
|
132
|
+
mode: 'nature' | 'normal'
|
|
133
|
+
disinfect: boolean
|
|
134
|
+
}
|
|
135
|
+
|
|
125
136
|
export type ComponentConfig =
|
|
126
137
|
| { type: DeviceType.LightSource; deviceData: DeviceData }
|
|
127
138
|
| { type: DeviceType.MixLight; deviceData: MixLightData }
|
|
128
139
|
| { type: DeviceType.StripLight; deviceData: StripLightData }
|
|
129
140
|
| { type: DeviceType.CeilingLight; deviceData: CeilingLightData }
|
|
141
|
+
| { type: DeviceType.FanLight; deviceData: FanLightData }
|
|
130
142
|
|
|
131
143
|
export interface TimeScheduleDetailState {
|
|
132
144
|
timeSchedule: Timer;
|
|
@@ -148,3 +160,13 @@ export interface DeviceStateType {
|
|
|
148
160
|
mood?: MoodInfo
|
|
149
161
|
isManual: boolean
|
|
150
162
|
}
|
|
163
|
+
|
|
164
|
+
export const directOptions = [
|
|
165
|
+
{label: I18n.getLang('ceiling_fan_tile_uvc_fan_direction_opt_1'), value: 'forward'},
|
|
166
|
+
{label: I18n.getLang('ceiling_fan_tile_uvc_fan_direction_opt_2'), value: 'reverse'}
|
|
167
|
+
]
|
|
168
|
+
|
|
169
|
+
export const modeOptions = [
|
|
170
|
+
{label: I18n.getLang('ceiling_fan_tile_uvc_fan_mode_opt_1'), value: 'normal'},
|
|
171
|
+
{label: I18n.getLang('ceiling_fan_tile_uvc_fan_mode_opt_2'), value: 'nature'},
|
|
172
|
+
]
|
|
@@ -32,6 +32,14 @@ export const defCeilingLihtDeviceData = {
|
|
|
32
32
|
activeKey: 1
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
export const defFanLightDeviceData = {
|
|
36
|
+
...defDeviceData,
|
|
37
|
+
fanSpeed: 1,
|
|
38
|
+
direction: 'forward',
|
|
39
|
+
mode: 'normal',
|
|
40
|
+
disinfect: false
|
|
41
|
+
}
|
|
42
|
+
|
|
35
43
|
export const addTimeSchedule = async (props: IAddSingleTime) => {
|
|
36
44
|
try {
|
|
37
45
|
const res = await commonApi.timerApi.addSingleTimer({
|
|
@@ -37,7 +37,7 @@ import DeleteButton from '@ledvance/base/src/components/DeleteButton';
|
|
|
37
37
|
import SegmentControl from '@ledvance/base/src/components/segmentControl';
|
|
38
38
|
import { useParams } from '@ledvance/base/src/hooks/Hooks';
|
|
39
39
|
import ManualSettings from './components/ManuaSettings';
|
|
40
|
-
import { defCeilingLihtDeviceData, defDeviceData, defMixDeviceData, defStripDeviceData } from './TimeScheduleActions';
|
|
40
|
+
import { defCeilingLihtDeviceData, defDeviceData, defMixDeviceData, defStripDeviceData, defFanLightDeviceData } from './TimeScheduleActions';
|
|
41
41
|
import MoodItem from '../mood_new/MoodItem';
|
|
42
42
|
import Summary from './components/Summary'
|
|
43
43
|
import { getRemoteMoodList } from '../mood_new/MoodActions'
|
|
@@ -106,10 +106,10 @@ const TimeScheduleDetailPage = () => {
|
|
|
106
106
|
state.unSelectedSkill = [];
|
|
107
107
|
} else {
|
|
108
108
|
const selectedList = cloneApplyList.filter(item =>
|
|
109
|
-
Object.keys(timeSchedule
|
|
109
|
+
Object.keys(timeSchedule?.dps || {}).includes(item.dp)
|
|
110
110
|
);
|
|
111
111
|
const unSelectedList = cloneApplyList.filter(
|
|
112
|
-
item => !Object.keys(timeSchedule
|
|
112
|
+
item => !Object.keys(timeSchedule?.dps || {}).includes(item.dp)
|
|
113
113
|
);
|
|
114
114
|
state.selectedSkill = mode === 'add' ? [] : selectedList;
|
|
115
115
|
state.unSelectedSkill = mode === 'add' ? cloneApplyList : unSelectedList;
|
|
@@ -122,8 +122,10 @@ const TimeScheduleDetailPage = () => {
|
|
|
122
122
|
|
|
123
123
|
if (!(Array.isArray(moods) && moods.length)) {
|
|
124
124
|
state.timerId = setTimeout(() => {
|
|
125
|
+
console.log(props, '< --- timeSchedule props')
|
|
125
126
|
getRemoteMoodList(uaGroupInfo.tyGroupId.toString(), props).then(res => {
|
|
126
127
|
if (res.success && Array.isArray(res.data)) {
|
|
128
|
+
console.log(res.data, '< --- timeSchedule mood')
|
|
127
129
|
state.moods = cloneDeep(res.data);
|
|
128
130
|
setMoods(cloneDeep(res.data));
|
|
129
131
|
if (!state.mood) state.mood = cloneDeep(res.data[0]);
|
|
@@ -196,8 +198,8 @@ const TimeScheduleDetailPage = () => {
|
|
|
196
198
|
}, [state.timeSchedule.aliasName, state.selectedSkill, isModify, state.isManual, state.mood]);
|
|
197
199
|
|
|
198
200
|
const showSelectedIcon = useMemo(() => {
|
|
199
|
-
return
|
|
200
|
-
}, [
|
|
201
|
+
return props.applyForList.length !== 1 && !props.applyForDisabled;
|
|
202
|
+
}, [props.applyForList.length, props.applyForDisabled]);
|
|
201
203
|
|
|
202
204
|
const getMoodItemEnable = useCallback((item: MoodUIInfo ) =>{
|
|
203
205
|
return props.isCeilingLight ? ((item.mainLamp.id === state.mood?.mainLamp?.id) && (item.secondaryLamp.id === state.mood?.secondaryLamp?.id)) : item.id === state.mood?.id
|
|
@@ -286,8 +288,8 @@ const TimeScheduleDetailPage = () => {
|
|
|
286
288
|
{I18n.getLang('timeschedule_add_schedule_subheadline_text')}
|
|
287
289
|
</Text>
|
|
288
290
|
<Spacer height={cx(10)} />
|
|
289
|
-
<View style={styles.applyContent}>
|
|
290
|
-
{
|
|
291
|
+
<View style={[styles.applyContent, {paddingTop: state.selectedSkill.length ? cx(10) : 0}]}>
|
|
292
|
+
{state.selectedSkill.length === 0 ? (
|
|
291
293
|
<Text>{I18n.getLang('timer_ceiling_fan_selectionfield_no_components_text')}</Text>
|
|
292
294
|
) : (
|
|
293
295
|
state.selectedSkill.map(skill => (
|
|
@@ -529,6 +531,8 @@ const getDefaultManual = (props: TimeScheduleDetailPageParams): ComponentConfig
|
|
|
529
531
|
? DeviceType.MixLight
|
|
530
532
|
: props.isCeilingLight
|
|
531
533
|
? DeviceType.CeilingLight
|
|
534
|
+
: props.isFanLight ?
|
|
535
|
+
DeviceType.FanLight
|
|
532
536
|
: DeviceType.LightSource;
|
|
533
537
|
const deviceData =
|
|
534
538
|
deviceType === DeviceType.StripLight
|
|
@@ -537,6 +541,8 @@ const getDefaultManual = (props: TimeScheduleDetailPageParams): ComponentConfig
|
|
|
537
541
|
? defMixDeviceData
|
|
538
542
|
: deviceType === DeviceType.CeilingLight
|
|
539
543
|
? defCeilingLihtDeviceData
|
|
544
|
+
: deviceType === DeviceType.FanLight
|
|
545
|
+
? defFanLightDeviceData
|
|
540
546
|
: defDeviceData;
|
|
541
547
|
// @ts-ignore
|
|
542
548
|
return {
|
|
@@ -565,7 +571,6 @@ const styles = StyleSheet.create({
|
|
|
565
571
|
flex: 1,
|
|
566
572
|
justifyContent: 'center',
|
|
567
573
|
paddingHorizontal: cx(10),
|
|
568
|
-
paddingTop: cx(10),
|
|
569
574
|
},
|
|
570
575
|
applyItem: {
|
|
571
576
|
paddingLeft: cx(5),
|
|
@@ -33,8 +33,8 @@ export interface TimeSchedulePageParams {
|
|
|
33
33
|
isMatterLight?: boolean;
|
|
34
34
|
isCeilingLight?: boolean;
|
|
35
35
|
isMixLight?: boolean;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
isFanLight?: boolean
|
|
37
|
+
isUVCFan?: boolean;
|
|
38
38
|
applyForList: ApplyForItem[];
|
|
39
39
|
applyForDisabled: boolean; // 是否可以选择apply for
|
|
40
40
|
manualDataDp2Obj: (dps: Record<string, any>) => DeviceStateType;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { memo, useMemo } from 'react';
|
|
2
|
-
import { CeilingLightData, DeviceType, ManualSettingProps, StripLightData } from '../Interface';
|
|
2
|
+
import { CeilingLightData, DeviceType, ManualSettingProps, StripLightData, directOptions, modeOptions } from '../Interface';
|
|
3
3
|
import { View } from 'react-native';
|
|
4
4
|
import Card from '@ledvance/base/src/components/Card';
|
|
5
5
|
import LampAdjustView from '@ledvance/base/src/components/LampAdjustView';
|
|
@@ -14,6 +14,7 @@ import Spacer from '@ledvance/base/src/components/Spacer';
|
|
|
14
14
|
import { useGroupDevices } from '@ledvance/base/src/models/modules/NativePropsSlice';
|
|
15
15
|
import ApplyForDeviceList from '@ledvance/base/src/components/ApplyForDeviceList';
|
|
16
16
|
import { cloneDeep } from 'lodash';
|
|
17
|
+
import { FanAdjustViewContent } from '@ledvance/base/src/components/FanAdjustView';
|
|
17
18
|
const { convertX: cx } = Utils.RatioUtils;
|
|
18
19
|
|
|
19
20
|
function ManualSettings(props: ManualSettingProps) {
|
|
@@ -50,7 +51,7 @@ function ManualSettings(props: ManualSettingProps) {
|
|
|
50
51
|
),
|
|
51
52
|
},
|
|
52
53
|
];
|
|
53
|
-
if(props.isCeilingLight){
|
|
54
|
+
if (props.isCeilingLight) {
|
|
54
55
|
return tabs.filter(tab => tab.key !== 0)
|
|
55
56
|
}
|
|
56
57
|
if (!isSupportWhite) {
|
|
@@ -87,7 +88,7 @@ function ManualSettings(props: ManualSettingProps) {
|
|
|
87
88
|
state.applyFlag = Symbol()
|
|
88
89
|
}}
|
|
89
90
|
/>
|
|
90
|
-
{item.enable && item.type !== 'socket' && (
|
|
91
|
+
{item.enable && (item.type !== 'socket' && item.type !== 'fan') && (
|
|
91
92
|
<LampAdjustView
|
|
92
93
|
isSupportColor={props.isSupportColor}
|
|
93
94
|
isSupportBrightness={props.isSupportBrightness}
|
|
@@ -131,6 +132,54 @@ function ManualSettings(props: ManualSettingProps) {
|
|
|
131
132
|
}}
|
|
132
133
|
/>
|
|
133
134
|
)}
|
|
135
|
+
|
|
136
|
+
{item.enable && item.type === 'fan' && (
|
|
137
|
+
<FanAdjustViewContent
|
|
138
|
+
hideEnable={true}
|
|
139
|
+
fanEnable={item.enable}
|
|
140
|
+
maxFanSpeed={props.isUVCFan ? 20 : 3}
|
|
141
|
+
isSupportDirection={props.isUVCFan}
|
|
142
|
+
isSupportDisinfect={props.isUVCFan}
|
|
143
|
+
isSupportMode={props.isUVCFan}
|
|
144
|
+
directValue={''}
|
|
145
|
+
disinfect={true}
|
|
146
|
+
modeValue={''}
|
|
147
|
+
directOptions={directOptions}
|
|
148
|
+
modeOptions={modeOptions}
|
|
149
|
+
directChange={(direction: any) => {
|
|
150
|
+
state.deviceData = {
|
|
151
|
+
...state.deviceData,
|
|
152
|
+
direction
|
|
153
|
+
}
|
|
154
|
+
state.manualFlag = Symbol()
|
|
155
|
+
}}
|
|
156
|
+
modeChange={(mode: any) => {
|
|
157
|
+
state.deviceData = {
|
|
158
|
+
...state.deviceData,
|
|
159
|
+
mode
|
|
160
|
+
}
|
|
161
|
+
state.manualFlag = Symbol()
|
|
162
|
+
}}
|
|
163
|
+
disinfectChange={(disinfect: any) => {
|
|
164
|
+
state.deviceData = {
|
|
165
|
+
...state.deviceData,
|
|
166
|
+
disinfect
|
|
167
|
+
}
|
|
168
|
+
state.manualFlag = Symbol()
|
|
169
|
+
}}
|
|
170
|
+
// @ts-ignore
|
|
171
|
+
fanSpeed={deviceData.fanSpeed}
|
|
172
|
+
onFanSwitch={() => {}}
|
|
173
|
+
onFanSpeedChangeComplete={(fanSpeed) => {
|
|
174
|
+
state.deviceData = {
|
|
175
|
+
...state.deviceData,
|
|
176
|
+
fanSpeed
|
|
177
|
+
}
|
|
178
|
+
state.manualFlag = Symbol()
|
|
179
|
+
}}
|
|
180
|
+
/>
|
|
181
|
+
)}
|
|
182
|
+
|
|
134
183
|
<ApplyForDeviceList
|
|
135
184
|
devices={cloneDeep(groupDevices)}
|
|
136
185
|
/>
|