/* eslint-disable prefer-const */
/* eslint-disable no-underscore-dangle */
import React from "react";
import { StyleSheet, LayoutAnimation, Platform, UIManager } from "react-native";
import { range, convert2Digit } from "beeshell/dist/common/utils";
import {
CheckBox,
Layout,
Modal,
Button,
Card,
Text,
MenuItem,
Icon,
} from "@ui-kitten/components";
import { Scrollpicker } from "beeshell";
import { useModel } from "flooks";
import { useBoolean } from "@umijs/hooks";
import moment from "moment";
import OpenTimeUtil from "../Utils/OpenTimeUtil";
if (Platform.OS === "android") {
if (UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true);
}
}
const styles = StyleSheet.create({
checkBoxAll: {
paddingVertical: 10,
},
checkBoxItem: {
paddingVertical: 2,
paddingHorizontal: 10,
},
time: {
// width: 100,
// height: 300,
},
backdrop: {
backgroundColor: "rgba(0, 0, 0, 0.5)",
},
btnList: {
flexDirection: "row",
justifyContent: "space-between",
paddingTop: 15,
},
hideHeight: {
height: 0,
borderWidth: 0,
},
btn: {
flex: 1,
minWidth: 50,
},
});
const ForwardIcon = props => ;
const titleText = (props, title, value) => (
{title}
{value}
);
export default function OpenTimeCom({ submit, openTime, node$ }) {
const {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
every,
confirm,
cancel,
start,
end,
hour,
min,
weekName,
weekWords,
} = useModel("wordsModel");
const open = useBoolean();
const weeks = [
{
key: "MONDAY",
label: MONDAY,
},
{
key: "TUESDAY",
label: TUESDAY,
},
{
key: "WEDNESDAY",
label: WEDNESDAY,
},
{
key: "THURSDAY",
label: THURSDAY,
},
{
key: "FRIDAY",
label: FRIDAY,
},
{
key: "SATURDAY",
label: SATURDAY,
},
{
key: "SUNDAY",
label: SUNDAY,
},
];
const [checkList, changeChecked] = React.useState([]);
const listItems = weeks.map((item, index) => (
{
const _checkList = [...checkList];
if (checked) {
_checkList.push(item.key);
} else {
_checkList.splice(_checkList.indexOf(item.key), 1);
}
changeChecked(_checkList);
}}
>
{item.label}
));
const list = React.useMemo(() => {
const hourSum = 24;
const minuteSum = 60;
const hours = range(hourSum / 1).map(item => {
item = convert2Digit(item * 1);
return {
label: `${item} ${hour}`,
value: item,
};
});
const minutes = range(minuteSum / 10).map(item => {
item = convert2Digit(item * 10);
return {
label: `${item} ${min}`,
value: item,
};
});
return [hours, minutes];
}, [open.state]);
const [time1, setTime1] = React.useState([8, 0]);
const [time2, setTime2] = React.useState([20, 0]);
const [showTime1, changeShowTime1] = React.useState(true);
const [showTime2, changeShowTime2] = React.useState(false);
const [showWeek, changeShowWeek] = React.useState(false);
const backOpenTime = React.useMemo(() => {
return new OpenTimeUtil(
moment(`${time1[0]}:${time1[1] * 10}`, "H:m").format("HH:mm:ss"),
moment(`${time2[0]}:${time2[1] * 10}`, "H:m").format("HH:mm:ss"),
checkList.toString(),
weekWords()
);
}, [openTime, checkList, time1, time2]);
const allChecked = React.useMemo(() => {
if (weeks.length === checkList.length) {
return true;
}
return false;
}, [weeks, checkList]);
const indeterminate = React.useMemo(() => {
if (!allChecked && checkList.length > 0) {
return true;
}
return false;
}, [allChecked, checkList]);
const canSubmit = React.useMemo(() => {
if (time1.length === 2 && time2.length === 2 && checkList.length > 0) {
return true;
}
return false;
}, [time1, time2, checkList]);
if (node$) {
node$.useSubscription(() => {
setTime1(openTime.selectStart);
setTime2(openTime.selectEnd);
changeChecked(openTime.getWeek());
open.setTrue();
});
}
function hideElseShow(key) {
changeShowTime1(key === 1);
changeShowTime2(key === 2);
changeShowWeek(key === 3);
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
}
return (
<>
0}
backdropStyle={styles.backdrop}
onBackdropPress={() => {
open.setFalse();
}}
>
{
const _time1 = [...time1];
_time1[index] = value;
setTime1(_time1);
}}
/>
{
const _time2 = [...time2];
_time2[index] = value;
setTime2(_time2);
}}
/>
{
changeChecked(
checked
? weeks.map(item => {
return item.key;
})
: []
);
}}
>
{every}
{listItems}
>
);
}