Skip to content

Commit 74c3a3d

Browse files
Merge pull request #37 from OpenDTU-App/35-move-graphs-into-separate-tab
2 parents f18454d + 092c4c9 commit 74c3a3d

File tree

4 files changed

+71
-44
lines changed

4 files changed

+71
-44
lines changed

src/translations/translation-files

src/views/navigation/NavigationTabs.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import {
88

99
import useHasNewAppVersion from '@/hooks/useHasNewAppVersion';
1010

11+
import GraphTab from '@/views/navigation/tabs/GraphTab';
1112
import LivedataTab from '@/views/navigation/tabs/LivedataTab';
1213
import MainSettingsTab from '@/views/navigation/tabs/MainSettingsTab';
1314

1415
const LivedataRoute = () => <LivedataTab />;
15-
1616
const SettingsRoute = () => <MainSettingsTab />;
17+
const GraphRoute = () => <GraphTab />;
1718

1819
type BaseRoutes = ComponentProps<
1920
typeof BottomNavigationPaper
@@ -35,6 +36,11 @@ const BottomNavigation: FC = () => {
3536
title: t('navigation.livedata'),
3637
focusedIcon: 'solar-power',
3738
},
39+
{
40+
key: 'graph',
41+
title: t('navigation.graph'),
42+
focusedIcon: 'chart-line',
43+
},
3844
{
3945
key: 'settings',
4046
title: t('navigation.settings'),
@@ -47,6 +53,7 @@ const BottomNavigation: FC = () => {
4753

4854
const renderScene = BottomNavigationPaper.SceneMap({
4955
livedata: LivedataRoute,
56+
graph: GraphRoute,
5057
settings: SettingsRoute,
5158
});
5259

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { useCallback, useEffect, useState } from 'react';
2+
import { RefreshControl } from 'react-native';
3+
import { useTheme } from 'react-native-paper';
4+
5+
import ImportantCharts from '@/components/Charts/ImportantCharts';
6+
import DeviceOfflineWrapper from '@/components/DeviceOfflineWrapper';
7+
8+
import {
9+
useDatabase,
10+
useDatabaseIsFetching,
11+
useRefreshDatabase,
12+
} from '@/database';
13+
import { StyledSafeAreaView, StyledScrollView } from '@/style';
14+
15+
const LivedataTab = () => {
16+
const theme = useTheme();
17+
18+
const [isRefreshing, setIsRefreshing] = useState<boolean>(false);
19+
20+
const refreshing = useDatabaseIsFetching();
21+
const triggerRefresh = useRefreshDatabase();
22+
const database = useDatabase();
23+
24+
const handleRefresh = useCallback(() => {
25+
if (!database) return;
26+
27+
triggerRefresh?.();
28+
setIsRefreshing(true);
29+
}, [database, triggerRefresh]);
30+
31+
useEffect(() => {
32+
if (!refreshing) {
33+
setIsRefreshing(false);
34+
}
35+
}, [refreshing]);
36+
37+
return (
38+
<StyledSafeAreaView theme={theme}>
39+
<DeviceOfflineWrapper>
40+
<StyledScrollView
41+
theme={theme}
42+
refreshControl={
43+
database ? (
44+
<RefreshControl
45+
refreshing={isRefreshing}
46+
onRefresh={handleRefresh}
47+
colors={[theme.colors.primary]}
48+
progressBackgroundColor={theme.colors.elevation.level3}
49+
tintColor={theme.colors.primary}
50+
/>
51+
) : undefined
52+
}
53+
>
54+
<ImportantCharts />
55+
</StyledScrollView>
56+
</DeviceOfflineWrapper>
57+
</StyledSafeAreaView>
58+
);
59+
};
60+
61+
export default LivedataTab;

src/views/navigation/tabs/LivedataTab.tsx

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,20 @@
1-
import { useCallback, useEffect, useState } from 'react';
2-
import { RefreshControl } from 'react-native';
31
import { useTheme } from 'react-native-paper';
42

5-
import ImportantCharts from '@/components/Charts/ImportantCharts';
63
import DeviceOfflineWrapper from '@/components/DeviceOfflineWrapper';
74
import DeviceStatus from '@/components/DeviceStatus';
85
import ImportantStatusValues from '@/components/ImportantStatusValues';
96

10-
import {
11-
useDatabase,
12-
useDatabaseIsFetching,
13-
useRefreshDatabase,
14-
} from '@/database';
157
import { StyledSafeAreaView, StyledScrollView } from '@/style';
168

179
const LivedataTab = () => {
1810
const theme = useTheme();
1911

20-
const [isRefreshing, setIsRefreshing] = useState<boolean>(false);
21-
22-
const refreshing = useDatabaseIsFetching();
23-
const triggerRefresh = useRefreshDatabase();
24-
const database = useDatabase();
25-
26-
const handleRefresh = useCallback(() => {
27-
if (!database) return;
28-
29-
triggerRefresh?.();
30-
setIsRefreshing(true);
31-
}, [database, triggerRefresh]);
32-
33-
useEffect(() => {
34-
if (!refreshing) {
35-
setIsRefreshing(false);
36-
}
37-
}, [refreshing]);
38-
3912
return (
4013
<StyledSafeAreaView theme={theme}>
4114
<DeviceOfflineWrapper>
42-
<StyledScrollView
43-
theme={theme}
44-
refreshControl={
45-
database ? (
46-
<RefreshControl
47-
refreshing={isRefreshing}
48-
onRefresh={handleRefresh}
49-
colors={[theme.colors.primary]}
50-
progressBackgroundColor={theme.colors.elevation.level3}
51-
tintColor={theme.colors.primary}
52-
/>
53-
) : undefined
54-
}
55-
>
15+
<StyledScrollView theme={theme}>
5616
<DeviceStatus />
5717
<ImportantStatusValues />
58-
<ImportantCharts />
5918
</StyledScrollView>
6019
</DeviceOfflineWrapper>
6120
</StyledSafeAreaView>

0 commit comments

Comments
 (0)