Browse Source

Added bluemind screen, reworked sidemenu and changed planex default zoom

keplyx 4 years ago
parent
commit
1816175659

+ 0
- 8
components/CustomHeader.js View File

@@ -98,14 +98,6 @@ export default class CustomHeader extends React.Component<Props> {
98 98
                 </Body>
99 99
                 <Right style={{flex: this.props.hasSearchField ? 0 : 1}}>
100 100
                     {this.props.rightButton}
101
-                    {this.props.hasBackButton ? <View/> :
102
-                        <Touchable
103
-                            style={{padding: 6}}
104
-                            onPress={() => this.props.navigation.navigate('SettingsScreen')}>
105
-                            <CustomMaterialIcon
106
-                                color={Platform.OS === 'ios' ? ThemeManager.getCurrentThemeVariables().brandPrimary : "#fff"}
107
-                                icon="settings"/>
108
-                        </Touchable>}
109 101
                 </Right>
110 102
             </Header>);
111 103
     }

+ 73
- 37
components/Sidebar.js View File

@@ -42,6 +42,10 @@ export default class SideBar extends React.Component<Props, State> {
42 42
         // If the link field is defined, clicking on the item will open the link
43 43
         this.dataSet = [
44 44
             {
45
+                name: i18n.t('sidenav.divider1'),
46
+                route: "Divider1"
47
+            },
48
+            {
45 49
                 name: "Amicale",
46 50
                 route: "AmicaleScreen",
47 51
                 icon: "web",
@@ -62,6 +66,15 @@ export default class SideBar extends React.Component<Props, State> {
62 66
                 icon: "school",
63 67
             },
64 68
             {
69
+                name: "Mails BlueMind",
70
+                route: "BlueMindScreen",
71
+                icon: "email",
72
+            },
73
+            {
74
+                name: i18n.t('sidenav.divider2'),
75
+                route: "Divider2"
76
+            },
77
+            {
65 78
                 name: i18n.t('screens.availableRooms'),
66 79
                 route: "AvailableRoomScreen",
67 80
                 icon: "calendar-check",
@@ -71,9 +84,68 @@ export default class SideBar extends React.Component<Props, State> {
71 84
                 route: "SelfMenuScreen",
72 85
                 icon: "silverware-fork-knife",
73 86
             },
87
+            {
88
+                name: i18n.t('sidenav.divider3'),
89
+                route: "Divider3"
90
+            },
91
+            {
92
+                name: i18n.t('screens.settings'),
93
+                route: "SettingsScreen",
94
+                icon: "settings",
95
+            },
74 96
         ];
75 97
     }
76 98
 
99
+    getRenderItem(item: Object) {
100
+        if (item.icon !== undefined) {
101
+            return (
102
+                <ListItem
103
+                    button
104
+                    noBorder
105
+                    selected={this.state.active === item.route}
106
+                    onPress={() => {
107
+                        if (item.link !== undefined)
108
+                            Linking.openURL(item.link).catch((err) => console.error('Error opening link', err));
109
+                        else
110
+                            this.navigateToScreen(item.route);
111
+                    }}
112
+                >
113
+                    <Left>
114
+                        <CustomMaterialIcon
115
+                            icon={item.icon}
116
+                            active={this.state.active === item.route}
117
+                        />
118
+                        <Text style={styles.text}>
119
+                            {item.name}
120
+                        </Text>
121
+                    </Left>
122
+                    {item.types &&
123
+                    <Right style={{flex: 1}}>
124
+                        <Badge
125
+                            style={{
126
+                                borderRadius: 3,
127
+                                height: 25,
128
+                                width: 72,
129
+                                backgroundColor: item.bg
130
+                            }}
131
+                        >
132
+                            <Text
133
+                                style={styles.badgeText}
134
+                            >{`${item.types} Types`}</Text>
135
+                        </Badge>
136
+                    </Right>}
137
+                </ListItem>
138
+            );
139
+        } else {
140
+            return (
141
+                <ListItem itemDivider>
142
+                    <Text>{item.name}</Text>
143
+                </ListItem>
144
+            );
145
+        }
146
+
147
+    }
148
+
77 149
     /**
78 150
      * Navigate to the selected route
79 151
      * @param route {string} The route name to navigate to
@@ -92,43 +164,7 @@ export default class SideBar extends React.Component<Props, State> {
92 164
                     data={this.dataSet}
93 165
                     extraData={this.state}
94 166
                     keyExtractor={(item) => item.route}
95
-                    renderItem={({item}) =>
96
-                        <ListItem
97
-                            button
98
-                            noBorder
99
-                            selected={this.state.active === item.route}
100
-                            onPress={() => {
101
-                                if (item.link !== undefined)
102
-                                    Linking.openURL(item.link).catch((err) => console.error('Error opening link', err));
103
-                                else
104
-                                    this.navigateToScreen(item.route);
105
-                            }}
106
-                        >
107
-                            <Left>
108
-                                <CustomMaterialIcon
109
-                                    icon={item.icon}
110
-                                    active={this.state.active === item.route}
111
-                                />
112
-                                <Text style={styles.text}>
113
-                                    {item.name}
114
-                                </Text>
115
-                            </Left>
116
-                            {item.types &&
117
-                            <Right style={{flex: 1}}>
118
-                                <Badge
119
-                                    style={{
120
-                                        borderRadius: 3,
121
-                                        height: 25,
122
-                                        width: 72,
123
-                                        backgroundColor: item.bg
124
-                                    }}
125
-                                >
126
-                                    <Text
127
-                                        style={styles.badgeText}
128
-                                    >{`${item.types} Types`}</Text>
129
-                                </Badge>
130
-                            </Right>}
131
-                        </ListItem>}
167
+                    renderItem={({item}) => this.getRenderItem(item)}
132 168
                 />
133 169
             </Container>
134 170
         );

+ 1
- 1
native-base-theme/variables/platform.js View File

@@ -250,7 +250,7 @@ export default {
250 250
   // List
251 251
   listBg: 'transparent',
252 252
   listBorderColor: '#c9c9c9',
253
-  listDividerBg: '#f4f4f4',
253
+  listDividerBg: '#e2e2e2',
254 254
   listBtnUnderlayColor: '#DDD',
255 255
   listItemPadding: platform === PLATFORM.IOS ? 10 : 12,
256 256
   listNoteColor: '#808080',

+ 1
- 1
native-base-theme/variables/platformDark.js View File

@@ -250,7 +250,7 @@ export default {
250 250
   // List
251 251
   listBg: 'transparent',
252 252
   listBorderColor: '#3e3e3e',
253
-  listDividerBg: '#f4f4f4',
253
+  listDividerBg: '#222222',
254 254
   listBtnUnderlayColor: '#3a3a3a',
255 255
   listItemPadding: platform === PLATFORM.IOS ? 10 : 12,
256 256
   listNoteColor: '#acacac',

+ 7
- 5
navigation/AppNavigator.js View File

@@ -9,11 +9,12 @@ import AboutDependenciesScreen from '../screens/About/AboutDependenciesScreen';
9 9
 import ProxiwashAboutScreen from '../screens/Proxiwash/ProxiwashAboutScreen';
10 10
 import ProximoAboutScreen from '../screens/Proximo/ProximoAboutScreen';
11 11
 import SelfMenuScreen from '../screens/SelfMenuScreen';
12
-import TutorInsaScreen from "../screens/TutorInsaScreen";
13
-import AmicaleScreen from "../screens/AmicaleScreen";
14
-import WiketudScreen from "../screens/WiketudScreen";
15
-import ElusEtudScreen from "../screens/ElusEtudScreen";
16
-import AvailableRoomScreen from "../screens/AvailableRoomScreen";
12
+import TutorInsaScreen from "../screens/Websites/TutorInsaScreen";
13
+import AmicaleScreen from "../screens/Websites/AmicaleScreen";
14
+import WiketudScreen from "../screens/Websites/WiketudScreen";
15
+import ElusEtudScreen from "../screens/Websites/ElusEtudScreen";
16
+import BlueMindScreen from "../screens/Websites/BlueMindScreen";
17
+import AvailableRoomScreen from "../screens/Websites/AvailableRoomScreen";
17 18
 import DebugScreen from '../screens/DebugScreen';
18 19
 import {fromRight} from "react-navigation-transitions";
19 20
 
@@ -35,6 +36,7 @@ function createAppContainerWithInitialRoute(initialRoute: string) {
35 36
                 AmicaleScreen: {screen: AmicaleScreen},
36 37
                 WiketudScreen: {screen: WiketudScreen},
37 38
                 ElusEtudScreen: {screen: ElusEtudScreen},
39
+                BlueMindScreen: {screen: BlueMindScreen},
38 40
                 AvailableRoomScreen: {screen: AvailableRoomScreen},
39 41
                 ProxiwashAboutScreen: {screen: ProxiwashAboutScreen},
40 42
                 ProximoAboutScreen: {screen: ProximoAboutScreen},

+ 1
- 1
navigation/MainDrawerNavigator.js View File

@@ -7,7 +7,7 @@ import HomeScreen from '../screens/HomeScreen';
7 7
 import PlanningScreen from '../screens/PlanningScreen';
8 8
 import ProxiwashScreen from '../screens/Proxiwash/ProxiwashScreen';
9 9
 import ProximoMainScreen from '../screens/Proximo/ProximoMainScreen';
10
-import PlanexScreen from '../screens/PlanexScreen';
10
+import PlanexScreen from '../screens/Websites/PlanexScreen';
11 11
 import SettingsScreen from '../screens/SettingsScreen';
12 12
 import AboutScreen from '../screens/About/AboutScreen';
13 13
 import Sidebar from "../components/Sidebar";

+ 1
- 1
navigation/MainTabNavigator.js View File

@@ -5,7 +5,7 @@ import HomeScreen from '../screens/HomeScreen';
5 5
 import PlanningScreen from '../screens/PlanningScreen';
6 6
 import ProxiwashScreen from '../screens/Proxiwash/ProxiwashScreen';
7 7
 import ProximoMainScreen from '../screens/Proximo/ProximoMainScreen';
8
-import PlanexScreen from '../screens/PlanexScreen';
8
+import PlanexScreen from '../screens/Websites/PlanexScreen';
9 9
 import CustomMaterialIcon from "../components/CustomMaterialIcon";
10 10
 import ThemeManager from "../utils/ThemeManager";
11 11
 import AsyncStorageManager from "../utils/AsyncStorageManager";

+ 1
- 1
screens/About/AboutScreen.js View File

@@ -39,7 +39,7 @@ const links = {
39 39
         "Application Amicale INSA Toulouse" +
40 40
         "&body=" +
41 41
         "Coucou !\n\n",
42
-    yohanLinkedin: 'https://www.linkedin.com/in/yohan-simard', // TODO set real link
42
+    yohanLinkedin: 'https://www.linkedin.com/in/yohan-simard',
43 43
     react: 'https://facebook.github.io/react-native/',
44 44
 };
45 45
 

screens/AmicaleScreen.js → screens/Websites/AmicaleScreen.js View File

@@ -1,8 +1,8 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import ThemeManager from "../utils/ThemeManager";
5
-import WebViewScreen from "../components/WebViewScreen";
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6 6
 
7 7
 type Props = {
8 8
     navigation: Object,

screens/AvailableRoomScreen.js → screens/Websites/AvailableRoomScreen.js View File

@@ -1,7 +1,7 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import WebViewScreen from "../components/WebViewScreen";
4
+import WebViewScreen from "../../components/WebViewScreen";
5 5
 import i18n from "i18n-js";
6 6
 
7 7
 type Props = {

+ 53
- 0
screens/Websites/BlueMindScreen.js View File

@@ -0,0 +1,53 @@
1
+// @flow
2
+
3
+import * as React from 'react';
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6
+import i18n from "i18n-js";
7
+
8
+type Props = {
9
+    navigation: Object,
10
+}
11
+
12
+
13
+const URL = 'https://etud-mel.insa-toulouse.fr/webmail/';
14
+
15
+const CUSTOM_CSS_GENERAL = '';
16
+
17
+
18
+/**
19
+ * Class defining the app's planex screen.
20
+ * This screen uses a webview to render the planex page
21
+ */
22
+export default class AmicaleScreen extends React.Component<Props> {
23
+
24
+    customInjectedJS: string;
25
+
26
+    constructor() {
27
+        super();
28
+        this.customInjectedJS =
29
+            '$(document).ready(function() {' +
30
+            '$("head").append(\'<meta name="viewport" content="width=device-width, initial-scale=1.0">\');' +
31
+            '$("head").append(\'<link rel="stylesheet" href="' + CUSTOM_CSS_GENERAL + '" type="text/css"/>\');true;';
32
+    }
33
+
34
+    render() {
35
+        const nav = this.props.navigation;
36
+        return (
37
+            <WebViewScreen
38
+                navigation={nav}
39
+                data={[
40
+                    {
41
+                        url: URL,
42
+                        icon: '',
43
+                        name: '',
44
+                        customJS: ''
45
+                    },
46
+                ]}
47
+                headerTitle={'Mails BlueMind'}
48
+                hasHeaderBackButton={true}
49
+                hasSideMenu={false}/>
50
+        );
51
+    }
52
+}
53
+

screens/ElusEtudScreen.js → screens/Websites/ElusEtudScreen.js View File

@@ -1,8 +1,8 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import ThemeManager from "../utils/ThemeManager";
5
-import WebViewScreen from "../components/WebViewScreen";
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6 6
 
7 7
 type Props = {
8 8
     navigation: Object,

screens/PlanexScreen.js → screens/Websites/PlanexScreen.js View File

@@ -1,8 +1,8 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import ThemeManager from "../utils/ThemeManager";
5
-import WebViewScreen from "../components/WebViewScreen";
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6 6
 import i18n from "i18n-js";
7 7
 
8 8
 type Props = {
@@ -73,7 +73,7 @@ export default class PlanexScreen extends React.Component<Props> {
73 73
         this.customInjectedJS =
74 74
             '$(document).ready(function() {' +
75 75
             OBSERVE_MUTATIONS_INJECTED +
76
-            '$("head").append(\'<meta name="viewport" content="width=device-width, initial-scale=1.0">\');' +
76
+            '$("head").append(\'<meta name="viewport" content="width=device-width, initial-scale=0.8">\');' +
77 77
             '$("head").append(\'<link rel="stylesheet" href="' + CUSTOM_CSS_GENERAL + '" type="text/css"/>\');';
78 78
 
79 79
         if (ThemeManager.getNightMode())

screens/TutorInsaScreen.js → screens/Websites/TutorInsaScreen.js View File

@@ -1,8 +1,8 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import ThemeManager from "../utils/ThemeManager";
5
-import WebViewScreen from "../components/WebViewScreen";
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6 6
 
7 7
 type Props = {
8 8
     navigation: Object,

screens/WiketudScreen.js → screens/Websites/WiketudScreen.js View File

@@ -1,8 +1,8 @@
1 1
 // @flow
2 2
 
3 3
 import * as React from 'react';
4
-import ThemeManager from "../utils/ThemeManager";
5
-import WebViewScreen from "../components/WebViewScreen";
4
+import ThemeManager from "../../utils/ThemeManager";
5
+import WebViewScreen from "../../components/WebViewScreen";
6 6
 
7 7
 type Props = {
8 8
     navigation: Object,

+ 5
- 0
translations/en.json View File

@@ -10,6 +10,11 @@
10 10
     "about": "About",
11 11
     "debug": "Debug"
12 12
   },
13
+  "sidenav": {
14
+    "divider1": "Nice websites",
15
+    "divider2": "Useful services",
16
+    "divider3": "Personalisation"
17
+  },
13 18
   "intro": {
14 19
     "slide1": {
15 20
       "title": "Welcome to CAMPUS",

+ 5
- 0
translations/fr.json View File

@@ -10,6 +10,11 @@
10 10
     "about": "À Propos",
11 11
     "debug": "Debug"
12 12
   },
13
+  "sidenav": {
14
+    "divider1": "Sites bien",
15
+    "divider2": "Services utiles",
16
+    "divider3": "Personnalisation"
17
+  },
13 18
   "intro": {
14 19
     "slide1": {
15 20
       "title": "Bienvenue sur CAMPUS",

Loading…
Cancel
Save