Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.80 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import Portal from '../templates/portal/Portal';
  3. import LoadingContainer from '../shared/Loading';
  4. import '../../theme/css/material-design-iconic-font.css';
  5. import '../../theme/js/functions.js';
  6. import '../../theme/css/styles.css';
  7.  
  8. import HotDealsListContainer from './HotDealsListContainer';
  9. import HotDealsEditContainer from './HotDealsEditContainer';
  10. import PropTypes from 'prop-types';
  11. import { TextField, FormBlock } from '../templates/home/Home';
  12. import { connect } from 'react-redux'
  13. import { Field, reduxForm, formValueSelector } from 'redux-form';
  14. import { Slider } from 'redux-form-material-ui';
  15. import './HotDeals.css'
  16.  
  17. const dataCampanha = [
  18. {
  19. id: '1',
  20. dateStart: '2007-11-08 10:00:00',
  21. dateEnd: '2007-11-08 18:00:00',
  22. cashback: 50,
  23. title: 'Campanha Black Friday'
  24. },
  25. {
  26. id: '2',
  27. dateStart: '2007-11-12 10:00:00',
  28. dateEnd: '2007-11-12 18:00:00',
  29. cashback: 35,
  30. title: 'Campanha Black Friday 2'
  31. },
  32. {
  33. id: '3',
  34. dateStart: '2007-12-12 10:00:00',
  35. dateEnd: '2007-12-12 18:00:00',
  36. cashback: 35,
  37. title: 'Campanha Black Friday 3'
  38. },
  39. ];
  40.  
  41. const toTimePeriod = (dateStart, dateEnd, separator = ' ') => {
  42. // período de horário somente funciona no mesmo dia
  43. return moment(dateStart).format('hh:mm') + separator + moment(dateEnd).format('hh:mm')
  44. };
  45.  
  46. const cols = [
  47. { id: 'dateStart', label: 'Dia', style: {}, format: (col) => toFormattedDate(col) },
  48. { id: '', label: 'Horário', style: {}, format: (col, row) => toTimePeriod(row.dateStart, row.dateEnd, ' - ') },
  49. { id: 'cashback', label: 'Cashback', style: { textAlign: 'center' }, format: (col) => {
  50. return (<div className="card-cashback">{col} %</div>);
  51. }},
  52. { id: 'title', label: 'Campanha', style: {} }
  53. ];
  54.  
  55. const HotDealsListContainer = () => (
  56. <div className="card">
  57. <div className="card-header ch-alt">
  58. <h2>Campanhas
  59. <small>Agenda de campanhas especiais</small>
  60. </h2>
  61. </div>
  62. <div className="card-body card-padding">
  63. <div className="list-view">
  64. <div className="lv-groupable">
  65. Outubro
  66. </div>
  67. <Table
  68. className="table table-list"
  69. cols={cols}
  70. items={dataCampanha}
  71. itemKey="id"
  72. groupableCondition={(previousValue, currentValue, index) => {
  73. return (index !== 0 && toMonthYear(currentValue.dateStart) !== toMonthYear(previousValue.dateStart));
  74. }}
  75. groupableText={(item) => { return(toMonthName(item.dateStart)); }}
  76. />
  77. </div>
  78. </div>
  79. </div>
  80. )
  81.  
  82. class HotDealsEditContainer extends Component {
  83.  
  84. // shouldComponentUpdate(nextProps) {
  85. // const {
  86. // submitSucceeded,
  87. // router
  88. // } = nextProps;
  89. //
  90. // if (nextProps.submitSucceeded) {
  91. // // save
  92. // return false;
  93. // }
  94. //
  95. // return true;
  96. // }
  97.  
  98. submit = (values) => {
  99. // print the form values to the console
  100. console.log(values)
  101. }
  102.  
  103. render() {
  104. const {
  105. data,
  106. error,
  107. submitting,
  108. cashbackValue,
  109. ...other
  110. } = this.props;
  111.  
  112. // let cashbackValueLabel = cashbackValue * 0.88
  113.  
  114. return (
  115. <div className="card">
  116. <div className="card-header ch-alt">
  117. <h2>Editar Campanha
  118. <small>Nome da campanha</small>
  119. </h2>
  120. </div>
  121. <div className="card-body card-padding p-t-0">
  122. <form id="hotdeals-form" onSubmit={this.submit}>
  123. {error &&
  124. <div style={errMsgStyle}>{error}</div>
  125. }
  126. <Field
  127. label="Descrição da campanha"
  128. name="title"
  129. type="text"
  130. value={data[0].title}
  131. showIcon={false}
  132. showLabel={true}
  133. component={TextField}
  134. />
  135. <DatePickerContainer
  136. containerId="DateHotDeals"
  137. label="Selecione o dia da campanha"
  138. id="dataStart"
  139. //formatDate={formatDate}
  140. //onChange={onDateStartChange}
  141. className='date-range-input'
  142. />
  143. <TimePickerContainer
  144. containerId="timeStartHotdeals"
  145. label="Horário início"
  146. id="timeStart"
  147. value={data[0].dateStart}
  148. showIcon={false}
  149. //formatDate={formatDate}
  150. //onChange={onDateStartChange}
  151. className='date-range-input'
  152. />
  153. <TimePickerContainer
  154. containerId="timeEndHotdeals"
  155. label="Horário fim"
  156. id="timeEnd"
  157. value={data[0].dateStart}
  158. showIcon={false}
  159. //formatDate={formatDate}
  160. //onChange={onDateStartChange}
  161. className='date-range-input'
  162. />
  163.  
  164. {/*<Field name="password" type="password" component={TextField}*/}
  165. {/*label="Senha" icon="lock" />*/}
  166.  
  167. {/*<div className="clearfix" />*/}
  168.  
  169. {/*<button className="btn btn-primary btn-lg waves-effect center-button"*/}
  170. {/*disabled={submitting} type="submit">Entrar</button>*/}
  171.  
  172. <div style={{position:'relative'}}>
  173.  
  174. <Field
  175. className='HotDeals slider'
  176. name="cashback"
  177. component={Slider}
  178. defaultValue={0}
  179. format={null}
  180. min={0}
  181. max={100}
  182. step={1}
  183. >
  184. </Field>
  185.  
  186. <div className='HotDeals cashback-label-container'
  187. style={{position:'absolute', left:`${cashbackValue}%`}}
  188. >
  189. <span className='HotDeals cashback-arrow-up'></span>
  190. <span className='HotDeals cashback-value'>{cashbackValue}%</span>
  191.  
  192. </div>
  193.  
  194. {/* <span style={{position:'absolute',left:`${cashbackValue}%`}}>{cashbackValue}</span> */}
  195.  
  196. </div>
  197. </form>
  198. </div>
  199. </div>
  200. );
  201. }
  202. }
  203. const selector = formValueSelector('hotdeals')
  204.  
  205. HotDealsEditContainer = connect(state => ({
  206. cashbackValue: selector(state, 'cashback'),
  207. }))(HotDealsEditContainer);
  208.  
  209. HotDealsEditContainer = reduxForm({
  210. // a unique name for the form
  211. form: 'hotdeals',
  212. initialValues: { cashback: 0 }
  213. })(HotDealsEditContainer);
  214.  
  215. HotDealsEditContainer.propTypes = {
  216. handleSubmit: PropTypes.func.isRequired,
  217. submitting: PropTypes.bool.isRequired,
  218. submitSucceeded: PropTypes.bool.isRequired
  219. }
  220.  
  221. class HotDeals extends Component {
  222. render() {
  223. return (
  224. <Portal>
  225. <LoadingContainer />
  226. <div className="block-header">
  227. <LoadingContainer />
  228. </div>
  229. <div className="row">
  230. <div className="col-sm-7">
  231. <HotDealsListContainer />
  232. </div>
  233. <div className="col-sm-5">
  234. <HotDealsEditContainer />
  235. </div>
  236. </div>
  237. </Portal>
  238. )
  239. }
  240. }
  241.  
  242. export default HotDeals
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement