Skip to content

Commit 2d2e685

Browse files
committed
Carleton menus tab
1 parent 7e8a0d6 commit 2d2e685

File tree

4 files changed

+89
-1
lines changed

4 files changed

+89
-1
lines changed

app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import HomeView from './views/home'
2828
import MapView from './views/map'
2929
import StreamingView from './views/streaming'
3030
import {MenusView} from './views/menus'
31+
import {BonAppHostedMenu} from './views/menus/menu-bonapp'
3132
import {FilterView} from './views/components/filter'
3233
import NewsView from './views/news'
3334
import NewsItemView from './views/news/news-item'
@@ -54,6 +55,7 @@ function renderScene(route, navigator) {
5455
switch (route.id) {
5556
case 'HomeView': return <HomeView {...props} />
5657
case 'MenusView': return <MenusView {...props} />
58+
case 'BonAppHostedMenu': return <BonAppHostedMenu {...props} />
5759
case 'FilterView': return <FilterView {...props} />
5860
case 'DirectoryView': return <DirectoryView {...props} />
5961
case 'CalendarView': return <CalendarView {...props} />

views/menus/carleton-list.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// @flow
2+
import React from 'react'
3+
import {View, Platform, ScrollView, StyleSheet} from 'react-native'
4+
import type {TopLevelViewPropsType} from '../types'
5+
import type {CarletonDetailMenuType} from './types'
6+
import {Row} from '../components/layout'
7+
import {ListRow, ListSeparator, Title} from '../components/list'
8+
import {NoticeView} from '../components/notice'
9+
10+
import {carleton} from './tabs'
11+
12+
const styles = StyleSheet.create({
13+
rowText: {
14+
paddingVertical: 6,
15+
},
16+
})
17+
18+
export class CarletonMenuPicker extends React.Component {
19+
props: TopLevelViewPropsType;
20+
21+
onPressRow = (data: CarletonDetailMenuType) => {
22+
let name = data.title
23+
let id = data.props.cafeId
24+
25+
this.props.navigator.push({
26+
id: 'BonAppHostedMenu',
27+
title: name,
28+
backButtonTitle: 'Carleton',
29+
index: this.props.route.index + 1,
30+
props: {
31+
name: name,
32+
loadingMessage: data.props.loadingMessage,
33+
cafeId: id,
34+
},
35+
})
36+
}
37+
38+
renderCafes = () => {
39+
if (!carleton) {
40+
return <NoticeView text={'No Carleton Cafes to choose.'} />
41+
}
42+
43+
return (
44+
<ScrollView style={{paddingTop: Platform.OS === 'ios' ? 20 : 0}}>
45+
{carleton.map((loc: CarletonDetailMenuType, i, collection) =>
46+
<View key={`${i}`}>
47+
<ListRow
48+
onPress={() => this.onPressRow(loc)}
49+
arrowPosition='center'>
50+
<Row alignItems='center'>
51+
<Title style={styles.rowText}>{loc.title}</Title>
52+
</Row>
53+
</ListRow>
54+
{i < collection.length - 1 ? <ListSeparator spacing={{left: 15}} /> : null}
55+
</View>
56+
)}
57+
</ScrollView>
58+
)
59+
}
60+
61+
render() {
62+
let cafeList = this.renderCafes()
63+
return (
64+
<View style={{flex: 1}}>
65+
{cafeList}
66+
</View>
67+
)
68+
}
69+
}

views/menus/tabs.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// @flow
22
import {BonAppHostedMenu} from './menu-bonapp'
33
import {GitHubHostedMenu} from './menu-github'
4-
// import {BonAppPickerView} from './dev-bonapp-picker'
4+
import {CarletonMenuPicker} from './carleton-list'
5+
//import {BonAppPickerView} from './dev-bonapp-picker'
56

67
const stolaf = [
78
{
@@ -46,6 +47,15 @@ const stolaf = [
4647
],
4748
},
4849
},
50+
{
51+
id: 'CarletonMenuListView',
52+
title: 'Carleton',
53+
rnVectorIcon: {iconName: 'menu'},
54+
component: CarletonMenuPicker,
55+
props: {
56+
name: 'carleton',
57+
},
58+
},
4959
// {
5060
// id: 'BonAppDevToolView',
5161
// title: 'BonApp',

views/menus/types.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ export type CafeMenuType = {
6262
dayparts: DayPartsCollectionType,
6363
};
6464

65+
export type CarletonDetailMenuType = {
66+
component: any,
67+
id: string,
68+
props: {cafeId: number, loadingMessage: Array<string>},
69+
title: string,
70+
};
71+
6572
export type MenuForDayType = {
6673
date: string,
6774
cafes: {[key: string]: CafeMenuType},

0 commit comments

Comments
 (0)