@seamapi/react 3.1.2 → 4.0.0-beta.1
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/README.md +2 -2
- package/dist/elements.js +9896 -10373
- package/dist/elements.js.map +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.d.ts +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +3 -3
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +4 -4
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
- package/lib/seam/components/DeviceDetails/DeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/DeviceDetails.js +1 -2
- package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +2 -2
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +2 -40
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceTable/DeviceTable.d.ts +1 -1
- package/lib/seam/components/DeviceTable/DeviceTable.js +2 -2
- package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
- package/lib/seam/components/common-props.d.ts +0 -1
- package/lib/seam/components/common-props.js.map +1 -1
- package/lib/seam/components/index.d.ts +0 -2
- package/lib/seam/components/index.js +0 -2
- package/lib/seam/components/index.js.map +1 -1
- package/lib/seam/index.d.ts +0 -2
- package/lib/seam/index.js +0 -2
- package/lib/seam/index.js.map +1 -1
- package/lib/ui/thermostat/FanModeMenu.js +1 -0
- package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +3 -3
- package/src/lib/element.tsx +0 -1
- package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +0 -3
- package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +0 -4
- package/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +0 -2
- package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +0 -2
- package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +0 -137
- package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +0 -2
- package/src/lib/seam/components/common-props.tsx +0 -1
- package/src/lib/seam/components/elements.ts +0 -2
- package/src/lib/seam/components/index.ts +0 -2
- package/src/lib/seam/index.ts +0 -2
- package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -0
- package/src/lib/version.ts +1 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +0 -7
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +0 -43
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +0 -7
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +0 -55
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +0 -5
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +0 -31
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.d.ts +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.js +0 -9
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.d.ts +0 -8
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +0 -10
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.d.ts +0 -5
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js +0 -28
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +0 -14
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +0 -80
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +0 -1
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.d.ts +0 -5
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +0 -29
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js +0 -16
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js +0 -28
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.d.ts +0 -7
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js +0 -25
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js +0 -27
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js +0 -46
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/use-update-thermostat.d.ts +0 -6
- package/lib/seam/thermostats/use-update-thermostat.js +0 -51
- package/lib/seam/thermostats/use-update-thermostat.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +0 -32
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +0 -85
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.d.ts +0 -13
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +0 -44
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.d.ts +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js +0 -24
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.d.ts +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +0 -15
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js +0 -30
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.d.ts +0 -9
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js +0 -16
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js.map +0 -1
- package/lib/ui/ClimateSettingForm/set-point-bounds.d.ts +0 -4
- package/lib/ui/ClimateSettingForm/set-point-bounds.js +0 -17
- package/lib/ui/ClimateSettingForm/set-point-bounds.js.map +0 -1
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +0 -107
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.ts +0 -11
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +0 -175
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +0 -72
- package/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts +0 -10
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +0 -35
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +0 -60
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts +0 -17
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +0 -220
- package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.element.ts +0 -9
- package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +0 -56
- package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.ts +0 -34
- package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.ts +0 -53
- package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts +0 -53
- package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts +0 -51
- package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts +0 -83
- package/src/lib/seam/thermostats/use-update-thermostat.ts +0 -90
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +0 -189
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +0 -118
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.tsx +0 -79
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.tsx +0 -36
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +0 -120
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx +0 -43
- package/src/lib/ui/ClimateSettingForm/set-point-bounds.ts +0 -31
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
2
|
-
|
|
3
|
-
import { ClimateSettingScheduleIcon } from 'lib/icons/ClimateSettingSchedule.js'
|
|
4
|
-
import { ClimateSettingScheduleRowDetails } from 'lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js'
|
|
5
|
-
import { TableCell } from 'lib/ui/Table/TableCell.js'
|
|
6
|
-
import { TableRow } from 'lib/ui/Table/TableRow.js'
|
|
7
|
-
import { Title } from 'lib/ui/typography/Title.js'
|
|
8
|
-
|
|
9
|
-
interface ClimateSettingScheduleRowProps {
|
|
10
|
-
climateSettingSchedule: ClimateSettingSchedule
|
|
11
|
-
onClick: () => void
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function ClimateSettingScheduleRow({
|
|
15
|
-
climateSettingSchedule,
|
|
16
|
-
onClick,
|
|
17
|
-
}: ClimateSettingScheduleRowProps): JSX.Element {
|
|
18
|
-
return (
|
|
19
|
-
<TableRow onClick={onClick}>
|
|
20
|
-
<TableCell className='seam-icon-cell'>
|
|
21
|
-
<div>
|
|
22
|
-
<ClimateSettingScheduleIcon />
|
|
23
|
-
</div>
|
|
24
|
-
</TableCell>
|
|
25
|
-
<TableCell className='seam-name-cell'>
|
|
26
|
-
<Title className='seam-truncated-text'>
|
|
27
|
-
{climateSettingSchedule.name}
|
|
28
|
-
</Title>
|
|
29
|
-
<ClimateSettingScheduleRowDetails
|
|
30
|
-
climateSettingSchedule={climateSettingSchedule}
|
|
31
|
-
/>
|
|
32
|
-
</TableCell>
|
|
33
|
-
</TableRow>
|
|
34
|
-
)
|
|
35
|
-
}
|
package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
2
|
-
import { DateTime } from 'luxon'
|
|
3
|
-
|
|
4
|
-
import { useDevice } from 'lib/seam/devices/use-device.js'
|
|
5
|
-
import { DotDivider } from 'lib/ui/layout/DotDivider.js'
|
|
6
|
-
import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
|
|
7
|
-
import { useIsDateInPast } from 'lib/ui/use-is-date-in-past.js'
|
|
8
|
-
|
|
9
|
-
export function ClimateSettingScheduleRowDetails(props: {
|
|
10
|
-
climateSettingSchedule: ClimateSettingSchedule
|
|
11
|
-
}): JSX.Element {
|
|
12
|
-
const { climateSettingSchedule } = props
|
|
13
|
-
const { device } = useDevice({ device_id: climateSettingSchedule.device_id })
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<div className='seam-details'>
|
|
17
|
-
<span className='seam-device-name seam-truncated-text'>
|
|
18
|
-
{device?.properties.name}
|
|
19
|
-
</span>
|
|
20
|
-
<DotDivider />
|
|
21
|
-
<Duration climateSettingSchedule={climateSettingSchedule} />
|
|
22
|
-
<DotDivider />
|
|
23
|
-
<ClimateSettingStatus climateSetting={climateSettingSchedule} />
|
|
24
|
-
</div>
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function Duration(props: {
|
|
29
|
-
climateSettingSchedule: ClimateSettingSchedule
|
|
30
|
-
}): JSX.Element {
|
|
31
|
-
const { climateSettingSchedule } = props
|
|
32
|
-
|
|
33
|
-
const hasStarted =
|
|
34
|
-
useIsDateInPast(climateSettingSchedule.schedule_starts_at) ?? false
|
|
35
|
-
|
|
36
|
-
if (hasStarted) {
|
|
37
|
-
return (
|
|
38
|
-
<span>
|
|
39
|
-
{t.ends} {formatDate(climateSettingSchedule.schedule_ends_at)}{' '}
|
|
40
|
-
</span>
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<span>
|
|
46
|
-
{t.starts} {formatDate(climateSettingSchedule.schedule_starts_at)}
|
|
47
|
-
</span>
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const formatDate = (date: string): string =>
|
|
52
|
-
DateTime.fromISO(date).toLocaleString({
|
|
53
|
-
month: 'long',
|
|
54
|
-
day: 'numeric',
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
const t = {
|
|
58
|
-
starts: 'Starts',
|
|
59
|
-
ends: 'Ends',
|
|
60
|
-
}
|
package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ElementProps } from 'lib/element.js'
|
|
2
|
-
|
|
3
|
-
import type { ClimateSettingScheduleTableProps } from './ClimateSettingScheduleTable.js'
|
|
4
|
-
|
|
5
|
-
export const name = 'seam-climate-setting-schedule-table'
|
|
6
|
-
|
|
7
|
-
export const props: ElementProps<ClimateSettingScheduleTableProps> = {
|
|
8
|
-
deviceId: 'string',
|
|
9
|
-
disableSearch: 'boolean',
|
|
10
|
-
onClimateSettingScheduleClick: 'object',
|
|
11
|
-
preventDefaultOnClimateSettingScheduleClick: 'boolean',
|
|
12
|
-
climateSettingScheduleFilter: 'object',
|
|
13
|
-
climateSettingScheduleComparator: 'object',
|
|
14
|
-
heading: 'string',
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export { ClimateSettingScheduleTable as Component } from './ClimateSettingScheduleTable.js'
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
2
|
-
import classNames from 'classnames'
|
|
3
|
-
import { useCallback, useMemo, useState } from 'react'
|
|
4
|
-
|
|
5
|
-
import { compareByCreatedAtDesc } from 'lib/dates.js'
|
|
6
|
-
import { NestedClimateSettingScheduleDetails } from 'lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js'
|
|
7
|
-
import { ClimateSettingScheduleRow } from 'lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js'
|
|
8
|
-
import {
|
|
9
|
-
type CommonProps,
|
|
10
|
-
withRequiredCommonProps,
|
|
11
|
-
} from 'lib/seam/components/common-props.js'
|
|
12
|
-
import { useClimateSettingSchedules } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
|
|
13
|
-
import { useComponentTelemetry } from 'lib/telemetry/index.js'
|
|
14
|
-
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
|
|
15
|
-
import { LoadingToast } from 'lib/ui/LoadingToast/LoadingToast.js'
|
|
16
|
-
import { Snackbar } from 'lib/ui/Snackbar/Snackbar.js'
|
|
17
|
-
import { EmptyPlaceholder } from 'lib/ui/Table/EmptyPlaceholder.js'
|
|
18
|
-
import { TableBody } from 'lib/ui/Table/TableBody.js'
|
|
19
|
-
import { TableHeader } from 'lib/ui/Table/TableHeader.js'
|
|
20
|
-
import { TableTitle } from 'lib/ui/Table/TableTitle.js'
|
|
21
|
-
import { SearchTextField } from 'lib/ui/TextField/SearchTextField.js'
|
|
22
|
-
import { Caption } from 'lib/ui/typography/Caption.js'
|
|
23
|
-
|
|
24
|
-
export const NestedClimateSettingScheduleTable = withRequiredCommonProps(
|
|
25
|
-
ClimateSettingScheduleTable
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
export interface ClimateSettingScheduleTableProps extends CommonProps {
|
|
29
|
-
deviceId: string
|
|
30
|
-
disableSearch?: boolean
|
|
31
|
-
onClimateSettingScheduleClick?: (climateSettingScheduleId: string) => void
|
|
32
|
-
preventDefaultOnClimateSettingScheduleClick?: boolean
|
|
33
|
-
climateSettingScheduleFilter?: (
|
|
34
|
-
climateSettingSchedule: ClimateSettingSchedule,
|
|
35
|
-
searchInputValue: string
|
|
36
|
-
) => boolean
|
|
37
|
-
climateSettingScheduleComparator?: (
|
|
38
|
-
climateSettingScheduleA: ClimateSettingSchedule,
|
|
39
|
-
climateSettingScheduleB: ClimateSettingSchedule
|
|
40
|
-
) => number
|
|
41
|
-
heading?: string | null
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const defaultClimateSettingScheduleFilter = (
|
|
45
|
-
climateSettingSchedule: ClimateSettingSchedule,
|
|
46
|
-
searchInputValue: string
|
|
47
|
-
): boolean => {
|
|
48
|
-
const value = searchInputValue.trim().toLowerCase()
|
|
49
|
-
if (value === '') return true
|
|
50
|
-
const name = climateSettingSchedule.name ?? ''
|
|
51
|
-
return name.trim().toLowerCase().includes(value)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function ClimateSettingScheduleTable({
|
|
55
|
-
deviceId,
|
|
56
|
-
disableSearch = false,
|
|
57
|
-
onClimateSettingScheduleClick = () => {},
|
|
58
|
-
preventDefaultOnClimateSettingScheduleClick = false,
|
|
59
|
-
climateSettingScheduleFilter = defaultClimateSettingScheduleFilter,
|
|
60
|
-
climateSettingScheduleComparator = compareByCreatedAtDesc,
|
|
61
|
-
heading = t.climateSettingSchedules,
|
|
62
|
-
disableLockUnlock = false,
|
|
63
|
-
disableDeleteAccessCode = false,
|
|
64
|
-
onBack,
|
|
65
|
-
className,
|
|
66
|
-
errorFilter = () => true,
|
|
67
|
-
warningFilter = () => true,
|
|
68
|
-
disableCreateAccessCode,
|
|
69
|
-
disableEditAccessCode,
|
|
70
|
-
disableResourceIds = false,
|
|
71
|
-
disableConnectedAccountInformation = false,
|
|
72
|
-
disableClimateSettingSchedules,
|
|
73
|
-
}: ClimateSettingScheduleTableProps): JSX.Element {
|
|
74
|
-
useComponentTelemetry('ClimateSettingScheduleTable')
|
|
75
|
-
|
|
76
|
-
const { climateSettingSchedules, isInitialLoading, isError, refetch } =
|
|
77
|
-
useClimateSettingSchedules({
|
|
78
|
-
device_id: deviceId,
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
const [searchInputValue, setSearchInputValue] = useState('')
|
|
82
|
-
const [
|
|
83
|
-
selectedViewClimateSettingScheduleId,
|
|
84
|
-
setSelectedViewClimateSettingScheduleId,
|
|
85
|
-
] = useState<string | null>(null)
|
|
86
|
-
|
|
87
|
-
const filteredClimateSettingSchedules = useMemo(
|
|
88
|
-
() =>
|
|
89
|
-
climateSettingSchedules
|
|
90
|
-
?.filter((schedule) =>
|
|
91
|
-
climateSettingScheduleFilter(schedule, searchInputValue)
|
|
92
|
-
)
|
|
93
|
-
?.sort(climateSettingScheduleComparator) ?? [],
|
|
94
|
-
[
|
|
95
|
-
climateSettingSchedules,
|
|
96
|
-
searchInputValue,
|
|
97
|
-
climateSettingScheduleFilter,
|
|
98
|
-
climateSettingScheduleComparator,
|
|
99
|
-
]
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
const handleClimateSettingScheduleClick = useCallback(
|
|
103
|
-
(climateSettingScheduleId: string): void => {
|
|
104
|
-
onClimateSettingScheduleClick(climateSettingScheduleId)
|
|
105
|
-
if (preventDefaultOnClimateSettingScheduleClick) return
|
|
106
|
-
setSelectedViewClimateSettingScheduleId(climateSettingScheduleId)
|
|
107
|
-
},
|
|
108
|
-
[
|
|
109
|
-
onClimateSettingScheduleClick,
|
|
110
|
-
preventDefaultOnClimateSettingScheduleClick,
|
|
111
|
-
setSelectedViewClimateSettingScheduleId,
|
|
112
|
-
]
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
if (selectedViewClimateSettingScheduleId != null) {
|
|
116
|
-
return (
|
|
117
|
-
<NestedClimateSettingScheduleDetails
|
|
118
|
-
climateSettingScheduleId={selectedViewClimateSettingScheduleId}
|
|
119
|
-
errorFilter={errorFilter}
|
|
120
|
-
warningFilter={warningFilter}
|
|
121
|
-
disableLockUnlock={disableLockUnlock}
|
|
122
|
-
disableCreateAccessCode={disableCreateAccessCode}
|
|
123
|
-
disableEditAccessCode={disableEditAccessCode}
|
|
124
|
-
disableDeleteAccessCode={disableDeleteAccessCode}
|
|
125
|
-
disableResourceIds={disableResourceIds}
|
|
126
|
-
disableConnectedAccountInformation={disableConnectedAccountInformation}
|
|
127
|
-
disableClimateSettingSchedules={disableClimateSettingSchedules}
|
|
128
|
-
onBack={() => {
|
|
129
|
-
setSelectedViewClimateSettingScheduleId(null)
|
|
130
|
-
}}
|
|
131
|
-
className={className}
|
|
132
|
-
/>
|
|
133
|
-
)
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return (
|
|
137
|
-
<div className={classNames('seam-table', className)}>
|
|
138
|
-
<ContentHeader onBack={onBack} />
|
|
139
|
-
<TableHeader>
|
|
140
|
-
{heading != null ? (
|
|
141
|
-
<TableTitle>
|
|
142
|
-
{heading ?? t.climateSettingSchedules}{' '}
|
|
143
|
-
<Caption>({filteredClimateSettingSchedules.length})</Caption>
|
|
144
|
-
</TableTitle>
|
|
145
|
-
) : (
|
|
146
|
-
<div className='seam-fragment' />
|
|
147
|
-
)}
|
|
148
|
-
<div className='seam-table-header-loading-wrap'>
|
|
149
|
-
<LoadingToast
|
|
150
|
-
isLoading={isInitialLoading}
|
|
151
|
-
label={t.loading}
|
|
152
|
-
top={-20}
|
|
153
|
-
/>
|
|
154
|
-
</div>
|
|
155
|
-
{!disableSearch && (
|
|
156
|
-
<SearchTextField
|
|
157
|
-
value={searchInputValue}
|
|
158
|
-
onChange={setSearchInputValue}
|
|
159
|
-
disabled={(climateSettingSchedules?.length ?? 0) === 0}
|
|
160
|
-
/>
|
|
161
|
-
)}
|
|
162
|
-
</TableHeader>
|
|
163
|
-
<TableBody>
|
|
164
|
-
<Content
|
|
165
|
-
climateSettingSchedules={filteredClimateSettingSchedules}
|
|
166
|
-
onClimateSettingScheduleClick={handleClimateSettingScheduleClick}
|
|
167
|
-
/>
|
|
168
|
-
</TableBody>
|
|
169
|
-
|
|
170
|
-
<Snackbar
|
|
171
|
-
variant='error'
|
|
172
|
-
visible={isError}
|
|
173
|
-
message={t.fallbackErrorMessage}
|
|
174
|
-
action={{
|
|
175
|
-
label: t.tryAgain,
|
|
176
|
-
onClick: () => {
|
|
177
|
-
void refetch()
|
|
178
|
-
},
|
|
179
|
-
}}
|
|
180
|
-
disableCloseButton
|
|
181
|
-
/>
|
|
182
|
-
</div>
|
|
183
|
-
)
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
function Content(props: {
|
|
187
|
-
climateSettingSchedules: ClimateSettingSchedule[]
|
|
188
|
-
onClimateSettingScheduleClick: (climateSettingScheduleId: string) => void
|
|
189
|
-
}): JSX.Element {
|
|
190
|
-
const { climateSettingSchedules, onClimateSettingScheduleClick } = props
|
|
191
|
-
|
|
192
|
-
if (climateSettingSchedules.length === 0) {
|
|
193
|
-
return (
|
|
194
|
-
<EmptyPlaceholder>{t.noClimateSettingSchedulesMessage}</EmptyPlaceholder>
|
|
195
|
-
)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return (
|
|
199
|
-
<>
|
|
200
|
-
{climateSettingSchedules.map((schedule) => (
|
|
201
|
-
<ClimateSettingScheduleRow
|
|
202
|
-
climateSettingSchedule={schedule}
|
|
203
|
-
key={schedule.climate_setting_schedule_id}
|
|
204
|
-
onClick={() => {
|
|
205
|
-
onClimateSettingScheduleClick(schedule.climate_setting_schedule_id)
|
|
206
|
-
}}
|
|
207
|
-
/>
|
|
208
|
-
))}
|
|
209
|
-
</>
|
|
210
|
-
)
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const t = {
|
|
214
|
-
climateSettingSchedules: 'Climate setting schedules',
|
|
215
|
-
noClimateSettingSchedulesMessage:
|
|
216
|
-
'Sorry, no climate setting schedules were found',
|
|
217
|
-
loading: 'Loading schedules',
|
|
218
|
-
tryAgain: 'Try again',
|
|
219
|
-
fallbackErrorMessage: 'Climate settings could not be loaded',
|
|
220
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ElementProps } from 'lib/element.js'
|
|
2
|
-
|
|
3
|
-
import type { CreateClimateSettingScheduleFormProps } from './CreateClimateSettingScheduleForm.js'
|
|
4
|
-
|
|
5
|
-
export const name = 'seam-create-climate-setting-schedule-form'
|
|
6
|
-
|
|
7
|
-
export const props: ElementProps<CreateClimateSettingScheduleFormProps> = {}
|
|
8
|
-
|
|
9
|
-
export { CreateClimateSettingScheduleForm as Component } from './CreateClimateSettingScheduleForm.js'
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { CommonProps } from 'lib/seam/components/common-props.js'
|
|
2
|
-
import { useCreateClimateSettingSchedule } from 'lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js'
|
|
3
|
-
import { useComponentTelemetry } from 'lib/telemetry/index.js'
|
|
4
|
-
import {
|
|
5
|
-
ClimateSettingScheduleForm,
|
|
6
|
-
type ClimateSettingScheduleFormSubmitData,
|
|
7
|
-
} from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js'
|
|
8
|
-
|
|
9
|
-
export interface CreateClimateSettingScheduleFormProps extends CommonProps {}
|
|
10
|
-
|
|
11
|
-
export function CreateClimateSettingScheduleForm({
|
|
12
|
-
className,
|
|
13
|
-
onBack,
|
|
14
|
-
}: CreateClimateSettingScheduleFormProps): JSX.Element | null {
|
|
15
|
-
useComponentTelemetry('CreateClimateSettingScheduleForm')
|
|
16
|
-
|
|
17
|
-
const { submit, isSubmitting } = useSubmitCreateClimateSettingSchedule(onBack)
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<ClimateSettingScheduleForm
|
|
21
|
-
className={className}
|
|
22
|
-
onBack={onBack}
|
|
23
|
-
onSubmit={submit}
|
|
24
|
-
isSubmitting={isSubmitting}
|
|
25
|
-
/>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function useSubmitCreateClimateSettingSchedule(onSuccess?: () => void): {
|
|
30
|
-
submit: (data: ClimateSettingScheduleFormSubmitData) => void
|
|
31
|
-
isSubmitting: boolean
|
|
32
|
-
} {
|
|
33
|
-
const { mutate, isPending: isSubmitting } = useCreateClimateSettingSchedule()
|
|
34
|
-
const submit = (data: ClimateSettingScheduleFormSubmitData): void => {
|
|
35
|
-
const { name, deviceId, startDate, endDate, climateSetting } = data
|
|
36
|
-
|
|
37
|
-
if (isSubmitting) {
|
|
38
|
-
return
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
mutate(
|
|
42
|
-
{
|
|
43
|
-
name,
|
|
44
|
-
device_id: deviceId,
|
|
45
|
-
schedule_starts_at: startDate,
|
|
46
|
-
schedule_ends_at: endDate,
|
|
47
|
-
...climateSetting,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
onSuccess,
|
|
51
|
-
}
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return { submit, isSubmitting }
|
|
56
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SeamHttpApiError,
|
|
3
|
-
ThermostatsClimateSettingSchedulesGetParams,
|
|
4
|
-
} from '@seamapi/http/connect'
|
|
5
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
6
|
-
import { useQuery } from '@tanstack/react-query'
|
|
7
|
-
|
|
8
|
-
import { useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
9
|
-
import type { UseSeamQueryResult } from 'lib/seam/use-seam-query-result.js'
|
|
10
|
-
|
|
11
|
-
export type UseClimateSettingScheduleParams =
|
|
12
|
-
ThermostatsClimateSettingSchedulesGetParams
|
|
13
|
-
|
|
14
|
-
export type UseClimateSettingScheduleData = ClimateSettingSchedule | null
|
|
15
|
-
|
|
16
|
-
export function useClimateSettingSchedule(
|
|
17
|
-
params: UseClimateSettingScheduleParams
|
|
18
|
-
): UseSeamQueryResult<'climateSettingSchedule', UseClimateSettingScheduleData> {
|
|
19
|
-
const { client } = useSeamClient()
|
|
20
|
-
|
|
21
|
-
const { data, ...rest } = useQuery<
|
|
22
|
-
UseClimateSettingScheduleData,
|
|
23
|
-
SeamHttpApiError
|
|
24
|
-
>({
|
|
25
|
-
enabled: client != null,
|
|
26
|
-
queryKey: ['thermostats', 'climate_setting_schedules', 'get', params],
|
|
27
|
-
queryFn: async () => {
|
|
28
|
-
if (client == null) return null
|
|
29
|
-
return await client.thermostats.climateSettingSchedules.get(params)
|
|
30
|
-
},
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
return { ...rest, climateSettingSchedule: data }
|
|
34
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SeamHttpApiError,
|
|
3
|
-
ThermostatsClimateSettingSchedulesListParams,
|
|
4
|
-
} from '@seamapi/http/connect'
|
|
5
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
6
|
-
import { useQuery, useQueryClient } from '@tanstack/react-query'
|
|
7
|
-
|
|
8
|
-
import { useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
9
|
-
import type { UseSeamQueryResult } from 'lib/seam/use-seam-query-result.js'
|
|
10
|
-
|
|
11
|
-
export type UseClimateSettingSchedulesParams =
|
|
12
|
-
ThermostatsClimateSettingSchedulesListParams
|
|
13
|
-
|
|
14
|
-
export type UseClimateSettingSchedulesData = ClimateSettingSchedule[]
|
|
15
|
-
|
|
16
|
-
export function useClimateSettingSchedules(
|
|
17
|
-
params: UseClimateSettingSchedulesParams
|
|
18
|
-
): UseSeamQueryResult<
|
|
19
|
-
'climateSettingSchedules',
|
|
20
|
-
UseClimateSettingSchedulesData
|
|
21
|
-
> {
|
|
22
|
-
const { client } = useSeamClient()
|
|
23
|
-
const queryClient = useQueryClient()
|
|
24
|
-
|
|
25
|
-
const { data, ...rest } = useQuery<
|
|
26
|
-
UseClimateSettingSchedulesData,
|
|
27
|
-
SeamHttpApiError
|
|
28
|
-
>({
|
|
29
|
-
enabled: client != null,
|
|
30
|
-
queryKey: ['thermostats', 'climate_setting_schedules', 'list', params],
|
|
31
|
-
queryFn: async () => {
|
|
32
|
-
if (client == null) return []
|
|
33
|
-
const climateSettingSchedules =
|
|
34
|
-
await client.thermostats.climateSettingSchedules.list(params)
|
|
35
|
-
for (const schedule of climateSettingSchedules) {
|
|
36
|
-
queryClient.setQueryData(
|
|
37
|
-
[
|
|
38
|
-
'thermostats',
|
|
39
|
-
'climate_setting_schedules',
|
|
40
|
-
'get',
|
|
41
|
-
{
|
|
42
|
-
climate_setting_schedule_id: schedule.climate_setting_schedule_id,
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
schedule
|
|
46
|
-
)
|
|
47
|
-
}
|
|
48
|
-
return climateSettingSchedules
|
|
49
|
-
},
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
return { ...rest, climateSettingSchedules: data }
|
|
53
|
-
}
|
package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SeamHttpApiError,
|
|
3
|
-
ThermostatsClimateSettingSchedulesCreateBody,
|
|
4
|
-
} from '@seamapi/http/connect'
|
|
5
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
6
|
-
import {
|
|
7
|
-
useMutation,
|
|
8
|
-
type UseMutationResult,
|
|
9
|
-
useQueryClient,
|
|
10
|
-
} from '@tanstack/react-query'
|
|
11
|
-
|
|
12
|
-
import { NullSeamClientError, useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
13
|
-
|
|
14
|
-
export type UseCreateClimateSettingScheduleParams = never
|
|
15
|
-
|
|
16
|
-
export type UseCreateClimateSettingScheduleData = ClimateSettingSchedule
|
|
17
|
-
|
|
18
|
-
export type UseCreateClimateSettingScheduleMutationVariables =
|
|
19
|
-
ThermostatsClimateSettingSchedulesCreateBody
|
|
20
|
-
|
|
21
|
-
export function useCreateClimateSettingSchedule(): UseMutationResult<
|
|
22
|
-
UseCreateClimateSettingScheduleData,
|
|
23
|
-
SeamHttpApiError,
|
|
24
|
-
UseCreateClimateSettingScheduleMutationVariables
|
|
25
|
-
> {
|
|
26
|
-
const { client } = useSeamClient()
|
|
27
|
-
const queryClient = useQueryClient()
|
|
28
|
-
|
|
29
|
-
return useMutation<
|
|
30
|
-
UseCreateClimateSettingScheduleData,
|
|
31
|
-
SeamHttpApiError,
|
|
32
|
-
UseCreateClimateSettingScheduleMutationVariables
|
|
33
|
-
>({
|
|
34
|
-
mutationFn: async (variables) => {
|
|
35
|
-
if (client === null) throw new NullSeamClientError()
|
|
36
|
-
return await client.thermostats.climateSettingSchedules.create(variables)
|
|
37
|
-
},
|
|
38
|
-
onSuccess: (data) => {
|
|
39
|
-
queryClient.setQueryData(
|
|
40
|
-
[
|
|
41
|
-
'thermostats',
|
|
42
|
-
'climate_setting_schedules',
|
|
43
|
-
'get',
|
|
44
|
-
{ climate_setting_schedules: data.climate_setting_schedule_id },
|
|
45
|
-
],
|
|
46
|
-
data
|
|
47
|
-
)
|
|
48
|
-
void queryClient.invalidateQueries({
|
|
49
|
-
queryKey: ['thermostats', 'climate_setting_schedules', 'list'],
|
|
50
|
-
})
|
|
51
|
-
},
|
|
52
|
-
})
|
|
53
|
-
}
|
package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SeamHttpApiError,
|
|
3
|
-
ThermostatsClimateSettingSchedulesDeleteParams,
|
|
4
|
-
} from '@seamapi/http/connect'
|
|
5
|
-
import {
|
|
6
|
-
useMutation,
|
|
7
|
-
type UseMutationResult,
|
|
8
|
-
useQueryClient,
|
|
9
|
-
} from '@tanstack/react-query'
|
|
10
|
-
|
|
11
|
-
import { NullSeamClientError, useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
12
|
-
|
|
13
|
-
export type UseDeleteClimateSettingScheduleParams = never
|
|
14
|
-
|
|
15
|
-
export type UseDeleteClimateSettingScheduleData = undefined
|
|
16
|
-
|
|
17
|
-
export type UseDeleteClimateSettingScheduleMutationVariables =
|
|
18
|
-
ThermostatsClimateSettingSchedulesDeleteParams
|
|
19
|
-
|
|
20
|
-
export function useDeleteClimateSettingSchedule(): UseMutationResult<
|
|
21
|
-
UseDeleteClimateSettingScheduleData,
|
|
22
|
-
SeamHttpApiError,
|
|
23
|
-
UseDeleteClimateSettingScheduleMutationVariables
|
|
24
|
-
> {
|
|
25
|
-
const { client } = useSeamClient()
|
|
26
|
-
const queryClient = useQueryClient()
|
|
27
|
-
|
|
28
|
-
return useMutation<
|
|
29
|
-
UseDeleteClimateSettingScheduleData,
|
|
30
|
-
SeamHttpApiError,
|
|
31
|
-
UseDeleteClimateSettingScheduleMutationVariables
|
|
32
|
-
>({
|
|
33
|
-
mutationFn: async (variables) => {
|
|
34
|
-
if (client === null) throw new NullSeamClientError()
|
|
35
|
-
await client.thermostats.climateSettingSchedules.delete(variables)
|
|
36
|
-
},
|
|
37
|
-
onSuccess: (_data, variables) => {
|
|
38
|
-
void queryClient.invalidateQueries({
|
|
39
|
-
queryKey: [
|
|
40
|
-
'thermostats',
|
|
41
|
-
'climate_setting_schedules',
|
|
42
|
-
'get',
|
|
43
|
-
{ climate_setting_schedules: variables.climate_setting_schedule_id },
|
|
44
|
-
],
|
|
45
|
-
})
|
|
46
|
-
void queryClient.invalidateQueries({
|
|
47
|
-
queryKey: ['thermostats', 'climate_setting_schedules', 'list'],
|
|
48
|
-
})
|
|
49
|
-
},
|
|
50
|
-
})
|
|
51
|
-
}
|
package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SeamHttpApiError,
|
|
3
|
-
ThermostatsClimateSettingSchedulesUpdateBody,
|
|
4
|
-
} from '@seamapi/http/connect'
|
|
5
|
-
import type { ClimateSettingSchedule } from '@seamapi/types/connect'
|
|
6
|
-
import {
|
|
7
|
-
useMutation,
|
|
8
|
-
type UseMutationResult,
|
|
9
|
-
useQueryClient,
|
|
10
|
-
} from '@tanstack/react-query'
|
|
11
|
-
|
|
12
|
-
import { shake } from 'lib/object.js'
|
|
13
|
-
import { NullSeamClientError, useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
14
|
-
|
|
15
|
-
export type UseUpdateClimateSettingScheduleParams = never
|
|
16
|
-
|
|
17
|
-
export type UseUpdateClimateSettingScheduleData = undefined
|
|
18
|
-
|
|
19
|
-
export type UseUpdateClimateSettingScheduleMutationVariables =
|
|
20
|
-
ThermostatsClimateSettingSchedulesUpdateBody
|
|
21
|
-
|
|
22
|
-
export function useUpdateClimateSettingSchedule(): UseMutationResult<
|
|
23
|
-
UseUpdateClimateSettingScheduleData,
|
|
24
|
-
SeamHttpApiError,
|
|
25
|
-
UseUpdateClimateSettingScheduleMutationVariables
|
|
26
|
-
> {
|
|
27
|
-
const { client } = useSeamClient()
|
|
28
|
-
const queryClient = useQueryClient()
|
|
29
|
-
|
|
30
|
-
return useMutation<
|
|
31
|
-
UseUpdateClimateSettingScheduleData,
|
|
32
|
-
SeamHttpApiError,
|
|
33
|
-
UseUpdateClimateSettingScheduleMutationVariables
|
|
34
|
-
>({
|
|
35
|
-
mutationFn: async (variables) => {
|
|
36
|
-
if (client === null) throw new NullSeamClientError()
|
|
37
|
-
await client.thermostats.climateSettingSchedules.update(variables)
|
|
38
|
-
},
|
|
39
|
-
onSuccess: (_data, variables) => {
|
|
40
|
-
queryClient.setQueryData<ClimateSettingSchedule | null>(
|
|
41
|
-
[
|
|
42
|
-
'thermostats',
|
|
43
|
-
'climate_setting_schedules',
|
|
44
|
-
'get',
|
|
45
|
-
{ climate_setting_schedules: variables.climate_setting_schedule_id },
|
|
46
|
-
],
|
|
47
|
-
(climateSettingSchedule) => {
|
|
48
|
-
if (climateSettingSchedule == null) {
|
|
49
|
-
return
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
...climateSettingSchedule,
|
|
54
|
-
...shake(variables),
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
queryClient.setQueryData<ClimateSettingSchedule[]>(
|
|
60
|
-
['thermostats', 'climate_setting_schedules', 'list'],
|
|
61
|
-
(climateSettingSchedules) => {
|
|
62
|
-
if (climateSettingSchedules == null) {
|
|
63
|
-
return climateSettingSchedules
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return climateSettingSchedules.map((climateSettingSchedule) => {
|
|
67
|
-
if (
|
|
68
|
-
climateSettingSchedule.climate_setting_schedule_id ===
|
|
69
|
-
variables.climate_setting_schedule_id
|
|
70
|
-
) {
|
|
71
|
-
return {
|
|
72
|
-
...climateSettingSchedule,
|
|
73
|
-
...shake(variables),
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return climateSettingSchedule
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
},
|
|
82
|
-
})
|
|
83
|
-
}
|