Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.78 KB | None | 0 0
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import {Panel, PanelHeader, HeaderButton, PanelSpinner, Switch, FormStatus, Separator, PullToRefresh, HeaderContext, PanelHeaderContent, Header, Alert, Tooltip, Input, Tappable, Select, Textarea, Checkbox, FormLayout, HorizontalScroll, Search, ScreenSpinner, Link, ListItem, UsersStack, Epic, Div, CellButton, FixedLayout, TabbarItem, Tabbar, platform, TabsItem, Tabs, IOS, Cell, List, View, Group, Footer, Avatar, Button} from '@vkontakte/vkui';
  4. import Icon28ChevronBack from '@vkontakte/icons/dist/28/chevron_back';
  5. import Icon24Back from '@vkontakte/icons/dist/24/back';
  6. import Icon24Mention from '@vkontakte/icons/dist/24/mention';
  7. import Icon24User from '@vkontakte/icons/dist/24/user';
  8. import Icon24Add from '@vkontakte/icons/dist/24/add';
  9. import connect from '@vkontakte/vkui-connect';
  10. import Icon24List from '@vkontakte/icons/dist/24/list';
  11. import Icon28AddOutline from '@vkontakte/icons/dist/28/add_outline';
  12. import Icon24Filter from '@vkontakte/icons/dist/24/filter';
  13. import Icon28Settings from '@vkontakte/icons/dist/28/settings';
  14. import Icon28Write from '@vkontakte/icons/dist/28/write';
  15. import Icon24Write from '@vkontakte/icons/dist/24/write';
  16. import Icon24Services from '@vkontakte/icons/dist/24/services';
  17. import Icon24Settings from '@vkontakte/icons/dist/24/settings';
  18. import Icon24Search from '@vkontakte/icons/dist/24/search';
  19. import Icon24Info from '@vkontakte/icons/dist/24/info';
  20. import rec from '../img/rec.png';
  21. import Icon24Done from '@vkontakte/icons/dist/24/done';
  22. import Icon16Dropdown from '@vkontakte/icons/dist/16/dropdown';
  23. import Icon28More from '@vkontakte/icons/dist/28/more';
  24. import Icon28KeyboardBotsOutline from '@vkontakte/icons/dist/28/keyboard_bots_outline';
  25. import rezept from '../rezept/rezept.json';
  26. import Icon24Newsfeed from '@vkontakte/icons/dist/24/newsfeed';
  27. import Icon24Favorite from '@vkontakte/icons/dist/24/favorite';
  28. import Icon28Favorite from '@vkontakte/icons/dist/28/favorite';
  29. import Icon24Recent from '@vkontakte/icons/dist/24/recent';
  30. import Icon24Flash from '@vkontakte/icons/dist/24/flash';
  31. import './assets/css/style.css';
  32. import Icon28HelpOutline from '@vkontakte/icons/dist/28/help_outline';
  33. import Icon28InfoOutline from '@vkontakte/icons/dist/28/info_outline';
  34.  
  35. function openTab(url) {
  36.  
  37. // Create link in memory
  38.  
  39. let a = window.document.createElement("a");
  40.  
  41. a.target = '_blank';
  42.  
  43. a.href = url;
  44.  
  45. // Dispatch fake click
  46.  
  47. let e = window.document.createEvent("MouseEvents");
  48.  
  49. e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  50.  
  51. a.dispatchEvent(e);
  52.  
  53. };
  54.  
  55.  
  56. const osname = platform();
  57. let thematics = [
  58. {
  59. "name": "Сырная соломка",
  60. "to" : "cip"
  61. },
  62. {
  63. "name": "Пончики ",
  64. "to" : "apelcin"
  65. },
  66. {
  67. "name": "Бразильский лимонад",
  68. "to" : "braz"
  69. },
  70. {
  71. "name": "Домашний лимонад",
  72. "to": "limon"
  73. },
  74. {
  75. "name": "Апельсиновый напиток",
  76. "to": "sok"
  77. },
  78. {
  79. "name": "Сырные лепешки",
  80. "to": "persik"
  81. },
  82. {
  83. "name": "Блинные булочки",
  84. "to": "pet"
  85. },
  86. {
  87. "name": "Запеканка творожная",
  88. "to": "zapek"
  89. },
  90. {
  91. "name": "Венгерская ватрушка",
  92. "to": "veng"
  93. },
  94. {
  95. "name": "Тульский пряник",
  96. "to": "tul"
  97. },
  98. {
  99. "name": "Картофель в духовке",
  100. "to": "mys"
  101. },
  102. {
  103. "name": "Суп-пюре из кабачков",
  104. "to": "pyr"
  105. },
  106. {
  107. "name": "Свинина по-барски",
  108. "to": "svin"
  109. },
  110. {
  111. "name": "Лаханоризо",
  112. "to": "pirog"
  113. },
  114. {
  115. "name": "Чипсы",
  116. "to": "chik"
  117. },
  118. {
  119. "name": "Пирог",
  120. "to": "house"
  121. },
  122. {
  123. "name": "Постные котлеты",
  124. "to": "okr"
  125. },
  126. {
  127. "name": "Макароны по-флотски",
  128. "to": "lol"
  129. }
  130. ]
  131.  
  132. class Home extends React.Component{
  133. constructor(props){
  134. super(props)
  135. this.state = {
  136. activeStory: 'home',
  137. popout: null,
  138. subscriber: false,
  139. contextOpened: true,
  140. mode: 'rate',
  141. search: ''
  142. }
  143. this.onStoryChange = this.onStoryChange.bind(this);
  144. this.onChange = this.onChange.bind(this);
  145. }
  146.  
  147. onChange (search) { this.setState({ search }); }
  148.  
  149. get thematics () {
  150. const search = this.state.search.toLowerCase();
  151. return thematics.filter(({name}) => name.toLowerCase().indexOf(search) > -1);
  152. }
  153. subscribe () {
  154. this.setState({ subscriber: true });
  155. connect.send("VKWebAppJoinGroup", {"group_id": 181749512});
  156. }
  157. onClick () {
  158. this.setState({ popout: <ScreenSpinner /> });
  159. setTimeout(() => { this.setState({ popout: null }) }, 2000);
  160. }
  161. onStoryChange (e) {
  162. this.setState({ activeStory: e.currentTarget.dataset.story })
  163. }
  164. share = () => {
  165. connect.send("VKWebAppShowWallPostBox", {"message": "Я совершаю поиск по рецептам уже ВКонтакте! Давай и ты - https://vk.com/app7022864"});
  166. }
  167. render(){
  168. let { go, nickname, fetchedUser, onClick, usersTop, userAcc, name, updateUserNickname, id} = this.props;
  169. return(
  170. <Epic activeStory={this.state.activeStory} tabbar={
  171. <Tabbar>
  172. <TabbarItem
  173. onClick={this.onStoryChange}
  174. selected={this.state.activeStory === 'home'}
  175. data-story="home"
  176. text = "Рецепты"
  177. ><Icon28More /></TabbarItem>
  178. <TabbarItem
  179. onClick={this.onStoryChange}
  180. selected={this.state.activeStory === 'es'}
  181. data-story="es"
  182. text = "Предложить"
  183.  
  184. ><Icon28AddOutline /></TabbarItem>
  185. <TabbarItem
  186. onClick={this.onStoryChange}
  187. selected={this.state.activeStory === 'rate'}
  188. data-story="rate"
  189. text = "Информация"
  190. ><Icon28InfoOutline /></TabbarItem>
  191. </Tabbar>
  192. }>
  193. <View id="home" activePanel="home">
  194. <Panel id="home">
  195. <PanelHeader>Поиск</PanelHeader>
  196. <Search maxlength="65" value={this.state.search} onChange={this.onChange}/>
  197. <List>
  198. {this.thematics.map((thematic, i) => <Cell indicator={thematic.new} key={i} expandable onClick={go} data-to={thematic.to}>{thematic.name}</Cell>)
  199. }
  200. </List>
  201. {this.thematics.map ? this.thematics.new === 0 && <div style={{textAlign: "center", color: "#808080"}}><br/>По данному запросу ничего не найдено.</div> : null
  202. }
  203. </Panel>
  204. </View>
  205. <View id="es" activePanel="es">
  206. <Panel id="es">
  207. <PanelHeader>Предложить рецепт</PanelHeader>
  208. <Group>
  209. <FormLayout>
  210. <FormStatus title="Важно!" state="error">
  211. Будьте вежливы, помните, модератор в праве отказать Вам без объяснения причины!
  212. </FormStatus>
  213. </FormLayout>
  214. </Group>
  215.  
  216. <Group>
  217. <Div>
  218. Предлагая рецепт, пожалуйста, укажите:
  219. < br/> • Название рецепта.
  220. <br />• Ресурс (ссылку на источник - сайт, группа и т.д.).
  221. <br />• Время приготовления.
  222. <br />• Категорию.
  223. <br />• Ингредиенты.
  224. <br />• Рецепт.
  225. </Div>
  226. </Group>
  227.  
  228. <Footer>
  229. <Button before={<Icon24Add/>} onClick={() => openTab("https://vk.me/club184207972")} size="xl">Предложить рецепт</Button>
  230. < br/ >
  231. <Button before={<Icon24Newsfeed/>} size="xl" onClick={this.share}>Поделиться на стене</Button>
  232. </Footer>
  233.  
  234. </Panel>
  235. </View>
  236. <View id="rate" activePanel="rate">
  237. <Panel id="rate">
  238. <PanelHeader>
  239. Информация
  240. </PanelHeader>
  241. <Group style={{
  242. display: "flex",
  243. alignItems: "center",
  244. justifyContent: "center",
  245. padding: "25px 100px",
  246. textAlign: "center"
  247. }}>
  248. <Div>
  249. <img src="https://sun9-33.userapi.com/c857520/v857520470/1fab7/cGU8pMpTjG4.jpg" alt="" style={{
  250. width: "100%",
  251. boxShadow: "0 0 25px",
  252. borderRadius: 35
  253. }}/>
  254. <h3 style={{ margin: 0, padding: 0, paddingTop: 25 }}>Рецепты</h3>
  255. </Div>
  256. </Group>
  257. <Group>
  258. <Div>
  259. Рецепты - сервис, в котором можно найти любой рецепт на свой вкус!
  260. </Div>
  261. </Group>
  262. <Group>
  263. <CellButton onClick={() => openTab("https://vk.com/club184207972")} before={<Icon24Flash />}>Группа ВКонтакте</CellButton>
  264. </Group>
  265. <Group>
  266. <List>
  267. <Cell
  268. before={<Avatar style={{ background: 'var(--accent)' }} size={28}><Icon24Info fill="var(--white)" /></Avatar>}
  269. description="Версия 2.7"
  270. >
  271. Информация
  272. </Cell>
  273. </List>
  274. </Group>
  275. </Panel>
  276. </View>
  277.  
  278. </Epic>
  279. )
  280. }
  281. }
  282. Home.propTypes = {
  283. id: PropTypes.string.isRequired,
  284. go: PropTypes.func.isRequired,
  285. };
  286.  
  287. export default Home;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement