Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.21 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import firebase from 'firebase';
  3.  
  4. import Modal from './components/Modal';
  5. import Card from './components/Card';
  6.  
  7. const config = {
  8. apiKey: "AIzaSyDn_AeL8sGgUfxMwZ7cVWNKLYI_fSfmYRE",
  9. authDomain: "arczi-14a47.firebaseapp.com",
  10. databaseURL: "https://arczi-14a47.firebaseio.com",
  11. projectId: "arczi-14a47",
  12. storageBucket: "arczi-14a47.appspot.com",
  13. messagingSenderId: "951789644139"
  14. };
  15.  
  16. const database = firebase.initializeApp(config);
  17. const firestore = database.firestore();
  18.  
  19. const styles = {
  20. background: {
  21. 'position': 'fixed',
  22. 'width': '100%',
  23. 'height': '100vh',
  24. 'background': 'url("https://uc177927c710a1bcf482878a828a.previews.dropboxusercontent.com/p/thumb/AAUG0pUF8JhHEEX_m90uSqYIc-NmxTsu5kaZl6Z8Qcbn6aUQljG_F9YJz0-kQJhAZp4ZhtjD5cc8narC2oTUwTYGe4gV9Nl90lViSVgPGPLmFNsvGcwbeLfCfwuV6mEjAqOv4vE_jLk0_jpxV3A_ZfyK1KsEK2K8JsvkwSzNdOswLtcNR5bqtHQa0ULSIgSsjEjhqr9utKZ5TxvtYGMTQDHcOV8VULAcN3iY6SNugP9QaE15SkYBBrZpenGgXzcjRRetBxqZrqzyw9dKyyvonARV/p.jpeg?size=2048x1536&size_mode=3")',
  25. 'zIndex': '-1'
  26. },
  27. body: {
  28. 'fontFamily': 'Roboto, sans-serif'
  29. },
  30. menu: {
  31. 'backgroundColor': '#8e352e',
  32. 'color': 'white',
  33. }
  34. };
  35.  
  36. class App extends Component {
  37. state = {
  38. loaded: false,
  39. czwartek: [],
  40. piatek: [],
  41. sobota: [],
  42. niedziela: []
  43. };
  44.  
  45. sortFunction = (a, b) => {
  46. if (parseInt(a.godzina_start) - parseInt(b.godzina_start)) {
  47. return parseInt(a.godzina_start) - parseInt(b.godzina_start);
  48. } else return parseInt(a.minuta_start) - parseInt(b.minuta_start)
  49. };
  50.  
  51. sort = () => {
  52. this.setState({
  53. czwartek: this.state.czwartek.sort(this.sortFunction),
  54. piatek: this.state.piatek.sort(this.sortFunction),
  55. sobota: this.state.sobota.sort(this.sortFunction),
  56. niedziela: this.state.niedziela.sort(this.sortFunction)
  57. })
  58. };
  59.  
  60. componentDidMount() {
  61. Promise.all([this.getSnapshot('czwartek'), this.getSnapshot('piatek'), this.getSnapshot('sobota'), this.getSnapshot('niedziela')])
  62. .then(this.sort);
  63. }
  64.  
  65. getSnapshot = (day) => new Promise(resolve => {
  66. firestore.collection(day).get()
  67. .then(snapshot => {
  68. snapshot.forEach(doc => this.setState({
  69. [day]: [...this.state[day], {
  70. id: doc.id,
  71. ...doc.data()
  72. }]
  73. }));
  74. resolve();
  75. });
  76. });
  77.  
  78. generateEvents = day => ( this.state[day].length > 0 &&
  79. this.state[day].map(el => <React.Fragment key={el.id}>
  80. <Card
  81. database={firestore}
  82. removeEvent={this.removeEvent}
  83. id={el.id}
  84. day={day}
  85. opis={el.opis}
  86. kolor={el.kolor}
  87. godzina_start={el.godzina_start}
  88. godzina_koniec={el.godzina_koniec}
  89. minuta_start={el.minuta_start}
  90. minuta_koniec={el.minuta_koniec}
  91. />
  92. <br/>
  93. </React.Fragment>)
  94. );
  95.  
  96. newEvent = (day, event) => this.setState({ [day]: [...this.state[day], event] });
  97.  
  98. removeEvent = (day, id) => this.setState({ [day]: this.state[day].filter(event => event.id !== id)});
  99.  
  100. render() {
  101. return (
  102. <>
  103. <div className="background" style={styles.background}/>
  104. <div className={'container-fluid'} style={styles.body}>
  105. <div className="row">
  106. <div className="col-12 my-4 text-center">
  107. <h1 style={{'color': 'white'}}>
  108. ZIMOWISKO KUGLARSKIE VOL.3
  109. &nbsp;
  110. <Modal buttonLabel={"DODAJ"} database={firestore} newEvent={this.newEvent}/>
  111. </h1>
  112.  
  113. </div>
  114. </div>
  115. <div className="row py-2" style={styles.menu}>
  116. <div className="col-3 text-center">CZWARTEK</div>
  117. <div className="col-3 text-center">PIĄTEK</div>
  118. <div className="col-3 text-center">SOBOTA</div>
  119. <div className="col-3 text-center">NIEDZIELA</div>
  120. </div>
  121. <div className="row mt-4" style={{'background': 'url("")'}}>
  122. <div className="col-3">
  123. { this.generateEvents('czwartek') }
  124. </div>
  125. <div className="col-3">
  126. { this.generateEvents('piatek') }
  127. </div>
  128. <div className="col-3">
  129. { this.generateEvents('sobota') }
  130. </div>
  131. <div className="col-3">
  132. { this.generateEvents('niedziela') }
  133. </div>
  134. </div>
  135. </div>
  136. </>
  137. );
  138. }
  139. }
  140.  
  141. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement