Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. # Controls the survey details view
  2.  
  3. DateFormat = require 'components/ui/date-format'
  4. LineChart = require 'components/chartist/line-chart'
  5. PieChartWithTable = require 'components/metrics/widget-pie-chart-with-table'
  6. BarChartWithTable = require 'components/metrics/widget-bar-chart-with-table'
  7. LineChartPreview = require 'components/metrics/widget-line-chart-preview'
  8. SelectedChart = require 'components/metrics/metrics-selected-chart'
  9. Moment = require 'moment'
  10.  
  11. module.exports = React.createClass
  12.  
  13. displayName: 'Metrics'
  14.  
  15. getDefaultProps: ->
  16.  
  17. getInitialState: ->
  18. installData: null
  19. sessionData: null
  20. avgSessionData: null
  21. pageViewsData: null
  22. pageViewPerSessionData: null
  23. actionsData: null
  24. actionsPerSession: null
  25. registeredUsersData: null
  26. topGraphData: null
  27.  
  28. series: (min, max) ->
  29. numbers = []
  30. i = Moment(@props.rangeStart)
  31. while i <= Moment(@props.rangeEnd)
  32. numbers.push(Math.floor(Math.random() * (max - min + 1)) + min)
  33. i = Moment(i).add(1, 'd')
  34. return [numbers]
  35.  
  36. labels: ->
  37. labels = []
  38. i = Moment(@props.rangeStart)
  39. while i <= Moment(@props.rangeEnd)
  40. labels.push Moment(i).format('M/D/YY')
  41. i = Moment(i).add(1, 'd')
  42. return labels
  43.  
  44. componentWillMount: ->
  45.  
  46. @setState installData:
  47. title: 'Installs'
  48. labels: @labels()
  49. series: @series(20, 70)
  50. sumDisplay: 'total'
  51.  
  52. @setState sessionsData:
  53. title: 'Sessions'
  54. labels: @labels()
  55. series: @series(20, 70)
  56. sumDisplay: 'total'
  57.  
  58. @setState avgSessionsData:
  59. title: 'Avg. Sessions'
  60. labels: @labels()
  61. series: @series(20, 70)
  62. sumDisplay: 'average'
  63.  
  64. @setState pageViewsData:
  65. title: 'Page Views'
  66. labels: @labels()
  67. series: @series(20, 70)
  68. sumDisplay: 'total'
  69.  
  70. @setState pageViewsPerSessionData:
  71. title: 'Page Views Per Session'
  72. labels: @labels()
  73. series: @series(20, 70)
  74. sumDisplay: 'average'
  75.  
  76. @setState actionsData:
  77. title: 'Actions'
  78. labels: @labels()
  79. series: @series(20, 70)
  80. sumDisplay: 'total'
  81.  
  82. @setState actionsPerSessionData:
  83. title: 'Actions Per Session'
  84. labels: @labels()
  85. series: @series(20, 70)
  86. sumDisplay: 'average'
  87.  
  88. @setState registeredUsersData:
  89. title: 'Registered Users'
  90. labels: @labels()
  91. series: @series(20, 70)
  92. sumDisplay: 'total'
  93.  
  94. @setState osInstallData:
  95. title: 'Installs By OS'
  96. labels: ['iOS', 'Android', 'Mobile Web', 'Desktop Web', 'Other']
  97. series: [60, 20, 10, 5, 5]
  98.  
  99. @setState osSessionData:
  100. title: 'Total Sessions By OS'
  101. labels: ['iOS', 'Android', 'Mobile Web', 'Desktop Web', 'Other']
  102. series: [8302, 5056, 1024, 256, 187]
  103.  
  104. @setState osAvgDurationData:
  105. title: 'Avg. Session Duration By OS'
  106. labels: ['iOS', 'Android', 'Mobile Web', 'Desktop Web', 'Other']
  107. series: [9000, 7000, 5000, 3000, 1000]
  108.  
  109. @setState downloadMethodsData:
  110. title: 'Download Method of Origin'
  111. labels: ['Link', 'Scan', 'Search', 'Discover', 'Bundled']
  112. series: [40, 20, 20, 10, 10]
  113.  
  114. handleSelectChart: (selectedChartData) ->
  115. @setState selectedChartData: selectedChartData
  116.  
  117. render: ->
  118.  
  119. console.log(@props.minDate)
  120.  
  121. <DocumentTitle title='Survey Summary'>
  122. <div className="l-v-spaced" ref="width">
  123.  
  124. <SelectedChart
  125. data={@state.selectedChartData || @state.installData}
  126. />
  127.  
  128. <div className="hor">
  129. <div className="hor_title">Click in for more detail</div>
  130. </div>
  131.  
  132. <ul className="met_grid">
  133. <LineChartPreview
  134. data={@state.installData}
  135. selected={@state.selectedChartData}
  136. handleSelectChart={@handleSelectChart}
  137. />
  138. <LineChartPreview
  139. data={@state.sessionsData}
  140. selected={@state.selectedChartData}
  141. handleSelectChart={@handleSelectChart}
  142. />
  143. <LineChartPreview
  144. data={@state.avgSessionsData}
  145. selected={@state.selectedChartData}
  146. handleSelectChart={@handleSelectChart}
  147. />
  148. <LineChartPreview
  149. data={@state.pageViewsData}
  150. selected={@state.selectedChartData}
  151. handleSelectChart={@handleSelectChart}
  152. />
  153. <LineChartPreview
  154. data={@state.pageViewsPerSessionData}
  155. selected={@state.selectedChartData}
  156. handleSelectChart={@handleSelectChart}
  157. />
  158. <LineChartPreview
  159. data={@state.actionsData}
  160. selected={@state.selectedChartData}
  161. handleSelectChart={@handleSelectChart}
  162. />
  163. <LineChartPreview
  164. data={@state.actionsPerSessionData}
  165. selected={@state.selectedChartData}
  166. handleSelectChart={@handleSelectChart}
  167. />
  168. <LineChartPreview
  169. data={@state.registeredUsersData}
  170. selected={@state.selectedChartData}
  171. handleSelectChart={@handleSelectChart}
  172. />
  173. </ul>
  174.  
  175. <div className="hor">
  176. <div className="hor_title">Insights</div>
  177. </div>
  178.  
  179. <ul className="met_grid">
  180. <li className="met_item_thirds is-selected">
  181. <PieChartWithTable data={@state.osInstallData} />
  182. </li>
  183. <li className="met_item_thirds is-selected">
  184. <BarChartWithTable data={@state.osSessionData} />
  185. </li>
  186. <li className="met_item_thirds is-selected">
  187. <BarChartWithTable data={@state.osAvgDurationData} />
  188. </li>
  189. <li className="met_item_thirds is-selected">
  190. <PieChartWithTable data={@state.downloadMethodsData} />
  191. </li>
  192. </ul>
  193.  
  194.  
  195.  
  196.  
  197. </div>
  198. </DocumentTitle>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement