Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. import * as React from 'react'
  2. import styled from 'styled-components'
  3. import * as moment from 'moment'
  4. import { observable } from 'mobx'
  5.  
  6. import { PrimaryBtn } from '~/components/pru'
  7. import {
  8. BLUE,
  9. EXTRA_TEXT,
  10. LIGHT_LINES,
  11. STATIC_SHADOW
  12. } from '~/components/pru/ui-colors'
  13. import { SecondaryBtn } from '~/components/pru'
  14. import { MEDIA } from '~/constants/media-queries'
  15. import { BASE_METERS } from '~/constants/links'
  16. import { DEADLINE_DAY_METERS } from '~/constants/content'
  17. import { IIncomingDataProps } from './ClientStatement.d'
  18.  
  19. const Statement = styled.div`
  20. display: flex;
  21. flex-direction: column;
  22. position: relative;
  23. width: 100%;
  24. max-width: 312px;
  25. background-color: #fff;
  26. box-shadow: ${STATIC_SHADOW};
  27. text-align: center;
  28.  
  29. @media ${MEDIA.untilTablet} {
  30. max-width: 100%;
  31. height: auto;
  32. }
  33. `
  34. const StatementContent = styled.div`
  35. flex: 1;
  36. padding: 23px 40px 23px;
  37.  
  38. @media ${MEDIA.untilTablet} {
  39. padding: 16px 24px 18px;
  40. }
  41. `
  42.  
  43. const StatementTitle = styled.h2`
  44. margin-top: 0;
  45. margin-bottom: 2px;
  46. color: ${BLUE};
  47. font-size: 26px;
  48. font-weight: normal;
  49. line-height: 1.15;
  50. `
  51. const StatementDate = styled.time`
  52. display: block;
  53. margin-bottom: 12px;
  54. font-size: 18px;
  55. line-height: 1.06;
  56.  
  57. @media ${MEDIA.untilTablet} {
  58. margin-bottom: 10px;
  59. }
  60. `
  61.  
  62. const StatementFooter = styled.div`
  63. padding: 14px 30px 16px 15px;
  64. border-top: 1px solid ${LIGHT_LINES};
  65. color: ${EXTRA_TEXT};
  66. font-size: 14px;
  67.  
  68. @media ${MEDIA.untilTablet} {
  69. padding: 14px 24px 16px;
  70. }
  71. `
  72.  
  73. const StatementFooterText = styled.p`
  74. display: inline-block;
  75. margin: 0;
  76. padding-left: 25px;
  77. line-height: 1.29;
  78. background-image: url(${require('./img/ic_info.svg')});
  79. background-position: left center;
  80. background-repeat: no-repeat;
  81. `
  82.  
  83. export default class ClientStatement extends React.PureComponent<
  84. IIncomingDataProps
  85. > {
  86. monthEvidencePost = true
  87.  
  88. @observable lastMeterReadingDate = '2018-02-02'
  89.  
  90. get deadlineDate() {
  91. return moment(this.lastMeterReadingDate)
  92. .date(DEADLINE_DAY_METERS)
  93. .add(1, 'month')
  94. .format('DD MMMM')
  95. }
  96.  
  97. renderFooter() {
  98. const { isReadingsReady } = this.props
  99. this.monthEvidencePost = !isReadingsReady
  100.  
  101. if (this.monthEvidencePost) {
  102. return (
  103. <StatementFooter>
  104. <StatementFooterText>
  105. Период сдачи: 20 &ndash;{' '}
  106. {moment(this.deadlineDate, 'DD MMMM')
  107. .date(DEADLINE_DAY_METERS)
  108. .format('DD MMMM')}
  109. </StatementFooterText>
  110. </StatementFooter>
  111. )
  112. } else {
  113. return (
  114. <StatementFooter>
  115. <StatementFooterText>
  116. Учётный период: 20 &ndash;{' '}
  117. {moment(this.deadlineDate, 'DD MMMM')
  118. .date(DEADLINE_DAY_METERS)
  119. .format('DD MMMM')}
  120. </StatementFooterText>
  121. </StatementFooter>
  122. )
  123. }
  124. }
  125.  
  126. render() {
  127. const { isReadingsReady } = this.props
  128. this.monthEvidencePost = !isReadingsReady
  129.  
  130. if (this.monthEvidencePost) {
  131. return (
  132. <Statement>
  133. <StatementContent>
  134. <StatementTitle>Сдайте показания</StatementTitle>
  135. <StatementDate>
  136. за {moment(this.deadlineDate, 'DD MMMM').format('MMMM YYYY')}
  137. </StatementDate>
  138. <PrimaryBtn link={BASE_METERS}>Сдать показания</PrimaryBtn>
  139. </StatementContent>
  140. {this.renderFooter()}
  141. </Statement>
  142. )
  143. } else {
  144. return (
  145. <Statement>
  146. <StatementContent>
  147. <StatementTitle>Показания сданы</StatementTitle>
  148. <StatementDate>
  149. {moment(this.lastMeterReadingDate, 'DD MMMM').format(
  150. 'DD MMMM YYYY'
  151. )}
  152. </StatementDate>
  153. <SecondaryBtn link={BASE_METERS}>Изменить показания</SecondaryBtn>
  154. </StatementContent>
  155. {this.renderFooter()}
  156. </Statement>
  157. )
  158. }
  159. }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement