Advertisement
Guest User

Charts

a guest
Aug 21st, 2019
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.15 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import ReactDOM from 'react-dom';
  3.  
  4.  
  5. import { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';
  6. import { Button } from '@progress/kendo-react-buttons';
  7. import { Input } from '@progress/kendo-react-inputs';
  8. import { Ripple } from '@progress/kendo-react-ripple';
  9. import { savePDF } from '@progress/kendo-react-pdf';
  10.  
  11. import { GridContainer } from './components/GridContainer';
  12. import { BarChartContainer } from './components/BarChartContainer';
  13. import { DonutChartContainer } from './components/DonutChartContainer';
  14. import { PanelBarContainer } from './components/PanelBarContainer';
  15.  
  16. import '@progress/kendo-theme-material/dist/all.css';
  17. import './App.css';
  18. import 'bootstrap-4-grid/css/grid.min.css';
  19.  
  20.  
  21. // import Reports from './components/Reports';
  22.  
  23.  
  24.  
  25. class App extends Component {
  26.  
  27.  
  28.  
  29. constructor(props) {
  30. super(props);
  31. this.state = {
  32. items: [],
  33. isLoaded: false,
  34. }
  35. }
  36.  
  37. // constructor(props) {
  38. // super(props);
  39. // this.appContainer = React.createRef();
  40. // this.state = {
  41. // reports:[],
  42. // showDialog: false
  43. // }
  44. // }
  45.  
  46. handleShare = () => {
  47. this.setState({
  48. showDialog: !this.state.showDialog
  49. }, () => console.log(this.state))
  50. }
  51.  
  52. // componentDidMount() {
  53. // fetch('http://jsonplaceholder.typicode.com/users')
  54. // .then(res => res.json())
  55. // .then((data) => {
  56. // this.setState({ reports: data })
  57. // })
  58. // .catch(console.log + "oben")
  59. // }
  60.  
  61. componentDidMount() {
  62. fetch('http://jsonplaceholder.typicode.com/users')
  63. .then(res => res.json())
  64. .then((json) => {
  65. this.setState({
  66. isLoaded: true,
  67. items: json,
  68. })
  69. });
  70. }
  71.  
  72.  
  73. handlePDFExport = () => {
  74. savePDF(ReactDOM.findDOMNode(this.appContainer), { paperSize: 'auto' });
  75. }
  76.  
  77. //<Reports reports={this.state.reports} />
  78.  
  79. render() {
  80.  
  81. var { isLoaded, items} = this.state;
  82.  
  83.  
  84. if(!isLoaded){
  85. return <div> Loading...</div>;
  86. }
  87. else {
  88. return (
  89. <Ripple>
  90. {/*<ul> {items.map(item => (*/}
  91. {/*<li key={item.id}>*/}
  92. {/* {item.name}*/}
  93. {/*</li> ))}*/}
  94. {/*</ul>*/}
  95. <div className="app-container container" ref={(el) => this.appContainer = el}>
  96. <div className="row">
  97. <div className="col-xs-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
  98. <h1>YouTube Tech Trends</h1>
  99. </div>
  100. <div className="col-xs-6 col-sm-6 col-md-6 col-lg-6 col-xl-6 buttons-right">
  101. <Button primary={true} onClick={this.handleShare}>Share</Button>
  102. <Button onClick={this.handlePDFExport}>Export to PDF</Button>
  103. </div>
  104. </div>
  105. <div className="row">
  106. <div className="col-xs-3 col-sm-3 col-md-3 col-lg-3 col-xl-3">
  107. <PanelBarContainer/>
  108. </div>
  109. <div className="col-xs-9 col-sm-9 col-md-9 col-lg-9 col-xl-9">
  110. <div className="row">
  111. <div className="col-xs-6 col-sm-6 col-md-4 col-lg-4 col-xl-4">
  112. <DonutChartContainer abc={this.state}/>
  113. </div>
  114. <div className="col-xs-6 col-sm-6 col-md-2 col-lg-2 col-xl-2">
  115. <div className="percentage-container">
  116. <span className="percentage-number">94</span>
  117. <span className="percentage-sign">%</span>
  118. <p>CUSTOMER SATISFACTION</p>
  119. </div>
  120. <div className="percentage-container">
  121. <span className="percentage-number">89</span>
  122. <span className="percentage-sign">%</span>
  123. <p>TARGET SALES</p>
  124. </div>
  125. </div>
  126. <div className="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
  127. <BarChartContainer/>
  128.  
  129. </div>
  130. </div>
  131. <div className="row">
  132. <div className="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
  133. <GridContainer/>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. {this.state.showDialog &&
  139. <Dialog title={"Share this report"} onClose={this.handleShare}>
  140. <p>Please enter the email address/es of the recipient/s.</p>
  141. <Input placeholder="example@progress.com"/>
  142. <DialogActionsBar>
  143. <Button primary={true} onClick={this.handleShare}>Share</Button>
  144. <Button onClick={this.handleShare}>Cancel</Button>
  145. </DialogActionsBar>
  146. </Dialog>
  147. }
  148. </div>
  149. </Ripple>
  150.  
  151. );
  152. }
  153. }
  154. }
  155.  
  156. export default App;
  157.  
  158.  
  159.  
  160. /*Hilfslinien design*/
  161. .container .row div {
  162. outline: solid 1px blue;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement