diff --git a/src/views/wired/common/GetWiredConditionLayout.tsx b/src/views/wired/common/GetWiredConditionLayout.tsx index ac6dc69a..068ec848 100644 --- a/src/views/wired/common/GetWiredConditionLayout.tsx +++ b/src/views/wired/common/GetWiredConditionLayout.tsx @@ -4,6 +4,7 @@ import { WiredConditionActorIsOnFurniView } from '../views/conditions/actor-is-o import { WiredConditionActorIsTeamMemberView } from '../views/conditions/actor-is-team-member/WiredConditionActorIsTeamMemberView'; import { WiredConditionActorIsWearingBadgeView } from '../views/conditions/actor-is-wearing-badge/WiredConditionActorIsWearingBadgeView'; import { WiredConditionActorIsWearingEffectView } from '../views/conditions/actor-is-wearing-effect/WiredConditionActorIsWearingEffectView'; +import { WiredConditionDateRangeView } from '../views/conditions/date-range/WiredConditionDateRangeView'; import { WiredConditionFurniHasAvatarOnView } from '../views/conditions/furni-has-avatar-on/WiredConditionFurniHasAvatarOnView'; import { WiredConditionFurniHasFurniOnView } from '../views/conditions/furni-has-furni-on/WiredConditionFurniHasFurniOnView'; import { WiredConditionFurniHasNotFurniOnView } from '../views/conditions/furni-has-not-furni-on/WiredConditionFurniHasNotFurniOnView'; @@ -35,6 +36,8 @@ export function GetWiredConditionLayout(code: number): JSX.Element case WiredConditionlayout.ACTOR_IS_WEARING_EFFECT: case WiredConditionlayout.NOT_ACTOR_WEARING_EFFECT: return ; + case WiredConditionlayout.DATE_RANGE_ACTIVE: + return ; case WiredConditionlayout.FURNIS_HAVE_AVATARS: case WiredConditionlayout.FURNI_NOT_HAVE_HABBO: return ; diff --git a/src/views/wired/views/conditions/date-range/WiredConditionDateRangeView.tsx b/src/views/wired/views/conditions/date-range/WiredConditionDateRangeView.tsx new file mode 100644 index 00000000..a0d3c0dd --- /dev/null +++ b/src/views/wired/views/conditions/date-range/WiredConditionDateRangeView.tsx @@ -0,0 +1,62 @@ +import { FC, useCallback, useEffect, useState } from 'react'; +import { LocalizeText } from '../../../../../utils/LocalizeText'; +import { useWiredContext } from '../../../context/WiredContext'; +import { WiredFurniType } from '../../../WiredView.types'; +import { WiredConditionBaseView } from '../base/WiredConditionBaseView'; + +export const WiredConditionDateRangeView: FC<{}> = props => +{ + const [ startDate, setStartDate ] = useState(''); + const [ endDate, setEndDate ] = useState(''); + const { trigger = null, setIntParams = null } = useWiredContext(); + + const dateToString = useCallback((date: Date) => + { + return `${date.getFullYear()}/${('0' + (date.getMonth() + 1)).slice(-2)}/${('0' + date.getDate()).slice(-2)} ` + `${('0' + date.getHours()).slice(-2)}:${('0' + date.getMinutes()).slice(-2)}`; + }, []); + + useEffect(() => + { + if(trigger.intData.length >= 2) + { + let startDate = new Date(); + let endDate = new Date(); + + if(trigger.intData[0] > 0) + startDate = new Date((trigger.intData[0] * 1000)); + + if(trigger.intData[1] > 0) + endDate = new Date((trigger.intData[1] * 1000)); + + setStartDate(dateToString(startDate)); + setEndDate(dateToString(endDate)); + } + }, [ trigger ]); + + const save = useCallback(() => + { + let startDateMili = 0; + let endDateMili = 0; + + const startDateInstance = new Date(startDate); + const endDateInstance = new Date(endDate); + + if(startDateInstance && endDateInstance) + { + startDateMili = startDateInstance.getTime() / 1000; + endDateMili = endDateInstance.getTime() / 1000; + } + + setIntParams([startDateMili, endDateMili]); + }, [ startDate, endDate, setIntParams ]); + + return ( + +
{ LocalizeText('wiredfurni.params.startdate') }
+ setStartDate(e.target.value) } /> +
+
{ LocalizeText('wiredfurni.params.enddate') }
+ setEndDate(e.target.value) } /> +
+ ); +}